War Game/CTF

[SCTF2023] SQLi 102

ReTeu 2023. 8. 22. 20:38

가장 길게 작성되어있는 10번 줄을 보자.

<?php
include "./config.php";
$succ = -1;
if($_GET['showsrc']) {
    show_source("step3.php");
    die;
}
if($_GET['searchkey']) {
    $succ = 0;
    $query = "select * from books where title like '%".$_GET['searchkey']."%'";
    $db = dbconnect("sqli102_step3");
    $result = mysqli_query($db,$query);
    mysqli_close($db);
    if($result) {
        $rows = mysqli_num_rows($result);
    }
}

?>

like 구문을 이용하고 있다. 주석 처리를 통해 SQL injection이 가능한지 확인해보자. SQLi가 가능하다면 검색 결과가 정상적으로 표출될 것이다.

 

오케이! 이제 UNION 명령어에 컬럼 개수를 하나씩 늘려가면서 정상적으로 검색 결과가 나올 때까지 검색을 수행해보자. 이를 통해 테이블에 존재하는 정확한 컬럼의 수를 확인할 수 있다. 

이제 컬럼의 수를 찾았으니, DB, 테이블 이름과 컬럼 이름을 알아낼 차례이다. 이를 알아내기 위해서는 INFORMATION-SCHEMA를 이용하면 된다. 

 

  이제 플래그 정보가 담겨있는 컬럼명을 추출하며 된다.  주석 처리를 정상적으로 하기 위해서는 맨 뒤에 공백 문자 하나를 반드시 넣어주어야 한다. 이걸 놓쳐서 한참을 헤매는 바람에 기간 내에 102번 문제를 못 풀어서 103 문제에 접근이 안 된다.. 😭😭😭😭😭😭😭😭😭

Feeling%' UNION SELECT '', COLUMN_NAME, '', '', '', '', '', '' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='findme'--

굿

'War Game > CTF' 카테고리의 다른 글

[SCTF 2023] XSS 101  (0) 2023.08.22
[SCTF 2023] SQLi 103  (0) 2023.08.22
[SCTF 2023] SQLi 101 - writeup  (0) 2023.08.22
[SCTF 2023] BOF104 - writeup  (0) 2023.08.22
[SCTF 2023] BOF103 - writeup  (0) 2023.08.22