3번 




코드 //
<?php 
  
include "./config.php"
  
login_chk(); 
  
dbconnect(); 
  if(
preg_match('/prob|_|\.|\(\)/i'$_GET[no])) exit("No Hack ~_~"); 
  if(
preg_match('/\'|\"|\`/i'$_GET[no])) exit("No Quotes ~_~"); 
  
$query "select id from prob_goblin where id='guest' and no={$_GET[no]}"
  echo 
"<hr>query : <strong>{$query}</strong><hr><br>"
  
$result = @mysql_fetch_array(mysql_query($query)); 
  if(
$result['id']) echo "<h2>Hello {$result[id]}</h2>"
  if(
$result['id'] == 'admin'solve("goblin");
  
highlight_file(__FILE__); 
?>



id 가 출력이 되는데 그 조건은 where id가 guest고 no가 입력받은 $_GET 숫자여야한다

코드를 보면 검색해서 한줄씩 가지고 올수있는데

$query "select id from prob_goblin where id='guest' and no={$_GET[no]}"

$result = @mysql_fetch_array(mysql_query($query)); 

만약 no가 admin인 숫자를 맞춰서 admin으로 접속하면 문제가 풀린다


우선 풀이가 생각이 안나서 no값을 1~100번까지 대입했는데..

헛수고였다ㅠ _ㅠ

sql 쿼리의 특징을 보니 select쿼리 끝에 항상 참인 결과가 들어가면 그 테이블안에있는 모든 칼럼이 출력되는걸 보고

모든 칼럼을 출력을 했다

여기서 이제 생각할건 그 모든 칼럼중에  admin 을 어떻게 출력할거인가 였는데 

생각보다 쉽게 풀렸다 order by 1로 한개만 출력할수도 있었고 limit를 사용하여 한개만 출력할수 있었다


 


답은

https://los.eagle-jump.org/goblin_5559aacf2617d21ebb6efe907b7dded8.php?no=2 or 1=1 order by 1











'WARGAME > LOS' 카테고리의 다른 글

[LOS] 6번 문제-darkelf  (0) 2017.12.09
[LOS] 5번 문제-wolfman  (0) 2017.12.09
[LOS] 4번 문제-orc  (0) 2017.12.09
[LOS] 2번 문제-cobolt  (0) 2017.12.08
[LOS] 1번 문제-gremlin  (0) 2017.12.08

+ Recent posts