Skip to content
Tags

PHP - assert()

Estimated time to read: 3 minutes

May 09, 2023


Tài nguyên của challenge này tại https://www.root-me.org/en/Challenges/Web-Server/PHP-assert

Link challenge này tại http://challenge01.root-me.org/web-serveur/ch47/

Tổng quan

Trong challenge này, mục tiêu của ta tìm và khai thác lỗ hổng để đọc file passwd.

Kịch bản tấn công

Như thường lệ ta inject bằng LFI, RFI các kiểu thì thấy lỗi như hình dưới

Image title

Hình ảnh website challenge

Roài, thì đây ta thấy nó không có filter gì đầu vào và ta có thể attack như kiểu sql injection thôi, ::)

Tức ta sẽ tiêm một logic vào và thay thế cái đoạn output Detected hacking attempt!. Tức là ta sẽ chỉnh lại die('Detected hacking attempt!') thành die(show_source('.passwd')) :3 để nó có thể xuất ra password cho mình

Image title

Hình ảnh website challenge

Ta được, challenge include cái <?php include("ch12.php");?> vào website. Tiếp theo, ta tiến hành xem sourcecode

Image title

Hình ảnh website challenge

Ta được sourcecode như sau.

<?php

$inc="accueil.php";
if (isset($_GET["inc"])) {
    $inc=$_GET['inc'];
    if (file_exists($inc)){
    $f=basename(realpath($inc));
    if ($f == "index.php" || $f == "ch12.php"){
        $inc="accueil.php";
    }
    }
}

include("config.php");


echo '
  <html>
  <body>
    <h1>FileManager v 0.01</h1>
    <ul>
    <li><a href="?inc=accueil.php">home</a

Well, có sourcecode rồi, ta thấy rằng logic xử lí trong sourcecode cũng khá dễ hiểu, ta sẽ tiến hành xem code file config.php

Image title

Hình ảnh website challenge

Sau khi decode, ta được

1
2
3
<?php
$username="admin";
$password="DAPt9D2mky0APAF";

Yeahhh, flag cần tìm là DAPt9D2mky0APAF

Flag

DAPt9D2mky0APAF

Comments