- 博客(344)
- 收藏
- 关注
原创 【AI】2025 0x401新生交流赛 wp
上传脚本生成的.pth文件,加载模型触发pickle反序列化RCE拿到flag。把题目交互方式告诉ai,写个解题脚本拿到flag。附件内容,一个是有火的图,一个是没火的图。就是用题目给的数据去训练个模型识别数字。让ai根据数据集训练个模型。还是让ai训练模型&写交互。先叫ai解读下附件内容。
2025-12-16 22:32:10
444
原创 【Web】Jsrpc+Mitmproxy+Burp通关encrypt-labs
encrypt-labs这种简单的场景本身用cloudx这些插件是很容易过的,但jsrpc会更通用,演示一下首先注册全局函数启动jsrpc服务端。
2025-12-13 01:40:13
441
原创 【应急响应】随记一次银狐样本的排查处置
process monitor监控Process Exit相关的进程,看到VuaTAJ.exe和qNYqy.exe这两个恶意文件。ok删除pXDc9LSz.exe,发现不过多久又被创建了,CPU又被拉满。pXDc9LSz.exe这种随机名,一眼顶真恶意文件。pQpfOm.exe和qNYqy.exe内容是一样的。2.给Windows Defender加隔离区。发现pQpfOm.exe,创建了一堆恶意文件。删了进程再把文件扬掉,之后就一切正常了。是一个隐藏目录下的隐藏文件。3.禁用windows更新。
2025-12-09 15:10:08
446
原创 【Web】DASCTF 2025下半年赛 wp
提取每一个注释的字母拼在一起,得到jwt密钥GALLERY2024SECRET。这里发现一个/download接口可以用硬编码的sign去下载app.jmx。进来一个登录框admin/123456可以登进去。小熊猫都提到RSA PRIVATE KEY了。export功能是用include实现的。allow_url_include没开。base64filter也被ban。入口一个紫色渐变登录框(这是一个正在开发中的网站。
2025-12-08 11:02:48
522
原创 【Reverse】BUUCTF 第一页 wp
第二个判断直接爆不出来,需要去根据sub_40100F函数的实现去解。sub_401080调用了sub_401000和sub_401030。最终flag:1999902069a45792d233ac。1代表向上、2代表向下、3代表向左、4代表向右。Resource Hacker查看AAA资源。shift+f12搜flag关键词。关注sub_4010F0这个函数。全局搜ctf字符拿到flag。丢给ai写个解密脚本赢了。shift+f12赢了。扔给ai写个解密脚本。跟进patch_me。来看get_flag。
2025-12-07 20:05:19
881
原创 【代码审计】JeecgBoot-3.5.0 四处安全问题分析
后续再合并外部参数:将调用方传入的 paramObject 全部放入 var5,若参数名冲突,外部参数会覆盖预设参数,比如这里就是去覆盖id预设参数1。getDataById里再取JimuReport的id去从jimu_report_db里去找sql语句。查询到的包含db_dyn_sql语句的查询结果和用户输入的JSON接着传入qurestechSql。返回的值是jimu_report_db表里查询的数据,id为用户传入的apiSelectId。去查询jimu_report_db_param表。
2025-12-03 21:40:51
424
原创 【代码审计】RuoYi-4.7.1&4.8.1 Thymeleaf模板注入分析
作用是 检测一个 SpEL表达式中是否包含对象实例化(如 new SomeClass(...))或静态方法调用(如 T(SomeClass).method())。用于检测字符串中是否存在以 $、*、#、@ 或 ~ 开头、后跟空白字符或者{,如果以该格式,则不允许。首先是把独立的new给ban了,也不允许出现T(xxx)用的是3.0.12的Thymeleaf依赖。用的是3.0.15的Thymeleaf依赖。可以加个空格,用T (xxx)来进行绕过。该版本对新建类有一些限制。
2025-12-02 21:21:52
495
原创 【代码审计】RuoYi-4.8.0 定时任务RCE 漏洞分析
如这段字符串也是符合规则的:evil.test.func("com.ruoyi.quartz.task.xxx")上传calc.dll,改文件名为com.ruoyi.quartz.task.png。首先需要上传个恶意dll或者so,本机环境是windows,故选用前者。走到最后是一段对白名单字符串的正则匹配,并不要求出现在字符串开头。找个文件上传点上传下calc.dll。这种拦截方式对于白名单检测显然欠妥。这个逻辑在V4.8.1里也没修(可以看到文件名是部分可控的。这里白名单的处理有问题。
2025-11-17 16:45:01
484
原创 【代码审计】迅睿CMS V4.6.2 Phar反序列化 RCE
如,当$rule直接为字符串时,则会转成一个以'rules'为键的数组,数组的值为split后的$rule。dot_array_search的实现其实就是从$data数组中去查询$field字段对应的值。而$data['DBGroup']值为传入的$dbGroup。回头看,$rules实际上就是“脱了setRules套的壳”再次走入setRules,对规范化后的$rules无影响。走到最后,$value和$rules都是我们可控的。$rule为$rules数组键值对的值。
2025-11-14 19:20:32
761
原创 【代码审计】再看newbee-mall的ABAC越权问题
常见接口对用户鉴权用的是httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);关注ltd.newbee.mall.controller.mall.OrderController.paySuccess。看到在updateUserInfo中,使用了httpSession鉴权,只能更新当前用户的信息。对实际映射到当前正在处理这个请求的Servlet的那部分路径进行startsWith判断。显然这几个渲染基本内容的方法不存在越权。
2025-11-13 17:58:49
614
原创 【代码审计】RuoYi-4.7.3&4.7.8 定时任务RCE 漏洞分析
com.ruoyi.generator.service.impl.GenTableServiceImpl依然能过该版本的黑白名单。在getDeclaredMethod获取方法后,并没有执行setAccessible(true),所以只能拿public方法。此逻辑在白名单处也有,代码仅仅对全限定类名(class)进行了检测,但没有对spring容器中的对象进行白名单检测。这样就绕过了新建任务的Waf限制,可通过直接修改数据库来修改计划任务的内容。则思路为,在spring容器中找到一个不在黑名单中的Bean。
2025-11-12 20:32:21
917
原创 【代码审计】RuoYi-4.2 五处安全问题分析
传参方式要注意一下,是对传入的Params先toJSONString,再parseObject。此外jdk版本要小于8u121,Java 8u121+ 默认禁用了LDAP的远程代码加载。从1.2.25开始fastjson默认禁用autotype,方便起见我们改下代码。则要让genTable.getTplCategory()的值为"tree"GenConstants.TPL_TREE的值为"tree"validateEdit在/tool/gen/edit被调用。/common/download路由被修了。
2025-11-11 20:31:29
457
原创 【代码审计】h3blog 两处安全问题分析
从get里获取fileName参数,再与upload_path拼接,再用rb模式读出来。可以在属性处注入,改name值为1"];看到在app/admin/views/cms/banner.py创建了代码。访问/admin/cms/banner/export,成功RCE。@admin_required 判断用户是否为管理员。生成的banner.py,已成功注入恶意代码。先来看/gencode/gencode路由。但微妙的是,文件下载后会被删除。全局搜open(,关注w模式的。全局搜/download。
2025-11-10 16:51:05
494
原创 【代码审计】newbee-mall 三处安全问题分析
看到后端没做waf,只要数据库里有userId对应的用户就可以直接修改。可以看到成功修改了userid为6,7,8的用户信息。关注逻辑,检测url原始路径是否以/admin开头。搜findNewBeeMallGoodsList。测黑盒肯定手痒要去遍历userId试试啊。在/goods/list处被调用。正常未授权访问是会回显302。这个部分也属于是黑盒倒推白盒。关注Interceptor。项目用的是mybatis。注意该路由是在后台的。
2025-11-08 17:19:28
443
原创 【代码审计】Tmall商城 四处安全问题分析
最后是在/admin/user/{index}/{count}处被调用。/admin/product路由下,propertyJson可控。pom依赖里fastjson版本为1.2.58。定位到UserMapper.select。全局搜logger,找存在可控参数的。在order by后面就知道对味了。上传图片,修改filename为。改后缀为jsp,内容为一句话木马。全局搜.parseObject。修改propertyJson为。可以看到是未做任何waf的逻辑。项目用的是Mybatis。
2025-11-07 19:22:24
637
原创 【代码审计】oasys 两处安全问题分析
再以admin/123456登录,发现所有日程管理均被删除。soli/123456登录,这是soli的日程管理。/outaddresspaging路由处参数可控。对传入的rcid没有做ACL,可以任意日志删除。全局搜下allDirector。调用了/dayremove接口。项目导入了Mybatis依赖。这是admin的日程管理界面。这个属于经典的黑盒反推白盒。全局搜dayremove。sqlmap一把梭了。
2025-11-06 18:42:19
506
原创 【代码审计】华夏ERP-v2.3 三处安全问题分析
进到UserMapperEx.xml,看到username和loginname直接拼接进了sql语句。再来看ignoreUrl,就是.css .js .jpg .png .gif .ico这些静态文件。问题出在这部分使用的是contains,只要传入的url中存在白名单字符串即可。还是用上面的接口来看,如果没有鉴权Cookie会被重定向到login.html。最终走到起点,/{apiName}/list,传入search参数。pom依赖里有1.2.55的fastjson,可以打。接下来关注这个功能点。
2025-11-04 18:33:03
470
原创 【代码审计】OFCMS-V1.1.2 三处安全问题分析
调用的是src/main/java/com/ofsoft/cms/admin/controller/system/SystemGenerateController.java的create方法。调用的是src/main/java/com/ofsoft/cms/admin/controller/cms/TemplateController.java的save方法。file_name参数设置为../../../static/evil.jsp,目录穿越上传写入恶意文件。调试分析下,其实没啥好看的,不做waf就行(
2025-11-02 19:56:26
368
原创 【代码审计】ECShop_V4.1.19 SQL注入漏洞 分析
最后用call_user_func_array调用new app\api\controller\WeChatEvent()#$method。它的scan方法调用markLogin,且从$data中提取EventKey和FromUserName字段。从php://input中获取xml数据,并解析,从中取出Event字段作为$method。我们来看app\api\controller\WeChatEvent()这个对象。关注user.php,当$action为wechat_token时。
2025-10-30 10:51:30
438
原创 【代码审计】emlog pro 2.2.0 文件上传漏洞分析
后台/admin/plugin.php存在一个插件上传点,可以上传zip。访问./content/plugins/shell/shell.php。最后要求压缩包中存在dir/plugin_name.php。可以看到dir是去提取zip中的第一个文件名。解压到../content/plugins/plugin_name和dir值是相同的。成功匹配到shell.php。成功上传一句话木马RCE。可以这样构造一个zip。先随便构造一个zip。
2025-10-30 09:38:12
2706
原创 【代码审计】Doufox v0.1.1 任意文件读取 分析
s对应namespace,c对应Controller,a对应Action。接下来看怎么去调用FileController.viewAction。可以看到$filename参数可控,直接从get中传入file即可。其实特别好构造,一个普通的双写绕过..././被解析为.那就用两次,再加上个/就可以成功构造../全局搜file_get_contents。先随便点点功能,显然是个MVC框架。就是把../和./给替换为空。接下来聚焦这段waf。
2025-10-29 21:59:43
409
原创 【Misc】2024 四川省赛 wp
以sig -> chunk[0] -> chunk[2] -> chunk[1] -> chunk[3]的顺序排列。ctrl+shift+v粘贴进来,发现是一个PNG。将原CTF2块的数据和CTF块的数据互换即可。复制内容,010里新建一个hex文件。IDAT被换成了CTF2和CTF1。可以打开了,但什么都看不到。附件txt里是一串hex。Cyberchef转一下。导出png看到图片内容。把两个都换成IDAT。
2025-10-08 10:13:38
441
原创 【Misc】BUUCTF 第一页 wp
用这个密码解压出来的wav是个摩斯电码。RouterPassView打开。binwalk提出来一个压缩包。第一段brainfuck解出来。binwalk分出来个压缩包。解出来是个brainfuck。用这个密码解压拿到flag。直接打开压缩包没有flag。010打开压缩包里的文件。stegsolve看帧。base64解码后导出。先binwalk分离下。用这个密码去解压zip。binwalk分一下。010打开是个exe。base64解码一下。把01序列转成字符串。用7z解压.vmdk。binwalk分一下。
2025-10-06 19:40:39
458
原创 【Misc】CTFSHOW 入门 wp
它的主要作用是为数码相机、扫描器和其他处理数码图像设备所生成的图像文件(如 JPEG、TIFF、RAW)嵌入元数据。EXIF,全称为 Exchangeable Image File Format(可交换图像文件格式),是一种标准。简单来说,EXIF 就是“关于图像信息的数据”,它被直接写入到图像文件内部。四个都转一下,hex一下,拼在一起拿到flag。高度拉高到600之后,可以看到最下方的黑体字。一个一个删IDAT,直到出现flag。附件是一个png,crc校验出了问题。先改一下高度,看到最下面的黑体字。
2025-10-05 12:42:20
990
原创 【Web】DASCTF 2024最后一战 wp
污染index函数,将其修改为return open('/etc/passwd', 'r', encoding='utf-8').read()同理,污染admin函数,将其修改为return open('/flag', 'r', encoding='utf-8').read()重点其实就在这部分,可以直接打pickle反序列化。就是上传一个yaml文件然后反序列化,但无回显。waf用subprocess就能过。利用types.CodeType。接着访问/src拿到flag。先访问/src拿到源码。
2025-09-30 10:28:45
412
原创 【代码审计】CVE-2025-10211 漏洞分析
ChanCMS 3.3.0版本存在服务端请求伪造漏洞,该漏洞源于文件/cms/collect/getArticle中函数CollectController参数taskUrl未实现足够的验证机制。调用collect.common,最终走到axios.get,只能打http&https的SSRF,还是挺水。看到调用的是controller.collect.getArticle。首先定位/cms/collect/getArticle。其实本身写了一个判断本地url的函数,但没调用,难评。
2025-09-24 21:26:47
257
原创 Vmware ESXi 漏洞整理合集
默认启用的 vROps 插件(com.vmware.vropspluginui.mvc)ServicesController 类的 uploadova 接口存在未授权访问,可利用路径穿越将文件解压至特定目录实现 getshell。默认启用的 Virtual SAN Health Check 插件(vsan-h5-client.zip)/rest/*接口存在未授权访问,可利用不安全的反射调用,打JNDI注入,rmi反弹shell实现 RCE。读取远程文件形成 XSS 漏洞。
2025-09-24 15:17:52
727
原创 【Web】ImaginaryCTF 2025 wp
这里要让req.body.email长度为72,且nEmail长度 ≤ 64。open的参是$fullpath,拼接出来的,$path可控。读取文件路径存在字符拼接,但waf了'.',不能目录穿越。注意到生成证书bp是没法抓到包的,应该是纯前端。点击注册登录功能,抓到几个nosql查询的包。当遇到绝对路径时,会丢弃之前的所有路径组件。os.path.join有一个逆天特性。将language改为/flag。node的实现也是截取72字节。根据题目提示改包拿到flag。perl的open可以RCE。
2025-09-13 14:02:51
1323
原创 【Web】corCTF 2025 wp
要求构造一个YAML文档,使其在YAML 1.1和1.2版本下解析出的score值不同,且1.1版本解析的结果为5000。如下,上面的data协议,hostname为cor.team,pathname为/plain,11,符合题目格式要求。有两层waf,一个是限制hostname为safeHostnames里的,二个是限制pathname长度小于10。微妙的是,pathname也被解析为空,也直接绕过了长度限制。也让AI搓一个脚本,解析输入url的各部分,逻辑和题目一致。而题目是怎么解析url的呢。
2025-09-09 16:07:24
576
原创 【Web】Undefined类在SSTI中的利用--记学弟的无心发现
"".__class__.__base__.__subclasses__()[]毫无疑问是取不到类的,那么它返回的是什么呢。ok,那么试着把最上面payload中的index替换为空或者'',发现效果一样。那是否以后取subclasses都不需要给数组对应的下标索引,直接置空就行呢?Undefined作为一个object,可以获取它的魔术方法,进而后续利用。一步一步去调调看对应的属性和方法,这是学python安全最核心的能力。再来看看flask中的index是什么,其实就是null。若直接置空,则会报错。
2025-09-06 19:45:56
704
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅