Web Hacking/Webhacking.kr

Webhacking.kr old-53풀이

프레딕 2024. 1. 7. 20:57
728x90
<?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>

table 명을 알아내면 된다.

원래라면 union select를 사용해 informaiton_schema에서 알아냈겠지만 select가 우회되어 있으므로 다른 방법을 써야 한다.

https://ar9ang3.tistory.com/7

 

웹해킹 SQLI 우회기법 정리 - Webhacking SQL Injection Bypass Honey Tips

지금까지 웹해킹 워게임을 풀면서 깨달은(?) 우회기법을 정리하려 합니다.모두 수기로 기억나는대로 작성하다보니 빠진 부분도 있을 것 같습니다.기억나는대로 추가해서 수정하겠습니다. - or, a

ar9ang3.tistory.com

요 위에 블로그를 참고했다. 다른 내용들도 참고될만하니 읽어보는게 좋을듯 하다.

 

테이블명, 칼럼명을 알아내야할땐 

  : select test1 from test where id='admin' and pw='1234' procedure analyse();

   * limit 2,1 등과 함께 사용하여 필요한 컬럼 명을 한 줄로 뽑아낼 수 있음

 

따라서 , /?val=1 procedure analyse() 이렇게 하면은 컬럼명이 한줄로 쭉 나온다.

이때 table name은 chall53_755fdeb36d873dfdeb2b34487d50a805이다. 

answer에 table name을 보내면 성공이다.

728x90
반응형