为什么建设的网站有时候访问慢,软件设计说明书,网络广告人社区,如何给服务器建设网站目录 
[鹤城杯 2021]Middle magic 
1、题目 
2、知识点 
3、思路 [WUSTCTF 2020]朴实无华 
4、题目 
5、知识点 
6、思路 [鹤城杯 2021]Middle magic 
1、题目 2、知识点 
代码审计#xff0c;弱比较、数组绕过 
3、思路 打开题目#xff0c;出现源代码#xff0c;我们进行审…目录 
[鹤城杯 2021]Middle magic 
1、题目 
2、知识点 
3、思路 [WUSTCTF 2020]朴实无华 
4、题目 
5、知识点 
6、思路 [鹤城杯 2021]Middle magic 
1、题目 2、知识点 
代码审计弱比较、数组绕过 
3、思路 打开题目出现源代码我们进行审计 
1、 这里要我们上传一个aaa变量然后用了preg_replace函数 preg_replace  $aaa  preg_replace(/^(.*)level(.*)$/, ${1}!-- filtered --${2}, $_GET[aaa]); 
意思是将aaa变量中的level字段替换成!-- filtered -- preg_match  if(preg_match(/pass_the_level_1#/, $aaa)) 
意思是aaa参数的内容是pass_the_level_1# 这里的难点是要绕过preg_replace函数因为它会将level替换掉 因为preg_replace函数只匹配第一行的数据不能匹配多行的字符所以我们可以使用换行符进行绕过 payload ?aaa%0apass_the_level_1%23 2、 这里需要POST上传admin和root_pwd两个参数首先对他们进行弱比较然后进行sha1强比较这里可以使用数组绕过因为弱比较只比较类型不比较值然后sha1对数组进行加密后为空所以也可以绕过 
payload 
admin[]1root_pwd[]2 
3、 这里要POST上传一个level_3参数且会对其内容进行json解码所以我们需要上传一个json格式的数据接着跟内置的result变量进行弱比较 
这里可以使用{result:字符串}或者{result:0} 
payload 
level_3{result:0}  因为PHP纯字符与0进行弱比较时为True 
或者 
{result:ssss}  因为json格式的字符串解码后会变成一个数组 得到flagNSSCTF{c8dd707c-eb31-484b-826a-d616e09a599c} [WUSTCTF 2020]朴实无华 
4、题目 5、知识点 
弱比较代码审计 
6、思路 访问题目发现没有什么提示用目录扫描看看 访问robots.txt 出现一个页面访问一下看看 结果也没什么用之前出现一个字段User-agent抓包看看 发现隐藏的页面/fl4g.php 得到源码正戏来了 
1、level1 这里要我们上传一个num变量但是要小于2020但又要大于2021 intval()  这里可以1e10就可以绕过比较了 2、level2 这里上传一个md5变量且它的值跟md5加密后的值相同百度一下 
0e215962017 这样就绕过了 
3、level3 这里会执行system($get_flag)也就是我们可以传进行系统命令然后执行 
if(!strstr($get_flag, ) 
如果有get_flag有空格则为false所以这也是对空格的过滤 
对空格的绕过有${IFS}$9 、{IFS} 、$IFS 、${IFS}、$IFS$1其他数字也行不一定要1、IFS等 str_ireplace  $get_flag  str_ireplace(cat, wctf2020, $get_flag); 
如果get_flag变量的内容有cat则替换成wctf2020也就是过滤了cat 
绕过可以用tac 
先查看有什么文件 payload 
?num1e10md50e215962017get_flagtac${IFS}$9fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag 得到flagNSSCTF{ee074295-8182-42f6-b291-509d02b15df4} 这篇文章就先写到这里了哪里不懂的或者哪里不足的欢迎指出