본문 바로가기

wargame/los.eagle-jump.org

skeleton

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

문제 이름 : skeleton

 

소스코드

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

 

 

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

 

이문제에 필터링되는건 아무것도없으니 간단하게

 

'를 닫고 쿼리에 id='admin' 이라는것을 추가해줘서 클리어 해주면 될거같지만 오산이다.

 

위방법처럼 하게되면 쿼리는 이런식이될것이다

 

select id from prob_skeleton where id='guest' and pw='' or id='admin' and 1=0

 

마지막에 and 1=0 이 문제인것이다

 

and는 양쪽값 모두가 참이어야지만 결과가 참이이된다.

 

하지만 위 쿼리를 보게되면 마지막에 and 1=0 은 무조건 0 이고

 

무엇을 넣어도 쿼리는 거짓일수밖에없다.

 

어떻게 하면될까 생각하다가 뒷부분으로 주석처리 시키면 어떨까라는 생각이 들게되었다.

 

mysql중에 # 이라는 주석은 #에 오는 모든것은 주석처리가되버린다.

 

이걸 이용해서  풀어보면된다.

 

 

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

darknight  (0) 2017.07.10
golem  (0) 2017.07.05
vampire  (0) 2017.07.05
troll  (0) 2017.07.05
orge  (0) 2017.07.03