-
<wargame.kr> md5 passwordWargame/wargame.kr 2021. 10. 24. 13:45
문제 제목부터 md5 해시함수와 관련있는 것을 알 수 있다.
비밀번호를 알아내면 되는것 같다. get source를 통해 소스코드를 살펴보겠다.
$ps는 'ps'입력 폼의 값에서 특수문자를 지운 값이다.
$row는 mysql로 보낸 쿼리의 결과의 행을 연관 배열이나 숫자 배열로 가져온다.
그리고 $row[0]의 값이 있으면 인증 키 값을 얻을 수 있다.
<풀이 방법>
이 문제는 md5()의 취약점으로 잘 알려진 md5({변수}, true) 형태의 소스코드 오용에 대해서 묻는다.
md5 같은 경우 인자로 들어온 문자열을 32bytes의 길이로 반환한다. 하지만, 두 번째 인자를 true로 가질 경우 hex값을 16bytes의 바이너리 값으로 반환한다.
ex) select id from table where pw='def'='abc';
False=False를 통해 True를 만들 수 있다. 그러므로 md5({변수}, true)를 실행했을 때, ***'='*** 와 같이 값이 나온다면 위 코드에서 row[0]에 값이 들어가게 된다.
python 코드를 통해 '='바이트 값이 포함된 문자열을 찾아볼 수있다.
위의 answer값 중 하나를 골라서 입력하면 인증 키 값을 얻을 수 있다.
'Wargame > wargame.kr' 카테고리의 다른 글
<wargame.kr> DB is really GOOD (0) 2021.10.25 <wargame.kr> strcmp (0) 2021.10.22 <wargame.kr> fly me to the moon (0) 2021.10.21 <wargame.kr> WTF_CODE (0) 2021.10.20 <wargame.kr> login filtering (0) 2021.10.19