본문 바로가기
war game/웹 워게임(los)

load of sql inejction giant

by 강깅꽁 2016. 9. 14.
반응형


<?php 
  
include "../config.php"
  
login_chk(); 
  
dbconnect(); 
  if(
strlen($_GET[shit])>1) exit("No Hack ~_~"); 
  if(
preg_match('/ |\n|\r|\t/i'$_GET[shit])) exit("HeHe"); 
  
$query "select 1234 from{$_GET[shit]}prob_giant where 1"
  echo 
"<hr>query : <strong>{$query}</strong><hr><br>"
  
$result = @mysql_fetch_array(mysql_query($query)); 
  if(
$result[1234]) solve("giant"); 
  
highlight_file(__FILE__); 
?>


소스코드 분석

우선   if(strlen($_GET[shit])>1) exit("No Hack ~_~"); 이 구문을 통해서 2개 이상의 문장이 넘어올 경우 필터를 하게 된다. shit파라미터는 \n,\r,\t들을 막고 있다. 

쿼리를 봤을 때 select 1234 from{$_GET[shit]}prob_giant where 1 그렇다 from과 prob 사이를 띄워 주면 될 것 같다.


풀이


%20,%0d,%0a외에도


php에서 공백 대신 쓸 수 있는 것들이 있다고 한다.

%20, %09, %0a, %0b, %0c, %0d, %a0등이 있다.

페이로드는

shit=%0b 등으로 하면 된다.