md5 password 문제를 누르면
다음과 같이 나온다.
md5('value', true)이게 힌트가 될수 있다.
일단 md5 해시 원리에 대해 알아야한다.
md5같은 경우 인자로 들어온 문자열을 md5 해시하여 32bytes의 길이로 반환을 해준다.
여기서 두번째 인자를 옵션으로 줄 수 있는데 이 값은 'true' or 'false'로 줄 수 있다. 기본적으로 default 값은 'false'인데
'false'일 경우 32bytes의 값 'true'일때는 Hex값을 16bytes의 바이너리값으로 반환해준다.
이제 start 버튼을 눌러보면
다음과 같이 나오는데 여기서 get source 버튼을 누르면
다음과 같은 코드가 나온다. 이제 이 코드에서 우리는
이 부분을 봐야하는데
이코드를 간략하게 해석하면
패스워드를 POST 방식으로 입력받고 이 패스워드를 mysql_real_escape_string 함수를 사용하여 특수문자를 치환하여 그 값을 ps 변수에 저장하고 그 값을 md5함수에 집어 넣어 해시화를 하고 그 값을 php 배열로 가지고와 row 변수에 저장을 한다.
이때 row[0]의 값이 저장 테이블에 존재하는 값일 경우 flag를 알려주고 그렇지 않으면 wrong이라는 메시지를 띄우라는 것이다.
이제 true가 나오는 값을 넣어주면 된다.
다른 블로그를 보다보니 코드를 열심히 짜서 구하던데 코딩의 젬병이라 갓구글에 md5 sql injection이라고 쳐보았다.
쳐보니 '129581926211651571912466741651878684928'를 넣어주면 된다고 하였다.
그래서 패스워드에 값을 집어 넣어보니
다음과 같이 flag가 떴다. 이제 이 값을 문제에 집어 넣으면
해결된다.
ps) 나중에 시간되면 직접 코드를 짜서 값을 구해봐야 겠다.
'웹해킹 > wargame.kr' 카테고리의 다른 글
WTF-CODE (0) | 2019.08.12 |
---|---|
DB is really good (0) | 2019.08.12 |
fly me to the moon (2) | 2019.08.07 |
login filtering (0) | 2019.08.07 |
QR CODE PUZZLE (0) | 2019.08.07 |