18번은 SQL Injection 문제인가보다.
view-source를 클릭해서 소스코드를 보자.
형광펜 그어진 php 부분만 보자.
preg_match를 통해 공백, /, 괄호, |, &, select, from, 0x 등을 필터링 하는 것을 볼 수 있다.
SQL은 다음과 같다.
select id from chall18 where id='guest' and no=$_GET[no]
이때 id가 guest로 잡혀있기 때문에
우리는 no에 거짓 값을 넣어주어 이를 상쇄시키고,
or로 no=2를 추가 입력하여 admin에 접근할 수 있도록 하면 된다.
(주석으로 admin의 no이 2인 것을 알 수 있다.)
즉, 우리가 완성하고자 하는 sql문은
select id from chall18 where id='guest' and no=11 or no=2가 된다.
위에서 언급했듯이 공백이 필터링 되기 때문에
탭을 url encoding한 값인 %09을 넣어서 $_GET[no]에 들어갈 값을 완성하면 된다.
최종적으로 URL에 입력할 값은 ?no=11%09or%09no=2이 된다.
URL에 입력하면 문제가 풀리게 된다!
'Wargame > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr old 24번 문제 풀이 (0) | 2021.04.10 |
---|---|
Webhacking.kr old 6번 문제 풀이 (0) | 2021.04.10 |
Webhacking.kr old 17번 문제 풀이 (0) | 2021.04.10 |
Webhacking.kr old 16번 문제 풀이 (0) | 2021.04.10 |
Webhacking.kr old 15번 문제 풀이 (0) | 2021.04.10 |