728x90
반응형

207point인 md5 password 문제를 풀어보자.

첫 화면은 password를 입력할 수 있는 부분과 소스코드를 볼 수 있는 창이 있다.

쿼리문을 살쳐보면 입력받은 password값을 md5로 처리해서 쿼리의 결과를 반환하는 것 같다. 그리고 결과값이 $row 변수에 들어있으면 $key값을 echo하여 화면에 출력해주게 된다.

 

해당 문제는 md5의 취약점을 이용한 문제인 것으로 판단되며, md5함수의 취약점에 대해 알아보자.

 

- md5(string $str, [bool $raw_output=false])

$str

해쉬값을 구할 문자열

 

$raw_output

true 로 설정하면, 결과값이 16자로 만들어준다. 설정하지 않을 경우, 32자의 길이를 가진다. default는 false이다.

 

MySQL에서는 다음과 같은 형태로 입력하게 되면 조건절이 참이 되게 된다.

해당 테스트는 온라인 컴파일러를 이용했다.(https://paiza.io/en/projects/new?language=mysql)

이렇게 동작하는 MySQL을 보면서 문제를 풀기 위해서는 pw 입렵값에 '=' 문자열이 포함되어야 한다.

그리고 md5($ps, true)함수의 결과 값에 '=' 문자열이 포함된다면 쿼리문은 참이 되므로 문제가 해결된다.

 

이제 파이썬을 이용하여 무작위 숫자를 대입해서 해시 값을 가진 레인보우 테이블을 만든 후, 해당 해시 값에 '='의 바이트 값이 포함되어 있다면 문제를 해결할 수 있다.

 

파이썬 온라인 컴파일러를 이용해 코드를 작성해보자

(https://www.onlinegdb.com/online_python_compiler)

결과값 중 하나인 1839431 값을 입력해보자.

 

지금 서버에 문제가 있는지 여러 문제들이 동작하지 않고 있다.

 

추후에 서버가 정상화 됬을 때 다시 풀어보도록 하자.

 

728x90
반응형

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

[wargame.kr] WTF_CODE  (0) 2020.03.21
[wargame.kr] login filtering  (0) 2020.03.21
[wargame.kr] QR CODE PUZZLE  (0) 2020.03.21
[wargame.kr] flee button  (0) 2020.03.20
[wargame.kr] already got  (0) 2020.03.20

+ Recent posts