728x90
반응형

300점인 4번 문제를 풀어보도록 하자.

첫번째 화면에 문자,숫자 조합과 패스워드를 입력하는 곳과 소스코드를 보는 곳이 나오게 된다.

SQL Injection을 시도해봤지만 별다른 응답값이 없어 소스코드를 확인해 보도록 하자.

소스코드 확인 후 문제의 제일 상단에 위치한 40자의 문자열은 500 sha1 hash 매핑된 값으로 확인할 수 있었다.

우리는 $_SESSION['chall4'] 값만 알아내면 문제를 풀 수 있다.

 

이제 40자의 문자열을 가지고 패스워드를 알아내야 하지만, sha1은 일방향 해시함수이기 때문에 복호화가 불가능 하다.

그렇기 때문에 우리는 레인보우 테이블을 사용할 것이다. 레인보우 테이블은 hash 결과에 대한 사용자 사전이다.

hash 결과들을 축적시킨 데이터(사전)을 만들어두면, 특정한 hash 결과가 어떤 문자열로부터 매핑되었는지 알 수 있다.

 

데이터 사전은 100000000salt_for_you부터 시작하여 99999999salt_for_you까지의 문자열을 모두 500회 sha1 HASH 하여 그 데이터를 저장한다.

 

해당 로직은 파이썬 코드로 작성하였다.

이렇게 해서 얻어진 데이터 사전 파일을 이용하여 페이지 상단의 있는 40자의 해시값을 검색한 후 동일한 문자열을 찾아 password 필드에 넣어서 제출하도록 한다.

 

728x90
반응형

'CTF & WarGame > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] 6번 문제  (0) 2020.02.27
[webhacking.kr] 5번 문제  (0) 2020.02.27
[webhacking.kr] 3번 문제  (0) 2020.02.25
[webhacking.kr] 2번 문제  (0) 2020.02.21
[webhacking.kr] 1번 문제  (0) 2020.02.21

+ Recent posts