[정보보안] webhacking.kr 27번 - SQL Injection

Dev Error Oper·2023년 11월 5일
0

SQL injection에 관련된 문제였습니다.

여기에 입력을 하면 되는 문제인데
처음에는 어떻게 해야하지 하고 고민을 좀 했습니다.
그 다음에 소스코드를 좀 봤는데

다른 부분은 패스하고 이 부분만 먼저 보면서 코드 해석을 해보니까

  1. GET방식으로 입력을 받는다.
  2. preg_match로 필터링을 한다.
    • SQL injection을 방지하기 위한 필터링
  3. id는 guest이고 no가 입력받은 숫자인 id를 가져오는 쿼리문 실행
  4. guest면 guest출력
  5. admin이면 solve(27); 여기서 admin은 no가 2라고 알려준다.
    위와 같은 사실들을 알 수 있더라구요.

SQL injection에 맞게 SQL 문을 넣어주면 되는데
우리는 아래와 같은 SQL을 넣어줄겁니다.

0) or no=2 --

근데 필터링 되는 문자를 자세히 보면 "="문자와 공백이 필터링되는 것을 확인할 수 있죠?
그래서 "="는 like로, 공백은 ASCII Code로 변환해서 SQL문을 작성해 봅시다.

0)%09or%09no=2%09--%09

-- 는 주석처리 나머지 명령들을 주석처리하기 위한 문법인데요 원래 소스코드에서 사용하는 SQL을 무시해주기 위해서 작성한겁니다!
맨 마지막에 공백을 넣어주지 않으면 "--"가 뒤에 코드와 붙어버려 작동이 안 될 수도 있습니다.

그리고 해당 문자열을 url에 넣어주면 해결!

profile
개발자는 에러입니다.

0개의 댓글