티스토리 뷰

<?

if($_POST[lid] && $_POST[lphone])
{
$q=@mysql_fetch_array(mysql_query("select id,lv from c59 where id='$_POST[lid]' and phone='$_POST[lphone]'"));

if(
$q[id])
{

echo(
"id : $q[id]<br>lv : $q[lv]<br><br>");

if(
$q[lv]=="admin")
{
@
mysql_query("delete from c59");
@
clear();
}

echo(
"<br><a href=index.php>back</a>");
exit();
}

}


if(
$_POST[id] && $_POST[phone])
{
if(
strlen($_POST[phone])>=20) exit("Access Denied");
if(
eregi("admin",$_POST[id])) exit("Access Denied");
if(
eregi("admin|0x|#|hex|char|ascii|ord|from|select|union",$_POST[phone])) exit("Access Denied");

@
mysql_query("insert into c59 values('$_POST[id]',$_POST[phone],'guest')");
}

?>

이 문제의 소스를 보면 lv가 admin일 때 문제가 풀리게 된다,


insert into c59 values('$_POST[id]',$_POST[phone],'guest')


예상되는 풀이는 insert into c59 values('~~~',~~~,'admin') 인듯하다


59번은 이렇게 JOIN 과 LOGIN이 있다.

아무거나 아이디와 패스워드를 쳐서 JOIN을 한 후 로그인 하면



id는 입력한 것 그대로, lv는 guest가 뜬다.



insert into c59 values('qqq',1,123)-- 'guest')


이런식으로 guest부분을 주석처리 해버리면


lv가  123으로 바뀐다.



reverse 함수는 인자로 들어온 값을 반대로 출력하는데, 이 함수를 사용해 보자

mitny    1,reverse(id))) -- 이런식으로 입력하면 lv에는 mitny를 반대로 한 값이 들어간다




그럼 admin을 반대로 한 nimda를 id값으로 주고 reverse함수를 사용하면



lv가 admin으로 바뀌고 문제가 풀린다



'Web_Hacking > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] 29  (0) 2017.09.17
[Webhacking.kr] 55  (0) 2017.09.17
[Web_Hacking] Webhacking.kr 53  (0) 2017.05.02
[Web_Hacking] Webhacking.kr 27  (0) 2017.05.01
[Web_Hacking] WebHacking.kr 49  (0) 2017.04.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함