[WARGAME][los] cobolt

jckim22·2022년 11월 22일
0

[WEBHACKING] STUDY (WARGAME)

목록 보기
94/114
<?php
  include "./config.php"; 
  login_chk();
  $db = dbconnect();
  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_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')"; 
  echo "<hr>query : <strong>{$query}</strong><hr><br>"; 
  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 
  if($result['id'] == 'admin') solve("cobolt");
  elseif($result['id']) echo "<h2>Hello {$result['id']}<br>You are not admin :(</h2>"; 
  highlight_file(__FILE__); 
?>

코드가 전과 다르다고 하면 결과값의 유무가 아닌 admin 아이디를 찾고 있다.

이번 문제의 정규식도 아래와 같은 문자들을 필터링한다.

그래서 이전에 먼저 공격 계획을 짰는데 아래와 같이 하면 될 거 같다.
이번 역시 우회하는 문자가 핵심적인 것들을 필터링하지 않아서 쉬운 난이도라고 생각이 들었다.

아래처럼 익스플로잇을 하면

id로는 admin을 찾게되고 그 뒤로는 주석에 의해서 무효화가 되면서 COBOLT가 Clear되게 된다.

아직까지는 메우 쉬운 난이도이다.

profile
개발/보안

0개의 댓글