old-45 풀이
2024. 3. 27. 18:30ㆍwebhacking.kr
728x90
SQL Injeciton 문제입니다
id와 pw에 이스케이핑 처리를 해주고, id에는 mb_convert_encoding() 함수를 적용시킵니다
id와 pw 둘 다 preg_match()로 필터링을 해주는데, 쿼리의 결과가 존재하면서 id의 값이 "admin"일 때 문제가 해결됩니다
여기서 mb_convert_encoding() 함수에 대해서 찾아봤는데, php에서 인코딩 방식을 변환해 주는 함수라고 합니다
그리고 이 함수에는 취약점이 존재하는데, [%a1~%fe]\ 형태의 2byte는 1byte로 인식이 됩니다
이렇게 되면 addslashes()를 우회할 수 있게 됩니다
인젝션 할 때는 pw를 알아내서 admin으로 로그인하는 방법을 사용하려고 했습니다
하지만 pw가 md5 처리가 되어있어서 그 방법은 힘들 것 같았고, id에 or과 id=admin을 넣어서 로그인을 진행했습니다
?id=%a1' or id like 0x61646d696e%23&pw=guest
admin은 hex로 바꿔주고, =은 like로 바꿔줬습니다
728x90