Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 디지털컨텐츠과
- 디미고특별전형
- coursera
- 딥러닝
- 디미고입학
- TensorFlow
- 우분투
- apollo
- 웹프로그래밍과
- 학생
- 일상
- Flutter
- 플러터
- 대나무숲
- 시스템해킹
- 웹개발
- 등교개학
- 머신러닝
- graphql
- 특별전형
- pwnable.kr
- WebHacking
- 인공지능
- 워게임
- 풀스택
- 이비즈니스과
- 코로나19
- 해킹방어과
- 중3
- 디미고
Archives
- Today
- Total
꿈이 너무 많은 한 대학생의 공간
Webhacking.kr(old) 4번 문제풀이 본문
제가 SQL 공격에 약해서 앞 문제를 건너뛰었습니다.
조금 더 공부를 하고 포스팅하겠습니다...
이번 문제는 암호와 관련되어 있습니다.
새로고침을 해보니 회색 칸 내부는 계속 바뀌는거 보니 일정한 값은 아닌가 보네요.
password 내부에 값을 전송하면 될 것 같습니다.
소스를 확인해보면 대충 알고리즘은 10000000 부터 99999999 의 수를 랜덤으로 뽑고 그 뒤에 salt_for_you 문자열을 붙여 암호화 전 문장을 만든 후 500번 해쉬화를 반복해 패스워드로 지정하는 것 같습니다.
생각보다 단순한 알고리즘이니 파이썬으로 쉽게 복호화 알고리즘을 만들 수 있습니다.
import hashlib
for i in range(10000000, 100000000):
password = str(i) + 'salt_for_you'
for i in range(0, 500):
password = sha1(password.encode('utf-8')).hexdigest()
if(password == "f69662b906053f3b1cbce828e00f8a4cf3b6b546"):
# password 와 비교하는 문자열에는
# 아까 회색 박스 안에서 봤던 암호화된 문자열을 입력하면 됩니다
print(i + ' : ' + password)
exit(0)
(작성 중 갑자기 파이썬 모듈 불러오기 중 오류가 나서 실제로 동작해본 코드는 아니지만, 알고리즘은 맞을 겁니다)
저는 아까 실수로 새로고침을 눌러서 위의 스크린샷의 암호화된 문장과 코드블럭의 암호화된 문장이 다르니 참고해주세요. 암호화된 문장은 모든 사용자마다 모두 다릅니다!
저걸 돌리면 답이 나옵니다. i의 값을 10000000 부터 100000000 까지 반복하고, 해쉬 암호화를 500번 반복하니 100000000 - 10000000 = 90000000 X 500 = 45000000000 번의 연산을 반복해야 하네요.
저같은 경우는 약 25분 걸려서 찾아냈습니다.
그렇게 나온 숫자(i의 값) 과 salt_for_you 를 패스워드 input 칸에 넣으면 해결할 수 있습니다.
'정보보안 공부 > Webhacking.kr(old)' 카테고리의 다른 글
Webhacking.kr 11번 문제풀이 (0) | 2020.05.19 |
---|---|
Webhacking.kr(old) 10번 문제풀이 (0) | 2020.05.13 |
Webhacking.kr(old) 6번 문제풀이 (0) | 2020.05.05 |
Webhacking.kr(old) 1번 문제풀이 (0) | 2020.05.02 |
Comments