WebHacking/Lord of Sql injection
wolfman 문제 풀이
Namchun
2023. 9. 7. 23:15
코드 분석
pw를 입력받고 오직 공백 문자만을 필터링하는 모습
공격 기법
mysql에서 공백 문자 없이 쿼리를 실행하면 syntax error (구문 에러)가 나는 경우가 생긴다
/*예시 쿼리*/
select * from EMPLOYEE where name='Clark'or1=1
/*or1=1 에서 syntax error 발생*/
이를 우회하기 위해서는 여러 방법들이 있지만 필자는 주석을 사용하였다
mysql 주석에는 #, -- 말고도 /* */를 통해 여러줄의 주석을 작성할 수 있는 방법이 존재한다.
이를 쿼리 중간에 열고 닫게 되면 공백 문자를 사용하지 않아도 정상적으로 실행이 된다.
?pw='/**/or/**/id='admin'/**/and/**/1=1/**/--/**/'
물론 이 방법 이외에도 괄호를 사용하여 더 간편하게 payload를 작성할 수 있다
?pw='or(id='admin')#
'#'은 %23으로 인코딩해서 전달해야 한다.