728x90
<?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]);
?>
$hidden_table로 표현된 숨겨진 테이블 명과 answer 쿼리가 같으면 풀리는 문제인 것 같다.
일단 select 문에서 val와 a를 언급하고 있으니 ?val=1부터 넣어봤다.
val=1일 때, 1이 그대로 출력되었다
이는 2, 3, 4 동일했으며 0과 5는 아무 반응이 없었다.
?val=a로 넣었을 때도 1이 출력되었다.
별 의미 없겠지만 테이블을 추측할 수 있다.
a | val |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
테이블명은 Blind SQL Injectinon으로 알 수 있을 것 같다.
UNION SELECT table_name FROM information.schema.tables를 사용하여 테이블명을 알아낼 수 있지만
select가 필터링 되기 때문에 procedure analyse()를 사용해보자.
select a from $hidden_table where a={$_GET['val']}에서
val 부분을 a procedure analyse();로 넣어보자
728x90
'Wargame > webhacking.kr' 카테고리의 다른 글
Challenge old 58 (150) (0) | 2020.02.17 |
---|---|
Challenge old 56 (250) (0) | 2020.02.11 |
Challenge old 51 (250) (1) | 2020.02.11 |
Challenge old 48 (350) (0) | 2020.02.11 |
Challenge old 47 (150) (0) | 2020.02.11 |