Home Lord Of SQL (30번~36번)
Post
Cancel

Lord Of SQL (30번~36번)

LOS 30~36번

30, 31번은 CTF에서만 나올 것 같은 quine 문제였고, 32번도 완전 CTF 느낌..
33 ~ 36번은 WAF 관련 우회 문제였다.

30번 ouroboros

1
2
3
4
5
6
7
8
9
10
11
12
<?php
  include "./config.php";
  login_chk();
  $db = dbconnect();
  if(preg_match('/prob|_|\.|rollup|join|@/i', $_GET['pw'])) exit("No Hack ~_~");
  $query = "select pw from prob_ouroboros where pw='{$_GET[pw]}'";
  echo "<hr>query : <strong>{$query}</strong><hr><br>";
  $result = @mysqli_fetch_array(mysqli_query($db,$query));
  if($result['pw']) echo "<h2>Pw : {$result[pw]}</h2>";
  if(($result['pw']) && ($result['pw'] === $_GET['pw'])) solve("ouroboros");
  highlight_file(__FILE__);
?>

늘 먹던 blind sql이라 뭐가 다른가 싶었는데

image

pw가 안 나온다.
필터링에 걸린 것도 아니고 뭘까 하고 검색을 해보니까 quine 문제라고 한다.
테이블에 pw가 없기 때문에 추출할 수가 없고, 대신 union select를 통해서 result[‘pw’]를 조작 가능하다.

image

그 다음 이제 get[‘pw’]와 result[‘pw’]를 같게 하면 된다.
우라보로스를 찾아보니까 자신의 꼬리를 먹는 뱀이 나오는데 그래서 quine 문제로 선택이 된 듯 하다

quine은 프로그래밍에서 자기 자신의 소스 코드를 출력하는 프로그램으로, 지금처럼 입력한 값을 그대로 출력하는 것이다.
ACDC CTF였나 자체 제작 언어로 quine 만드는 문제를 한 번 풀어본 적이 있지만 그렇게 재밌지는 않았다.
그러니까.. 소스 코드는 그대로 긁어 왔다. 리얼 월드에서 일어날 것 같지도 않고, SQL quine 생성기가 있다는 것만 알고 넘어가자.

image

31번 zombie

1
2
3
4
5
6
7
8
9
10
11
12
<?php
  include "./config.php";
  login_chk();
  $db = dbconnect("zombie");
  if(preg_match('/rollup|join|ace|@/i', $_GET['pw'])) exit("No Hack ~_~");
  $query = "select pw from prob_zombie where pw='{$_GET[pw]}'";
  echo "<hr>query : <strong>{$query}</strong><hr><br>";
  $result = @mysqli_fetch_array(mysqli_query($db,$query));
  if($result['pw']) echo "<h2>Pw : {$result[pw]}</h2>";
  if(($result['pw']) && ($result['pw'] === $_GET['pw'])) solve("zombie");
  highlight_file(__FILE__);
?>

필터링이 바뀐 똑같은 quine 문제이다.

32번 alien

33번 cthulhu

34번 death

35번 godzilla

36번 cyclops

This post is written by PRO.