golem
2022. 4. 2. 16:26ㆍSite/LOS
먼저 소스코드를 보면 첫번째 preg_match함수로 prob _ . ( )를 필터링해주고
두번째 preg_match함수에서 or and substr ( = 을 필터링 처리해주고있습니다
addslashes함수로 get방식으로 받아온 pw값을 필터링해주므로 sql injection 공격이 불가능할 것 같네요
쿼리문에서 추출된 pw와 get방식으로 받아온 pw값이 정확히 일치해야 클리어될 것 같습니다
따라서 이번는 blind sql injection을 이용해야 될 것 같습니다
우회방법
or -> ||, and -> &&, substr -> mid, = -> like로 우회를 하면 될 것 같습니다
cf) mid(문자, 시작위치, 가져올갯수); ex) mid('abcde', 2, 4); -> bcde
접근방법
먼저 length 함수를 통해 pw의 길이를 구하고 길이가 맞다면 Hello admin을 출력
mid함수를 통해 pw에 들어있는 문자열을 추출며 0-9, a-z, A-Z순으로 대입하겠습니다
or 대신에 ||을 통해 앞에 문장을 false처리하고 = 대신 like를 이용하여 길이추출했더니 8입니다
종합해보면은 최종 pw값은 77d6290b 입니다