Webhacking Writeup 4번 문제입니다.
본 Writeup은 다음 라이트업을 보고 작성하였습니다.
https://esyeonge.tistory.com/83
Webhacking.kr old 4번 문제 풀이
view-source를 눌러서 소스 코드를 보자. 코드를 해석하면 다음과 같다. 1. 10000000부터 99999999 숫자 중 하나 + salt_for_you를 더한 문자열을 hash에 저장한다. (ex. 10001111salt_for_you) 2. 1에서 수행한..
esyeonge.tistory.com
먼저 사이트에 접속하면

암호화된 값과 패스워드 입력창이 있습니다.
소스코드를 제공해주니 소스코드를 살펴보겠습니다.

필요한 부분만 캡쳐했습니다.
해석해보면 post 방식으로 key값을 전달받으며 세션값과 일치하면 문제가 해결됩니다
이 key값은 hash변수로 랜덤하게 10000000~99999999중 한가지 값과
salt_for_you 를 합친 문자열을 sha1이라는 암호화방식으로 암호화되어있습니다.
그것도 500번이나요
암호방식을 조금 집고 넘어가자면 base64처럼 복호화가 되는 방식이 있고
md5나 sha1처럼 암호화만 가능하며 복호화가 불가능한 단방향 해시방식이 있습니다.
즉 우리는 500번 sha1으로 암호화된 값으로 복호화는 불가능하다는 애기입니다.
그러나 md5나 sha1의 경우는 값 "A"는 값 "B"로 변환한다는 방식인데
이를 이용해 모든 값의 경우의 수를 만드는 레인보우 테이블이란것이 존재합니다.
다만 모든 경우의 수를 저장하다보니 시간과 용량이 많이 듭니다.
해서 이러한 테이블을 제공해주는 곳이 아래사이트 처럼 있습니다.
CrackStation - Online Password Hash Cracking - MD5, SHA1, Linux, Rainbow Tables, etc.
Free Password Hash Cracker Enter up to 20 non-salted hashes, one per line: Supports: LM, NTLM, md2, md4, md5, md5(md5_hex), md5-half, sha1, sha224, sha256, sha384, sha512, ripeMD160, whirlpool, MySQL 4.1+ (sha1(sha1_bin)), QubesV3.1BackupDefaults How Crack
crackstation.net
하지만 문제에서 우리는 500번을 해야하므로 우리가 직접
레인보우 테이블을 작성해야합니다.
위의 라이트업을 참고하여
코드를 작성해보면

먼저 테이블을 작성할 파일을 정해주고
소스코드 처럼 10000000~99999999 값에 salt_for_you를 추가해주고
500번을 반복하고 용량이 너무 큰것을 줄이기 위해 pw앞의 8글자까지만 저장을 합니다.
그리고 한숨 자고오면 됩니다...시간이 엄청 소요 됩니다.
작성자는 10시간후에 돌아오니 완료가 되어있더군요
파일을 여는것도 2~3분이 걸릴 정도로 매우 느려집니다.
열어보면 다음과 같이 저장이 되어 있습니다.
여기서 검색명령어를 사용해


10000000~99999999값중
34494617 + salt_for_you를 사용했다고 합니다.
pw에 값을 전달해보면

문제가 해결되었습니다!
'Wargame(Web) > Webhacking.kr Writeup' 카테고리의 다른 글
Webhacking Writeup 56번 문제 (0) | 2022.08.15 |
---|---|
Webhacking Writeup 42번 문제 (0) | 2022.08.15 |
Webhacking Writeup 27번 문제 (0) | 2022.08.15 |
Webhacking Writeup 39번 문제 (0) | 2022.08.15 |
Webhacking Writeup 9번 문제 (0) | 2022.08.13 |