입력칸 하나와 소스보기가 있다.
<?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>
post id에 \\을 없애고 '을 ''으로 바꾼뒤 15째 자리까지 추출하여 query에 넣어 result로 값을 받아오고 그 첫번째 값이 1이면 풀리는 문제이다. 쿼리문을 참으로만 만들면 될거같다.
15자에 짤리는게 핵심인거같다. injection을 시도할려면 '이 들어가야하는데 막혀있다.
글자를 짤라서 보내기 때문에 admin ' 이런식으로 보내면 '이 ''으로 바뀌어도 마지막 '은 짤려서 '으로 보내질 것이다.입력창에 admin ' 를 넣어주면 성공!
(admin외에도 여러값이 저장되어 있는것으로 보인다.)
'보안 > webhacking' 카테고리의 다른 글
webhacking.kr old-41 (0) | 2019.12.05 |
---|---|
webhacking.kr old-40 (0) | 2019.12.03 |
webhacking.kr old-38 (0) | 2019.12.02 |
webhacking.kr old-36 (0) | 2019.12.01 |
webhacking.kr old-35 (0) | 2019.12.01 |
최근댓글