본문 바로가기
wargame/los.rubiya.kr

1번 gremlin

by NTART 2019. 11. 1.

LOB와 비슷한 사이트이다.

SQL문제만 50문제 가량 있는 유용한 사이트이다 

https://los.rubiya.kr/

 

1번 문제를 누르면 바로 코드가 나오며 http://wargame.kr/ 처럼 flag 방식이 아닌, 코드를 보고 만족시키면 바로 문제가 해결되는 방식이다. 

 

<?php
  include "./config.php"; 
  login_chk();
  $db = dbconnect();

include 를 통해 ./config.php 파일을 추가시켰다.

login_chk(); 와 dbconnect(); 함수를 바로 쓰고있기 때문에, config.php에서 가져온 함수라고 추측할 수 있다.

 

  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 ~_~");

preg_match 함수를 통해 get 방식의 id, pw입력에 해당 특수기호를 사용하면 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 = @mysqli_fetch_array(mysqli_query($db,$query));
  if($result['id']) solve("gremlin");
  highlight_file(__FILE__);
?>

id와 pw를 get 방식으로 입력받아 query 변수를 선언하고 페이지 화면에서 입력한 id pw를 볼 수 있게 echo 하였다.

 

mysqli_query는 쿼리를 실행하는 함수이다. 위에 선언한 연결된 db로 쿼리변수($query) 값을 쿼리를 실행하여 얻은 값을, php에서 바로 사용할 수 없기 때문에, mysqli_fetch_array함수를 통해 배열로 리턴 받는다. 

이 결과값의 id가 참이면 문제가 해결된다.

 

#mysqli_query 사용 방법 ->   mysqli_query([연결 객체][쿼리]);

ref- https://m.blog.naver.com/PostView.nhn?blogId=diceworld&logNo=220292127761&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

 

id는 admin 그리고 pw는 기본적인 sql문을 삽입하였다. a' or '2'>'1

 

클리어

'wargame > los.rubiya.kr' 카테고리의 다른 글

6번 darkelf  (0) 2019.11.16
5번 wolfman  (0) 2019.11.16
4번 orc  (0) 2019.11.15
3번 goblin  (0) 2019.11.05
2번 cobolt  (0) 2019.11.04