WEB/webhacking.kr (old)

webhacking.kr 61번

hongjw 2020. 2. 19. 00:07

문제 들어가자마자 보이는 view-source 클릭 !

코드를 해석해보면,

GET방식으로 id값을 받고, 값이 없으면 $_GET['id']는 guest가 된다.

$_GET['id']에 (, ), select, from, ,(콤마), by, .(따옴표)가 존재하면 Acess Denied가 출력된다.

입력된 $_GET['id']는 select문에 들어가게 되는데, 이전 문제와 달리 $_GET['id']가 삽입되는 위치는 where절이 아니라 칼럼명 자리에 들어가게 된다.

select {$_GET['id']} from chall61 order by id desc limit 1

=> chall61테이블에서 $_GET['id']칼럼을 조회하는데, 검색결과를 id값의 내림차순으로 1행만 출력한다.

이 때, select문에 의해서 출력된 결과의 id값이 admin이면 문제가 해결된다 !

이 문제를 풀기 전, 알아야 할 sql문 특징이 있다. (ฅ'ω'ฅ)

1. select '문자열' as(생략가능) 칼럼명 으로 새로운 칼럼을 생성할 수 있다.

2. sql문에서 16진수를 입력하면 문자로 해석하여, 문자열과 16진수를 같은 값으로 인식한다.

( admin을 16진수로 변환하면 0x61646d696e이다 )

2가지 특징을 이용하여 문제를 해결할 수 있다 !

먼저 1번 특징을 이용해 ?id='admin' id 를 입력해봤다.

그치만 addslashes함수 때문인지 아무 결과도 나오지 않았당 .., (싱글쿼터가 포함되어서 그런거같다)

그래서 'admin' 대신 0x61646d696e를 입력했더니 문제 해결 ~~!~!! ㅎㅅㅎ

'WEB > webhacking.kr (old)' 카테고리의 다른 글

webhacking.kr 40번  (0) 2020.03.19
webhacking.kr 4번  (0) 2020.02.23
webhacking.kr 59번  (0) 2020.02.18
webhacking.kr 58번  (0) 2020.02.18
webhacking.kr 56번  (0) 2020.02.17