[WARGAME][los] wolfman

jckim22·2022년 11월 22일
0

[WEBHACKING] STUDY (WARGAME)

목록 보기
97/114

아래는 서버코드다.

<?php 
  include "./config.php"; 
  login_chk(); 
  $db = dbconnect(); 
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 
  if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~"); 
  $query = "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'"; 
  echo "<hr>query : <strong>{$query}</strong><hr><br>"; 
  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 
  if($result['id']) echo "<h2>Hello {$result[id]}</h2>"; 
  if($result['id'] == 'admin') solve("wolfman"); 
  highlight_file(__FILE__); 
?>

전 문제들과 비교했을 때 코드를 보면 특별한 건 없고

아래 정규식 문자들을 필터링하는 것 까지는 똑같다.
허나 공백을 필터링한다.

하지만 지금껏 문제를 풀 때 자연스럽게 탭을 url인코딩한 %09로 우회하고 있었다.
그걸 사용하면 될 거 같다.

아래 pw에 인젝션을 해야한다.

익스플로잇을 짜면 아래와 같이 짜보았다.
or 연산으로 전자의 식이 거짓이 나오고 후자의 식이 admin으로 참이나와서 admin의 id를 가져오게 할 것이다.

공백을 우회하기 위해서 url에서 %09로 우회했다.
아래와 같이 했다.

그랬더니 성공적으로 flag를 얻을 수 있다.

아직까지 특별하게 어려운 난이도는 나오지 않은 것 같다.

profile
개발/보안

0개의 댓글