일단 쓰고보자

[los] goblin 본문

모의해킹/Lord of SQLInjection

[los] goblin

휘갈기갈기 2020. 4. 6. 09:03

#문제

#문제 의도

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

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

if(preg_match('/\'|\"|\`/i'$_GET[no])) exit("No Quotes ~_~"); 

  1) prob

  2) _

  3) .

  4) ()

  5) '

  6) "

  7) `

- 목표

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

 

#확인사항

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

- 필터링 문자에 싱글쿼터(')나 더블쿼터(")가 추가 되었다.

- 근데 크게 신경쓰지 않아도 될 만한게, no 파라미터 값은 숫자여서 굳이 싱글쿼터(')를 탈출할 필요가 없다.

- 대신 id 값이 admin 이 되어야 하므로 id='admin' 부분을 싱글쿼터(') 없이 구성해야 한다.

  1) HEX 값으로 문자열 생성 (admin 문자열을 HEX 인코딩 후 앞에 0x 문자를 붙임)

  id=0x61646D696E

  id in (0x61646D696E)

  union select (0x61646D696E)

  2) char() 함수와 ascii 값으로 문자열 생성

  id=char(97,100,109,105,110)

  id in (char(97,100,109,105,110))

  union select char(97,100,109,105,110)

- 참고로 guest의 no 값이 1이라, 별 생각 없이 no 값으로 1 넣고 계속 인젝션 시도하면 Hello guest만 보게 될거다...

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

[los] darkelf  (0) 2020.04.07
[los] wolfman  (0) 2020.04.07
[los] orc  (0) 2020.04.06
[los] cobolt  (0) 2020.04.03
[los] gremlin  (0) 2020.04.03