반응형
문제
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
?><html>
<head>
<title>Chellenge 39</title>
</head>
<body>
<?php
$db = dbconnect();
if($_POST['id']){
$_POST['id'] = str_replace("\\","",$_POST['id']);
$_POST['id'] = str_replace("'","''",$_POST['id']);
$_POST['id'] = substr($_POST['id'],0,15);
$result = mysqli_fetch_array(mysqli_query($db,"select 1 from member where length(id)<14 and id='{$_POST['id']}"));
if($result[0] == 1){
solve(39);
}
}
?>
<form method=post action=index.php>
<input type=text name=id maxlength=15 size=30>
<input type=submit>
</form>
<a href=?view_source=1>view-source</a>
</body>
</html>
문제풀이
전송되는 id 파라미터 값이 작은따옴표로 열려있어서 닫아주어야 한다.
id='admin'이 되어야 하는데, 치환이 되어 id='admin''이 된다.
id 파라미터 값을 인덱스 0~14까지만 가져오므로 adminkkkkkkkkk' 를 입력해 adminkkkkkkkkk''이 되어도 adminkkkkkkkkk'만 전달된다.
adminkkkkkkkkk 이라는 계정은 존재하지 않을테니 공백으로 칸을 채우고 admin, guest id를 이용해서 문제를 풀 수 있다.
admin+공백9칸+'
guest+공백9칸+'
반응형
'write-up(web) > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] old-40 (0) | 2023.01.02 |
---|---|
[Webhacking.kr] old-01 (1) | 2022.12.31 |
[Webhacking.kr] old-38 (0) | 2022.12.31 |
[Webhacking.kr] old-37 (0) | 2022.12.31 |
[Webhacking.kr] old-36 (0) | 2022.12.31 |