본문 바로가기

wargame/los.eagle-jump.org

troll

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

문제 이름 : troll

 

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
<?php  
  include "./config.php"
  login_chk(); 
  dbconnect(); 
  if(preg_match('/\'/i'$_GET[id])) exit("No Hack ~_~");
  if(@ereg("admin",$_GET[id])) exit("HeHe");
  $query = "select id from prob_troll where id='{$_GET[id]}'";
  echo "<hr>query : <strong>{$query}</strong><hr><br>";
  $result = @mysql_fetch_array(mysql_query($query));
  if($result['id'== 'admin') solve("troll");
  highlight_file(__FILE__);
?>
cs

 

위 문제의 클리어조건은 id를 admin으로 인식시키면 된다.

 

문제를 살펴보자

 

6번째줄을 보면 ereg함수를 사용한다.

 

ereg함수같은경우는 패턴으로 문자열을 검사하게되는데

 

패턴결과가 참이면 true를 반환하고 거짓이면 false 를 반환하게된다.

 

여기서 사용자로부터 입력받은 id값에서 admin이라는 단어가있으면 종료를 시켜버린다.

 

하지만 ereg의 함수중 단점이있다.

 

바로 대소문자 필터링이 불가능하다는것이다.

 

"admin"으로 사용하면 필터링이되지만 "Admin" 혹은 "aDmin" 등으로 입력하게되면 클리어가 된다.

 

이외에도 여러가지 취약점이있지만 출제자가 유도한답은 이것인거같다.

 

 

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

skeleton  (0) 2017.07.05
vampire  (0) 2017.07.05
orge  (0) 2017.07.03
darkelf  (1) 2017.07.03
wolfman  (0) 2017.07.03