소스보기만 있다.
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
?>
<html>
<head>
<title>Challenge 53</title>
</head>
<body>
<?php
$db = dbconnect();
include "./tablename.php";
if($_GET['answer'] == $hidden_table) solve(53);
if(preg_match("/select|by/i",$_GET['val'])) exit("no hack");
$result = mysqli_fetch_array(mysqli_query($db,"select a from $hidden_table where a={$_GET['val']}"));
echo($result[0]);
?>
<hr><a href=./?view_source=1>view-source</a>
</body>
</html>
쿼리는 hidden_table로 부터 a가 val인 값을 가져오고 그값을 출력한다.
테이블명이 숨겨져있고 그테이블명이 answer로 보낸 값과 같으면 풀리는 문제이다.
select 과 by는 막혀있다.
일반적이 방법으론 union을 통한 select없이 테이블 이름을 알수있는 방법은 모르겠다.
검색해보는게 나을거같다...
쿼리문 뒤에 procedure analyse() 를입력하면 된다는데 한번해보자
webhacking.chall53_755fdeb36d873dfdeb2b34487d50a805.a
이렇게 나오는데 mysql 8.0에서는 이 기능이 삭제되었다고 한다.
db.table_name.column으로 구분되어 출력되며 우리가 필요한 테이블명은 가운데 있다.
이제 위 코드에 조건에 맞춰 페이로드를 짜보자
?answer=chall53_755fdeb36d873dfdeb2b34487d50a805 로 입력하면 성공!
'보안 > webhacking' 카테고리의 다른 글
webhacking.kr old-55 (0) | 2019.12.08 |
---|---|
webhacking.kr old-54 (0) | 2019.12.08 |
webhacking.kr old-50 (0) | 2019.12.07 |
webhacking.kr old-49 (0) | 2019.12.07 |
webhakcing.kr old-48 (0) | 2019.12.07 |
최근댓글