목록정보보안 (28)
훈훈훈
먼저 소스코드를 살펴보면 다음과 같은 힌트를 확인할 수 있다. 1. $_GET[id] = str_replace("admin","".$_GET[id]); => "admin" 글자를 ""으로 replace 하고 있다.2. if($result['id'] == 'admin') => id == admin 조건을 만족해야 한다. 이제 문제를 어떻게 해결할지 고민해보자. 1. str_replace( ) 함수로 "admin" 을 필터링 하고 있다.2. 따라서 두 가지 솔루션을 생각했다.3. "admin" 대신 "ADMIN"을 입력하는 것이다. (하지만 이 솔루션은 8번 Troll 문제와 같기 때문에 사용하지 않았다.)4. "admin" 문자를 ""으로 치환 시 우회 방법을 고민해보자5. 만약 "adadminmin" 으..
먼저 소스코드를 살펴보자 그러면 다음과 같은 정보를 확인할 수 있다. 1. if(@erge("admin",$_GET[id])) => 'admin' 을 필터링 하고 있다.2. if($result['id'] == 'admin') => id == 'admin' 조건을 만족시켜야 한다. 이제 문제를 어떻게 접근할지 생각해보자. 1. erge( ) 함수에 의해 'admin'을 사용할 수 없다.2. 그러나 erge( )함수는 대소문자를 구별한다.3. 따라서 'admin' 대신 'ADMIN'을 입력을 한다. ?id=ADMIN 을 입력하면 다음과 같이 클리어 메세지를 확인할 수 있다.
이번에 공부할 내용은 바로 구글 해킹이다. 필자는 처음에 구글 해킹이라는 단어를 듣고 실제로 구글 사이트를 해킹하는 것인줄 알았다 .....어쨋든 구글 사이트를 해킹하는것 만큼은 아니지만 구글 해킹 또한 사회적으로 대단히 위험한 공격 중 하나라고 생각한다.이제 구글 해킹에 대해 좀 더 자세히 알아보자. 1. 구글 해킹이란 ?구글 검색 엔진을 이용하여 정보를 수집하는 기법이다.공격자는 공격 전 사전에 구글 검색 연산자 혹은 키워드 등을 이용해 정보를 수집할 수 있다. 2. 구글 해킹으로 얻을 수 있는 정보 ?? 1. 개인정보2. 웹 서버 기본정보3. 관리자 페이지 노출 등 여러가지 있다. 구글 해킹에 대해 더 알아보고 싶으면 "https://www.exploit-db.com" 사이트를 참조하면 도움이 될 ..
먼저 코드를 살펴보면 다음과 같은 정보를 얻을 수 있다. 1. if(preg_match('/or|and/i', $GET[pw])) => 'or' 와 'and'를 필터링하고 있다. 2. $_GET[pw] = addslashes($_GET[pw]) => addslahes( ) 함수를 사용함으로서 싱글쿼터를 사용할 수 없다. 3. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) => GET 방식으로 입력 받은 pw 값이 admin과 같아야 한다. 이제 문제를 어떻게 해결할지 생각해보자. 1. 'or' 그리고 'and'는 필터링을 하고 있기 때문에 우회할 방법을 찾아야한다.2. 문제에서 addslahes( ) 함수를 사용하고 있다.3. 따러서 Blind SQL i..
먼저 코드를 살펴보면 다음과 같은 정보를 알 수 있다. 1. if(preg_match('/or|and/i', $GET[pw])) => 'or' 과 'and'를 필터링하고 있다.2. if($result['id'] == 'admin') => id='admin' 을 만족해야한다. 이제 문제를 어떻게 풀지 고민해보자 1. 'or' 과 'and'를 필터링 하기 때문에 우회할 방법이 필요하다.2. 'or' = || , 'and' = &&로 우회하자.3. 'or' 를 우회한 다음 id = 'admin'을 삽입하자. pw='||id='admin'%23 을 입력했을 때 다음과 같이 "클리어 메세지"를 확인할 수 있다.
먼저 코드를 보고 정보를 뽑아보자. 1. if(preg_math('/ /i', $GET[pw])) => 공백 필터링2. if($result['id'] == 'admin') => "id = admin" 이 되어야 한다. 이제 문제를 어떻게 해결할지 생각해보자. 쿼리를 보면 where id = 'guest' 인 것을 확인 할 수 있다. 따라서 이 부분을 False 시키고 id = 'admin' 을 삽입시켜야 한다. 그다음 공백 필터링에 대해 고민해 봐야한다. 공백 필터링을 하기 위해서는 어떻게 해야할까?? 여기에 공백 필터링을 우회 할 수 있는 기호를 몇 가지 정리해 보았다. - %09 : TAB - %0a : \n - %0d : \r - 주석 : /**/ - 괄호 : () 필자는 %09(TAB)을 이용하여..
먼저 쿼리를 살펴보자.id는 admin으로 전달 받고 pw는 사용자 입력으로 전달되는 것을 알 수 있다. 이제 코드를 살펴보자. 1. 3번 문제와는 다르게 싱글쿼터, 더블쿼터, 백퀘터에 대한 필터링은 존재하지 않는다. 2. $_GET[pw] = addslahes($_GET[pw]); : addslashes( )함수 이용 => pw 우회 불가 3. if($result['id'] == 'admin') solve("goblin"); : 입력 받은 pw와 데이터베이스에 저장된 admin의 pw가 같아야 한다. 따라서 이번문제는 "Blind SQL injection"을 이용해서 문제를 풀어야 한다. 먼저 데이터베이스에 저장된 admin의 pw 문자의 길이를 알기 위해 length( )함수를 이용해 pw의 길이를 ..
쿼리와 코드를 살펴보자.쿼리를 보면 id는 guest 값이 전달 되어있고 no에 값을 전달해야되는 것을 볼 수있다. 이제 코드를 살펴보자 1. if(preg_match('/\ |\"|\`/i', $GET[no])) => 싱글 쿼터( ' ) 더블 쿼터( " ) 백 쿼터( ` )를 필터링 하고 있다. 2. if($result['id'] == 'admin') solve("goblin") => id=admin 일 때 문제를 풀 수 있다. 임의로 no에 1 값을 넣었을 때 어떤 반응이 나오는지 확인을 해보았다."Hello guest"라는 문자열이 출력된 것을 통해 no=1은 guest인 것을 확인할 수 있다. 이제 문제를 어떻게 해결할지 고민을 해보자. 1. id = admin 이어야된다. 2. 싱글쿼터 더블쿼터..