문제 들어가자마자 보이는 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 |