반응형
이번에는 Coding 문제이다.
문제를 보자.
패스워드를 입력하는 곳이있다.
아무값이나 값을 입력해보자
당연히 password가 아니기 때문에 "Wrong password"라는 문구를 볼 수 있다.
소스 코드를보자.
뭐 특별한 것이없다.
하지만 하나 눈에 보이는것이 있다.
바로 "brute_force_me"라는 문구를 볼 수 있다.
그 뒤로 바로 size와 maxlength가 나와있다.
최대 길이는 4이며 사이즈는 4라는 의미이다.
따라서 0001에서부터 9999까지 대입을 해봐야하는것이다.
이것이 바로 brute force 공격기법이다.
brute force 공격 기법은 조합 가능한 모든 문자열을 순차적으로 하나씩 모두 대입해 보는 것이다.
그 야말로 무식하게 암호가 일치할때 까지 모든 경우의 수를 조합해 대입을 시도한다.
이론상으론 brute force 공격에 충분한 시간만 주어진다면 (모든 문자에 대한 조합을 시도해 볼 수 있기 때문에) 언젠가는 공격자가 원하는 비밀번호를 맞히게 될 것이다.
다만 현실적으로는 암호의 길이와 복잡도의 증가에 따라 공격에 걸리는 시간이 기하급수적으로 늘어나므로 이론상으로는 가능하나 현실적으로는 성공한다고 보기 어렵다.
따라서 이것을 손으로 0001~9999까지 대입하면된다.
하지만 문제 카테고리가 Coding이기 때문에 code로 brute force을 할것이다.
코드는 다음과 같다.
import requests
for i in range(1,10000):
url=(".....?brute_force_me=" + str("{0:04d}".format(i)))
res = requests.get(url)
if "Wrong password" in res.text:
pass
else:
print("Password: "+str("{0:04d}".format(i)))
break
코드 설명은 따로 하지 않는다.
이렇게하면 우리가 원하는 패스워드를 얻을 수 있다.
반응형
'웹 해킹 > Coding' 카테고리의 다른 글
Coding 3번. (0) | 2020.12.13 |
---|---|
Coding 2번. (0) | 2020.12.13 |