4번 - brute force
2020. 9. 30. 14:56
※ 문제될 시에 비공개 처리하도록 하겠습니다. ※
위에 해쉬값과 아래에 Password를 입력하는 창이 있습니다.
이게 소스코드인데요, 랜덤값 + 'salt_for_you'라는 Salt 값을 하나의 문자열로 만들어 세션 값으로 집어넣고 이 문자열을 sha1로 500번 인코딩한 뒤 출력하네요.(출력하는 코드는 원본에 있습니다.)
그러면! 페스워드가 위에서 정해진 해쉬값과 일치하는지를 해쉬값 생성보다 먼저 검사하기 때문에, 랜덤 값으로 계속 brute forcing을 한다면 알아낼 수 있겠네요.
강력한 파이썬을 통해 알아냅시돠.
먼저 단순히 생각할 수 있는 코드는 이겁니다.
운이 좋다면 빨리 찾겠지만, 90000000(9천만)건에 for문 500번을 돈다면 너무나도 오래걸립니다.
따라서, rainbow 테이블을 만들어 이 문제를 해결할 것입니다.
코드는 이렇습니다.
프로세스 두 개를 돌려 레인보우 파일을 두 개 만듭니다.
이래도 오래걸리긴 하지만 가장 효과적인 방법이죠.
더욱 빨리하고 싶다면 프로세스 개수를 늘리는 것도 하나의 방법입니다.
끝나면 얼마나 걸렸는지 뜨게 하려했는데 너무 오래걸려서 강제 종료했습니다 ㅋㅋ
찾았습니다.
45058733salt_for_you를 Password에 입력해보겠습니다.
시간을 너무 많이 지체했더니 login plz가 뜨네요 ㅋㅋ
어쨌든 해결!
'[▒] 보안 > webhacking.kr' 카테고리의 다른 글
6번 - JS 조작 (0) | 2020.09.30 |
---|---|
5번 - sql injection (0) | 2020.09.30 |
3번 - sql injection (0) | 2020.09.22 |
2번 - blind sql injection (0) | 2020.09.22 |
1번 - cookie (0) | 2020.09.19 |