klaus

[Lord of SQL Injection] zombie_assassin 17번 본문

모의해킹/Wargame

[Lord of SQL Injection] zombie_assassin 17번

klus! 2022. 12. 29. 16:22

0. 들어가기

 

 

 

1.  전체코드

 

2. 주요코드

  $_GET['id'] = strrev(addslashes($_GET['id']));
  $_GET['pw'] = strrev(addslashes($_GET['pw']));
  
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); 
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 
  
  $query = "select id from prob_zombie_assassin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
  
  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 
  
  if($result['id']) solve("zombie_assassin");

 

 

1) strrev함수,addslashes함수

처음 등장한 strrev함수는 입력받은 문자열을 거꾸로 뒤집어서 반환 합니다.

예) strrev("hello") → olleh

다만, 바이트 단위로 반환되기 때문에 한글의 경우 깨지는 현상이 있습니다.

addslashes함수의 경우싱글쿼터(' ')더블쿼터(" ")역슬래시( \ )Null Byte 앞에 역슬래시를 추가합니다.

 

2) ID와 PW는 preg_match함수를 통해 /prob, _, ( )을 필터링하며, /i로 대소문자를 구별하지 않습니다.

 

3. SOLVE

이번 문제의 경우 16번 문제와 다른 점은 strrev함수가 추가되어 id/pw가 거꾸로 반환된다는 것입니다.

2022.12.23 - [모의해킹/Wargame] - [Lord of SQL Injection] succubus 16번(feat. 싱글쿼터 우회)

 

[Lord of SQL Injection] succubus 16번(feat. 싱글쿼터 우회)

0.서큐버스 1. 전체 코드

toriyong.tistory.com

 

16번의  SOLVE는 ?id=\&pw=||1=1%23 로 작성하여 풀었다.

즉, id=\(역슬래시)와 pw= or 1=1 %23을 거꾸로 작성해보면

더보기

?id=%00&pw=%231=1||

Comments