일단 쓰고보자

[los] dragon 본문

모의해킹/Lord of SQLInjection

[los] dragon

휘갈기갈기 2020. 5. 11. 09:22

#문제

 

#문제 의도

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

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

  1) prob

  2) _

  3) .

  4) ()

- 목표

필터링 및 입력 값이 주석처리된 것을 우회하여 결과 값이 admin 이면 해결

 

#확인사항

- 이 문제의 관건은 # 주석을 우회해야한다는 것이다. 우선 기본적으로 주석의 특징을 알아봐야 우회할 수 있을 것 같다.

  1) # : 한 줄 주석 처리

  2) --(공백) : 한 줄 주석 처리

  3) /**/ : /*와 */ 사이 내용 모두 주석처리

- 힌트라면 한 줄에 대한 주석을 처리한다는 내용이 되겠다.

- 게다가 쿼리 내 개행문자는 쿼리결과에 영향을 주지 않는 것을 알 수 있다. (아래 표 참고)

- 결국 개행문자를 사용해서 # 주석을 우회하는 쿼리를 만들어보면 아래와 같이 작성해볼 수 있다.

※ query : select id from prob_dragon where id='guest'# and pw='%0aor id='admin'#'

- 위와 같은 쿼리 결과에서는 id가 'guest' 인 경우와 'admin' 인 경우 모두를 출력하게 되고, 결과는 여전히 Hello guest

- order by 절을 추가로 삽입하여 admin 계정이 나오도록 해보면

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

[los] iron_golem  (1) 2020.05.15
[los] xavis  (0) 2020.04.24
[los] nightmare  (0) 2020.04.10
[los] zombie_assassin  (2) 2020.04.10
[los] succubus  (0) 2020.04.08