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

BELATED ARTICLES

more