wargame ๐Ÿด‍โ˜ ๏ธ write-up/Lord of SQLInjection

dragon

Kortsec1 2023. 8. 3. 23:37

1. Code

<?php 
  include "./config.php"; 
  login_chk(); 
  $db = dbconnect(); 
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 
  $query = "select id from prob_dragon 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("dragon");
  highlight_file(__FILE__); 
?>

 


2. Condition

  • ์ฟผ๋ฆฌ์† #๋ฅผํ†ตํ•ด ์ฃผ์„์ฒ˜๋ฆฌ๊ฐ€ ๋˜์–ด, and pw ์ดํ›„๋Š” ๋ฌด์‹œํ•˜๋ ค ํ•œ๋‹ค.
  • ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ฒฐ๊ณผ์† id๊ฐ€ admin์ด๋ผ๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค.

 


3. Solution

#์˜ ์ •ํ™•ํ•œ ์˜๋ฏธ๋ฅผ ์•ˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ์ด๋‹ค.

 

mysql์† #์€ ํ•œ์ค„์ฃผ์„์„ ์˜๋ฏธํ•œ๋‹ค. ๋งž๋‹ค, ํ•œ์ค„์ฃผ์„์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐœํ–‰(%0a)์„ ํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ์ด์–ด๊ฐ„๋‹ค๋ฉด ์ž…๋ ฅ๋ ๊ฒƒ์ด๋‹ค.

img_1 escape #

 


4. Injection

๋”๋ณด๊ธฐ

 

์ตœ์ข… ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

๋ณ€์ˆ˜๋ช… ๊ฐ’
pw %0aunion select 'admin' order by id#

์•„๋žซ์ค„์— union select๋ฅผ ์ด์šฉํ•˜์—ฌ admin์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ๊ณ , order by๋กœ ์•ž๋‹น๊ฒจ ์ฃผ์—ˆ๋‹ค.

 

์„ฑ๊ณต์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค.

img_2 dragon clear

'wargame ๐Ÿดโ€โ˜ ๏ธ write-up > Lord of SQLInjection' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

xavis  (0) 2023.08.03
nightmare  (0) 2023.08.03
zombie_assasin  (0) 2023.08.03
succubus  (0) 2023.08.01