LOB와 비슷한 사이트이다.
SQL문제만 50문제 가량 있는 유용한 사이트이다
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([연결 객체], [쿼리]);
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 |