본문 바로가기

wargame/los.eagle-jump.org

gremlin

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



 

문제 이름 : gremlin


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
<?php
  include "./config.php";
  login_chk();
  dbconnect();
  if(preg_match('/prob|_|\.|\(\)/i'$_GET[id])) exit("No Hack ~_~"); // do not try to attack another table, database!
  if(preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~");
  $query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
  echo "<hr>query : <strong>{$query}</strong><hr><br>";
  $result = @mysql_fetch_array(mysql_query($query));
  if($result['id']) solve("gremlin");
  highlight_file(__FILE__);
?>
cs


문법을 보니 php 문법인걸 알수가있다.


일단문제는 $_GET방식으로 id값과 pw값을 서버로 보내게된다.


성공적으로 보내지게되면 5,6번줄을 주목해보자


preg_match() 함수를이용해 무언가를 하고있따.


preg_match() 함수는 정규식을이용해 매칭된값이 있는지 검사하는 함수이다.

참고링크 click


정규식을보면 prob , _ ,  . , ( , ) 등이  있는지 검사하게된다 

 

만약 id,pw 에 저위값이 하나라도 들어가게되있으면 hehe라는 문구를 출력후 종료하게된다.


만약 매칭된것이 없으면  id,pw 값들은 각각 쿼리에 들어가게된다 .


이번엔 쿼리를 살펴보자


 select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'


id =  admin pw = 1234 를 넣게된다면 


쿼리는 이런 형태일것이다.


select id from prob_gremlin where id='admin' and pw='1234'


id 와 pw 값들은 ' ' 로 감싸잇는것을 볼수있다.


and 를 사용한것을보니 id값과 pw값이 모두 일치해야 참이된다.


9,10번행을 보자 

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

if($result['id']) solve("gremlin");


id,pw가 무엇이됫건 쿼리에서 참이되기만해도 문제는 해결될거같다


하지만 쿼리에서는 AND를 쓰고있따 and가아닌 or을  쓰거나 추가해주면  조건은 한쪽만 참이여도 문제는 해결된다 


아까보니 id와pw는 ' ' 로 감싸주고있엇다.


preg_match() 함수를 사용한 5,6번 줄을보게되면 작은 따움표는 포함이되있지않았다.


작은 따움표를 써서 마음대로 열고 닫고를 할수있다는것이다.  


pw값에 작은따움표를 추가해주고 뒤에 or을 넣어주자


pw=1234' or 1='1 이런식으로 값을 보내주면 


쿼리는 이런형태가될것이다.


select id from prob_gremlin where id='admin' and pw='1234' or 1='1'


앞에 id and pw 값은 0이지만 뒷부분 결과는 참이기때문에 전체적으러 쿼리는 참인 쿼리가 된다.

 

작은따움표의 갯수가 홀수이게되면은 쿼리에 에러가나기때문에 작은따움표 갯수는 맞춰주는게좋다.

 

클리어되면 이런식으로  문구가 뜬다.


 

 





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

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