minhui study

[ Wargame.kr ] md5 password 본문

Hacking/Webhacking.kr

[ Wargame.kr ] md5 password

minhui 2020. 3. 22. 20:21

Challenge md5 password - 207p

md5('value', true)에 대해서 찾아보았다.

md5같은 경우 인자로 들어온 문자열을 md5 해시하여 32bytes의 길이로 반환을 해주는데

여기서 두번째 인자 옵션을 디폴트 값 false가 아닌 true로 주면 Hex값을 16bytes의 바이너리 값으로 반환해준다.

 

md5('문자열', false) / md5('문자열') -> 32자리의 16진수 값을 반환한다.

md5('문자열', true) -> 16자리의 바이너리 형식으로 반환한다.

 

테이블에는 id : admin / pw : admin 인 값이 있다고 가정해보자 

 

select id from table where pw='admin' ='abc';

 

만약 위와 같은 쿼리문을 입력한다면 admin은 True이지만 abc는 False이므로 (True=False)결국 False가 되어 아무 결과가 나오지 않는다.

 

select id from table where pw='def' ='abc';

 

하지만 다음과 같이 False=False가 되어 결국 True로 만들 수 있다.

즉, 최종적으로는 True가 되어 admin값이 출력되게 된다.

그러므로 md5('문자열', true)를 실행하였을 때 *****'='***** 같이 값이 나온다면 쿼리문이 다음과 같이 완성되므로 위의 코드에서 row[0]에 값이 들어가게 되어 문제가 풀릴 것이다.

 

select * from admin_password where password = ' " **** '=' ***** " '

 

파이썬 코드를 통해 해시 값을 만들어내었을 때 '='바이트 값이 포함되어 있는 문자열을 찾아보자

위의 값들 중 하나를 골라서 넣어보면 플래그가 나오게 된다.

'Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 6번  (0) 2020.03.02
Webhacking.kr 23번  (0) 2020.02.18
Webhacking.kr 58번  (0) 2020.02.18
Webhacking.kr 47번  (0) 2020.02.16
Webhacking.kr 32번  (0) 2020.02.15
Comments