일단 쓰고보자

[los] succubus 본문

모의해킹/Lord of SQLInjection

[los] succubus

휘갈기갈기 2020. 4. 8. 13:02

#문제

#문제 의도

- 입력 값 필터링 규칙 (공통)

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

  1) prob

  2) _

  3) .

  4) ()

  5) 싱글쿼터(')

- 목표

싱글쿼터(')를 우회하여 우회하여 쿼리 결과가 존재하면 해결

 

#확인사항

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

- 드디어 싱글쿼터(')를 우회해야하는 문제가 나왔다. 이전 assassin 문제에서 어쩌다가 싱글쿼터(') 우회 방법 찾아본 게 도움이 됐다.

- addslashes() 함수는 싱글쿼터(') 입력 시 \' 처럼 \를 붙인 이스케이프 문자를 리턴한다. 이는 쿼리문에 영향을 주지 않는다. 이를 이용하면 아래처럼 2개의 파라미터에 존재하는 싱글쿼터(')를 유연하게 사용할 수 있게 된다. 

  1) 기존

  id='123' and pw='123' // 정상적인 형태로 각각 id, pw 값이 구분되어 입력 됨

  2) id 파라미터에 이스케이프 문자 입력

  id='123\' and pw='123' // 파란색으로 표시된 부분 전체를 문자열로 인식함

  3) 이스케이프 문자를 활용하여 구문 작성

  id='123\' and pw=' or 1=1#

- 이번 문제는 정말 놀랍다. 인젝션의 활용도가 매우 넓어진 것 같다.

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

[los] nightmare  (0) 2020.04.10
[los] zombie_assassin  (2) 2020.04.10
[los] assassin  (0) 2020.04.08
[los] giant  (0) 2020.04.07
[los] bugbear  (0) 2020.04.07