article thumbnail image
Published 2021. 10. 9. 05:55

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
복사했습니다!