
이번에 푼 문제는 suninatas의 Proc 8이다.
로그인 페이지가 하나 주어지고, 올바른 계정 정보로 로그인하면 로그인 되는 문제이다.
문제 URL:
http://suninatas.com/challenge/web08/web08.asp
처음에는 전형적인 브루트포스 문제라고 생각했다.
개발자 도구로 소스를 확인해보니 힌트가 있었다.
admin0 ~ 9999즉, 완전 무작위가 아니라 범위가 이미 정해진 상태였다.
여기서 중요한 건
-> "그럼 10000번만 시도하면 끝이네?" 라는 판단이다.
보통 이 문제는 이렇게 푼다.
예를 들면 이런 코드:
import requests
URL="http://suninatas.com/challenge/web08/web08.asp"
params= {
'id':'admin',
'pw':''
}
with requests.Session() as s:
for i in range(0,10000):
params['pw']=i
res=s.post(URL,params=params)
if "Password Incorrect!" not in res.text:
print(f"Password found:{i}")
break
근데 나는 이번에 다르게 접근했다.
-> 그냥 CMD에다가 직접 때려보면서 확인했다.
솔직히 말하면 처음 생각은 이거였다.
"그냥 대충 넣어보다가 걸리는 거 아님?"
근데 이게 완전히 틀린 접근은 아니었다.
이미 범위가 0~9999로 제한되어 있기 때문에
결국 본질은 동일하다.
도구만 다를 뿐이다.
물론 손으로 다치지는 않았다.
결과적으로 비밀번호는: 비밀이에요 ㅎㅎㅎ
이걸로 로그인하면 로그인을 할수있었다.
이번 문제에서 진짜 중요한 건 이거였다.
브루트포스 자체가 중요한 게 아님
힌트를 먼저 찾는 게 중요함
많은 사람들이 바로 도구부터 켠다.
근데 이 문제는 그 전에 해야 할 게 있었다.
-> "힌트 확인 → 범위 축소 → 실행"
이 순서가 핵심이다.
웹해킹은 많이 때리는 게 아니라,
어디를 때려야 하는지 먼저 아는 싸움이다.
이번 Proc 8은 쉬운 문제였지만 중요한 걸 배웠다.
다음 문제에서는
CMD가 아니라 Burp나 스크립트도 같이 써보면서
속도랑 효율도 같이 챙겨봐야겠다.