
페이지에는 단순히 ID와 PW를 입력하는 창이 보인다.
소스를 살펴보자

md5($_POST['pw'],true)
이 md5함수는 입력값을 md5해시하는데 바이너리 형태로 뽑아낸다.
이 md5함수에는 치명적인 약점이 하나있다.
만약에 md5함수의 결과가 sql인젝션 공격의 키워드 중 하나라면 이값이 먹히게 된다.
그 취약한 키워드가 바로 'or' 이다.
Q: 만약 select id from users where id='' and pw='아무거나'or'아무값이나'라면 어떤 값이 출력 되겠는가?
A:모든 id값이 출력된다.
그렇다면 우리는 저 MD5 해시값을 돌렸을때의 결과에 'or'이 포함된 값을 찾으면 된다.
코드는 파이썬으로 구현하였다.
https://github.com/S-SIRIUS/WEB_SECURITY/blob/main/md5vulnerability.py
id는 입력할 필요도 없기 때문에 저 값을 찾아서 입력하면 끝이다.