๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ’๏ธ Web Hacking/Webhacking.kr

[Webhacking.kr] old-53 ์›Œ๊ฒŒ์ž„ ๋ฌธ์ œ ํ’€์ด

by A Lim Han 2023. 8. 31.

๐Ÿ”ญ old-53 ์›Œ๊ฒŒ์ž„ ๋ฌธ์ œ ํ’€์ด

1.  ๋ฌธ์ œ ํ™”๋ฉด์œผ๋กœ ๋“ค์–ด๊ฐ€ view-source ํด๋ฆญ

 

2.  ์ฝ”๋“œ ๋ถ„์„๊ณผ ํ•จ๊ป˜ ๋ฌธ์ œ ํ’€์ด ์กฐ๊ฑด ํƒ์ƒ‰

<?php
    include "../../config.php"; // ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ config.php ํŒŒ์ผ ํฌํ•จ
    
    if ($_GET['view_source']) {
        view_source(); // ๋งŒ์•ฝ view_source ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด, ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ
    }
?>

<!DOCTYPE html>
<html>
<head>
    <title>Challenge 53</title>
</head>
<body>
<?php
    $db = dbconnect(); // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด๋ฅผ ์–ป์Œ
    include "./tablename.php"; // ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ tablename.php ํŒŒ์ผ ํฌํ•จ
    
    if ($_GET['answer'] == $hidden_table) {
        solve(53); // ๋งŒ์•ฝ answer ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ hidden_table ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋ฉด, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ (Challenge 53 ์™„๋ฃŒ).
    }
    
    if (preg_match("/select|by/i", $_GET['val'])) {
        exit("no hack"); // ๋งŒ์•ฝ val ๋งค๊ฐœ๋ณ€์ˆ˜์— 'select' ๋˜๋Š” 'by'์™€ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด, "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>
<!-- "view-source" ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•œ ๋งํฌ ํ‘œ์‹œ -->
</body>
</html>

 

++  ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์–ด์™€ answer ๋ณ€์ˆ˜์— ๋„ฃ์–ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ํ•ด๊ฒฐ

3.  ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด procedure analyse() ํ•จ์ˆ˜ ์‚ฌ์šฉ

# ์ž‘์„ฑํ•œ URL ์ „๋ฌธ
https://webhacking.kr/challenge/web-28/?val=1 procedure analyse()

 

 


 

++  procedure analyse() ํ•จ์ˆ˜๋ž€?

 procedure analyse() ํ•จ์ˆ˜๋Š” MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋‚ด์žฅ ํ”„๋กœ์‹œ์ € ์ค‘ ํ•˜๋‚˜๋กœ, ์ฃผ์–ด์ง„ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์‹คํ–‰ ๊ณ„ํš์„ ์ƒ์„ฑํ•˜๊ณ  ์ตœ์ ํ™”ํ•  ๋•Œ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

procedure analyse() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Possible Keys, Key Used, Rows Examined ๋“ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์ž‡์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๋Š” ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๊ณ  ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

4.  3๋ฒˆ ๊ณผ์ •์—์„œ ์ž‘์„ฑํ•œ URL ์ž…๋ ฅ  -->  ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฐ’์ด ์ถœ๋ ฅ๋จ

 

 

# ์ถœ๋ ฅ๋œ ์ •๋ณด
webhacking.chall53_755fdeb36d873dfdeb2b34487d50a805.a

5.  4๋ฒˆ ๊ณผ์ •์—์„œ ์–ป์€ ๊ฐ’์„ answer ๋ณ€์ˆ˜์— ๋„ฃ์–ด ์ƒˆ๋กœ์šด URL ์ž‘์„ฑ

 

# ์ž‘์„ฑํ•œ URL
https://webhacking.kr/challenge/web-28/?answer=chall53_755fdeb36d873dfdeb2b34487d50a805

6.  ์ž‘์„ฑํ•œ URL ์ž…๋ ฅ ํ›„ ์ œ์ถœ Enter ํด๋ฆญ  -->  ๋ฌธ์ œ ํ•ด๊ฒฐ ์„ฑ๊ณต