일단 쓰고보자

[los] xavis 본문

모의해킹/Lord of SQLInjection

[los] xavis

휘갈기갈기 2020. 4. 24. 18:35

#문제

 

#문제 의도

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

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

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

  1) prob

  2) _

  3) .

  4) ()

  5) regex

  6) like

  7) addslashes()

- 목표

필터링 우회하여 블라인드 인젝션을 통해 admin 패스워드를 알아내자

 

#확인사항

- 기본적으로 제한했던 문자 외 regex와 like가 추가되었는데, regex는 왜 추가됐는지 잘 모르겠다 ㅎㅎ...

- 필터링 문자에 싱글쿼터(')나 더블쿼터(") 등 다 열려있고 역시나 Blind Injection 문제다.

- 지금까지 풀었던 Blind Injection 문제처럼 풀고보니 아래 정보를 입수했다.

  1) 길이는 12자

  2) 각 문자는 ascii 값이 0 ※ ascii 값 0은 NULL문자

  3) 위 단계에서 얻은 정보로 어떤 입력 값을 넣어도 틀림

- 위 부분에서 많이 막혀서 풀이를 참고했다. 가능할까 싶었지만 pw 값을 변수로 받아서 출력하는 방법이 있었다.

- 우선은 "select @[변수명]:=입력값" 구문이 필요한데, 이를 통해서 아래와 같이 응용해서 pw 값을 알아내보자.

※ pw=' or (select @a:=pw where id='admin') union select @a#

pw 값이 한글이었구나...

- 위에서 확인한 값으로 정답 입력

 

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

[los] iron_golem  (1) 2020.05.15
[los] dragon  (0) 2020.05.11
[los] nightmare  (0) 2020.04.10
[los] zombie_assassin  (2) 2020.04.10
[los] succubus  (0) 2020.04.08