본문 바로가기

wargame/los.eagle-jump.org

goblin

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

 

문제 이름 : goblin

 

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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__); 
?>
cs

 

문제를 보니 id값은 고정적으로 guest로 들어가있다.

 

하지만 해결을위해서는 id값을 admin으로 인식해야한다.

 

no값에 1값을 넣어보자

 

 

Hello guest 라고뜬다

 

이걸보고 알수있는건

 

no = 1 인값은 guest라는것이다

 

그럼 admin의 no는 2라고 간주해주고 쿼리를 줘보자

 

2 or id="admin"

 

 

필터링이된다.

 

if(preg_match('/\'|\"|\`/i'$_GET[no])) exit("No Quotes ~_~"); 

 

이코드를보면 ' , " , ` 죄다 필터링된다.

 

그러면 id값을 어떻게 admin으로 인식시키냐인거다.

 

찾아본결과 "admin" 문자열로 보낼필요없이 다른 형태로 보내주면된다.

 

hex로 보내던 ASCII로 보내던.

 

나는 ASCII 코드를 입력해주면 문자로 변환 해주는  함수를 이용해서 해결하였따.

 

 

 

'wargame > los.eagle-jump.org' 카테고리의 다른 글

wolfman  (0) 2017.07.03
orc  (0) 2017.06.18
cobolt  (0) 2017.06.15
gremlin  (0) 2017.06.15
los 사이트 소개  (0) 2017.06.15