티스토리 뷰
1번 문제에 들어가면 나오는 PHP 코드이다.
일단 "./config.php"를 include 시킨다.
그리고 정규표현식 /prob|_|\.|\(\)/ 을 이용해서 id나 pw에
"prob", "_", ".", "()" 이 포함된 경우 "No Hack ~_~" 이라는 메시지가 출력되도로 해놓았다.(/ 뒤에 있는 i는 대소문자를 구분하지 않겠다는 flag 이다.)
계속 코드를 읽어보면
쿼리문 $query를 전송했을때, 반환되는 결과 값(column 이름 -> id)이 존재하기만 하면 문제가 해결된다.
$query -> select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'
이 페이지에서 URL에 #을 입력했을때 인식되지 않으므로 URL 인코딩 된 값을 넣어 주어야 한다.
# -> %23
' -> %27 (그냥 참고할 것)
따라서, 주소 뒤에 ?id='or 1=1 %23 을 입력해준다면 쿼리문은
select id from prob_gremlin where id='' or 1=1 # ' and pw='{$_GET[pw]}'
이 되어, where(조건) 값이 true가 된다. (MYSQL에서 #은 주석 기호이다.)
조건이 true이므로 테이블에서 id라는 column의 값들을 반환받을 수 있다.
클리어
'hacking > LOS' 카테고리의 다른 글
<LOS> - 6번(wolfman) (0) | 2018.04.06 |
---|---|
<LOS> - 5번(wolfman) (0) | 2018.04.06 |
<LOS> - 4번(orc) (0) | 2018.04.06 |
<LOS> -3번(goblin) (0) | 2018.03.22 |
<LOS> - 2번(cobolt) (0) | 2018.03.22 |