일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- web
- Python
- ubuntu
- 프로세스
- ctf
- MySQL
- WebHacking
- SQLInjection
- 시스템
- lordofsqlinjection
- CCE
- webhackingkr
- SQL
- 해킹
- hacking
- Los
- Writeup
- rubiya
- Linux
- 시스템프로그래밍
- SQL Injection
- sqli
- 운영체제
- crosssitescripting
- 상호배제
- webhacking.kr
- 웹해킹
- XSS
- 알고리즘
- CODEGATE
- Today
- Total
One_Blog
webhacking.kr old4 본문
문제가 일단 상당히 당황스럽다.
처음 접속하면 이상한 해쉬값만 보여준다.
일단 대강 분석해보자면..
sleep 함수는 브포 방지,
if문은 솔브를 확인하는 것같은데.. key를 인자값으로 받는다.
이때 key가 $_SESSION['chall4']랑 같아야 한다.
$_SESSION['chall4']값은 확인이 안되는데, 값을 생성하는 과정은 확인이 된다.
대충 1000000~9999999 사이에서 수 하나 고른 후, "salt_for_you"라는 문자열과 합친 후
sha1을 500번 돌려서 값을 만들어낸다.
처음엔 sha1 hash collision과 같은 부류로 접근하는 문젠가 싶었는데.. 라이트업 찾아보니
그냥 무지성으로 레인보우 테이블 만들어서 값을 찾는 문제였다.
아니...1000000~9999999 브포는 ..까진 인정하겠지만..
salt_for_you와 합친 후 sha1을 500번...??
말이 안되는 수의 브포에 다른 풀이가 있나 더 찾아봤지만..
그런 풀이는 없었고 결국 울며 겨자먹기로 브포를 돌려 레인보우 테이블을 만들기 시작했다.
다른 풀이에서 아주 조금 더 빠른 방법이 있어 첨부하자면,
1000000-2000000 자리까지 해쉬 돌리고, 뒤에 8자리만 짤라 저장하는 방법이다.
그렇게 테이블 만든 후 사이트에서 해쉬 값 새로 받아주면서 매칭하는 값 찾는 방법이다.
from hashlib import sha1
with open('webhacking4.txt', 'w') as f:
for i in range(10000000,20000000):
print(i, "success")
hash = str(i) + "salt_for_you"
for j in range(0,500):
hash = sha1(hash.encode('utf-8')).hexdigest()
f.write(str(i) + " : " + hash[:8] + "\n")
f.close()
코드 이런식으로 짜서 해쉬 저장..할려 했는데
해당 문제를 푼 사람 중에 테이블 업로드 해놓은 분 안계신가해서 찾아봤더니
해당 글에 테이블이 업로드 되어 있었다.
글쓴이님(Sean(Slay))사랑합니다 ㅜㅜ
gg
'웹해킹' 카테고리의 다른 글
webhacking.kr old-43 Revenge 😈 (0) | 2024.02.01 |
---|---|
webhacking.kr child toctou writeup (0) | 2024.01.19 |
TLS Poisoning with Server Side Request Forgery (Feat. When TLS Hack You) (1) | 2023.11.02 |
HTTP/2 rapid reset _ 신속한 재설정 취약점 [CVE-2023-44487] (1) | 2023.10.14 |
EJS Server Side Template Injection 취약점 [CVE-2022-29078] (6) | 2023.10.07 |