2024 CISCN WEB 部分wp
2024 CISCN WEB 部分wp
很可惜 差一点点解出ezjava 之后花时间好好研究一下 py的栈帧绕过也是完全没见过 学到了很多新东西
又是被二进制爷带飞的两天
Simple_php
1 | if(isset($_POST['cmd'])){ |
php签到 但是真 的过滤了很多 差点没签到上
escapeshellcmd没见过 看看文档
1 | escapeshellcmd: |
正常情况下 下面这些关键字 可以直接用‘’去绕过 如l‘’s,但是这些都用不来了
用%0a绕过正则判断
l%0as / 绕过 没看到flag
翻找文档 找到一个函数pr能读文件
看到存在mysql 猜测是mysql里面 弱密码root/root
用php -r 执行命令
但是() ‘’都没了 只能使用其他方法转换命令字符串
可以使用substr 截断获取字符串
这样确实会抛出警告 但是可以成功rce
查询数据库
看表
获取flag
(差点没签上)
easycms
题目给了flag.php 直接能rce 注意到需要本地ip 不能伪造 估计是打ssrf
简单审计下源码
注意到存在一个函数
这里存在ssrf,可以用这个打本地127.0.0.1/flag
找到一个调用的函数
可以调用这个函数完成ssrf
构造payload
1 | /index.php?s=api&c=api&m=qrcode&text=123&size=1024&level=1&thumb=http://127.0.0.1/flag.php |
然而没成功 显示ip被禁止 换个方法 302打一下
构造302跳转,成功反弹shell
easycms_revenge
和上次的差不多,但是好像加了一个文件头检测
构造302跳转包,一样的payload打不了
起一个服务 加一个图片头
成功302跳转
反弹shell 获取flag
ezjava(未出)
很熟悉的界面 想到西湖论剑的onlysql了
直接上一手mysql loaddata
读取一个/etc/passwd
成功了 直接读取flag,可惜失败了
但是成功读取到/readflag 说明需要rce
应该是打jdbc链子 可惜urldns没成功 说明不是这样的
找文章找到了这个连接
编译了一个so文件 然后传上去
但是不知道具体咋操作 没穿 等大佬学习了
欸 还是太菜了 得多花时间学习