Vampire Write-up

Ccr3t·2025년 7월 28일
0

Wargame

목록 보기
22/55

[Solved in under 1 minute]

SQL Injection 넘흐재미따

가보자

<?php 
  include "./config.php"; 
  login_chk(); 
  $db = dbconnect(); 
  if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
  $_GET[id] = strtolower($_GET[id]);
  $_GET[id] = str_replace("admin","",$_GET[id]); 
  $query = "select id from prob_vampire where id='{$_GET[id]}'"; 
  echo "<hr>query : <strong>{$query}</strong><hr><br>"; 
  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 
  if($result['id'] == 'admin') solve("vampire"); 
  highlight_file(__FILE__); 
?>

간단하게 코드 해석하자면,
인자를 id로 받고, id에 들어오는 모든 값을 소문자로 바꾸고, admin을 입력할시 공백으로 치환한다.

나의 SQL Injection filter Bypass 를 한번이라도 본 사람은 바로 풀 수 있다.

'admin' -> '' 으로 바꿔주니 Replace 우회인 adadminmin을 사용하면 된다.

바로 URL에 삽입하면?

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 답 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

?id=adadminmin

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

처음에 ad까지 아무이상없이 값이 들어가고 admin을 인식하여 공백으로 바꾸고 그 뒤에 min이 기본 문자열로 인식하여 ad(admin)min -> admin이 되는 구조이다.

뭐라 할 말이 없지만
.
.
.
그렇다. 할 말 없다.

LoS(Lord of SQL Injection) Vampire Write-up

이상 보고 끝!

profile
웹해킹을 잘 못 하지만 좋아 하려고 노력하는 한 젊은이.

0개의 댓글