old-53은 소스코드 링크외에는 다른 요소가 보이지 않는다.
바로 소스코드를 확인해봤다.
<?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>
문제를 해결하려면 answer파라미터의 값이 $hidden_table과 같아야한다.
즉 이번 문제는 table name을 알아내는 문제인 것 같다.
밑에 val파라미터가 query에 삽입돼있다.
val파라미터를 이용해서 table name을 알아낼 수 있을 것 같다.
현재 table name을 알아내기 위한 방법을 찾아봤다.
그 결과 procedure analyse()함수를 알게되었는데, 현재 사용되고 있는 컬럼에 대한 정보를 알려주는 함수였다.
함수 앞에 limit을 사용해서 출력되는 내용도 제한할 수 있었다.
이를 참고해서 다음과 같이 url로 전달해봤다.
?val=1 limit 1 procedure analyse()
실행 후 아래와 같은 결과를 얻었다.
위 내용은 현재 column의 database, table name, column명으로 추측된다.
현재 column의 table name은 chall53_755fdeb36d873dfdeb2b34487d50a805인 것 같았고,
해당 내용을 anwser에 전달해보았다.
그 결과 old-53 해결!
'Study > Web Hacking' 카테고리의 다른 글
[Webhacking.kr] old-55 (0) | 2021.11.05 |
---|---|
[Webhacking.kr] old-34 (0) | 2021.11.05 |
[Webhacking.kr] old-49 (0) | 2021.10.09 |
[Webhacking.kr] old-35 (0) | 2021.09.29 |
[Webhacking.kr] old-11 (0) | 2021.09.29 |