[WriteUp]/[Lord Of SQLInjection] ouroboros

2025. 4. 28. 13:38Hacking/WebHacking Wargame Writeup

if(preg_match('/prob|_|\.|rollup|join|@/i', $_GET['pw'])) exit("No Hack ~_~");

pw에 필터링 목록이 있다면 No Hack 을 출력하고 종료함

$query = "select pw from prob_ouroboros where pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";

 

- 필터링에 걸리지 않았다면 select pw from prob_ouroboros where pw=’{$_GET[pw]}’에 삽입됨

- 그 후 삽입된 쿼리문을 출력함

$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");

 

- 쿼리문의 결과값 pw이 있다면 출력한다.

- 그 후 결과값 pw와 입력한 pw이 같다면 클리어 함

 

Solution

select pw from 'prob_ourobors' where pw='' union select '테스트입니당';

 

- Quine SQL 이란?

-> Quine은 소스코드를 그대로 출력으로 반환하는 프로그램을 의미

-> Quine SQL은 입력된 쿼리문을 그대로 반환하는 것으로 생각