일단 쓰고보자

[los] wolfman 본문

모의해킹/Lord of SQLInjection

[los] wolfman

휘갈기갈기 2020. 4. 7. 09:22

#문제

#문제 의도

- 입력 값 필터링 규칙 (pw)

if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");

if(preg_match('/ /i'$_GET[pw])) exit("No whitespace ~_~"); 

  1) prob

  2) _

  3) .

  4) ()

  5) 공백

- 목표

필터링을 사용하지 않거나 우회하여 쿼리 결과 id가 admin이면 해결

 

#확인사항

- prob, _ 문자는 테이블 접근하지 못하도록 걸어둔 것 같고, ()는 특정 함수 쓰지 못하게 걸어둔 것 같다.

- 필터링 문자에 싱글쿼터(')나 더블쿼터(") 등 다 열려있어서 기본 구문으로 해결할 수 있을 것이다.

- 하지만 입력 구문 어디에나 들어가는 공백이 필터링 되어있어, 조금 당황스러울 수 있다.

- 공백을 대체할 수 있는 문자를 알아보자.

  1) %09 // tab

  2) %0a // line feed

  3) %0b // vertical tab

  4) %0c // form feed

  5) %0d // carriage return

  6) /**/ // 주석

  7) () // 괄호 → 사용법이 조금 다름, 아래 참고

  pw=123'or(id='admin')#

  8) 더하기(+) → 공백과 동일하게 취급하여 필터링 됨

#참고

- concat() 함수와 space() 함수 → 활용 방법에 대해서는 더 연구해봐야할 것 같다.

concat('te', space(1), 'st') = 'te st'

'모의해킹 > Lord of SQLInjection' 카테고리의 다른 글

[los] orge  (0) 2020.04.07
[los] darkelf  (0) 2020.04.07
[los] orc  (0) 2020.04.06
[los] goblin  (0) 2020.04.06
[los] cobolt  (0) 2020.04.03