old-46 풀이
2024. 2. 9. 17:39ㆍwebhacking.kr
728x90
SQL Injection 문제입니다
코드를 쭉 보니 lv에 id를 "admin"으로 만들어줄 수 있는 적절한 SQL 쿼리를 넣어주면 될 것 같습니다
그러나, lv에 preg_match()로 필터링이 적용되고 있고, str_replace()로 특수문자도 몇 가지 막혀있습니다
$result = mysqli_fetch_array(mysqli_query($db,"select id,cash from chall46 where lv=$_GET[lv]"));
이 쿼리에서 id를 "admin"으로 만들기 위해서는 id='admin'을 or 연산으로 묶어줘야 합니다
하지만 '는 addslashes() 함수로 필터링되므로, char() 함수로 admin을 표현하여 넣어주겠습니다
hex() 함수를 사용하지 않는 이유는 if문 내 조건에서 preg_match()로 0x를 필터링하고 있기 때문입니다
위 표를 보고 admin을 char로 표현하면 97,100,109,105,110이 됩니다
그러므로 최종 URL은 아래와 같은 형태가 됩니다
728x90