succubus
2022. 4. 5. 23:46ㆍSite/LOS
소스코드를 확인해보니
preg_match함수에서 get방식으로 받은 id, pw에 prob _ . ( ) , 가 있으면 필터링을 해주고
result변수에 id값이 있기만 하면 클리어됩니다
즉 '를 필터링 해주기 때문에 ' 를 우회하는 다른 방법으로 sql injection 공격을 해야 될 것 같습니다
*
싱글쿼터 우회방법
1. 더블쿼터["]
2. 백슬래시[\] : '앞에 \을 붙이면 '를 문자열로 인식함
*
id='\' and pw=' or 1=1#'
-> id='\' and pw=' or 1=1#'
\'을 해주어 '를 문자열로 인식해 버리기 때문에 id에 \' and pw= 라는 값이 한 문자열로 인식되어 들어갑니다
id값은 당연히 false 이므로 의미없는 값이 될 것이고 or 을 통해 항상 참인 1=1과 남아있는 ' 를 주석처리해주면 클리어됩니다[#->%23]