corCTF writeup
WEB
msfrog-generator
应该是打个命令注入
 
通过传json可以出个图片
推理后台逻辑
| 1 | 工具 msonse.png mseyes.png | 
明显这里是存在过滤的
 
直接去度文档就好了
 
这么说 我这id是个参数
 
前面也可以加
t4rn大哥快我一步
payload
| 1 | 1;cat /flag;msnose.png | 
我的是是 报错才会出现回显 但容器不出网 咋把输出重定向到报错里?有时间可以研究研究
simplewaf
| 1 | docker build -t corweb2/corweb2 . | 
| 1 | docker run -p 127.0.0.1:3456:3456 -d corweb2/corweb2 | 
| 1 | const express = require("express"); | 
做题过程
现在这题有几个想法
- 让这里解析出问题 JSON.stringify(item).includes("flag")然后就检测不到flag了
- 用什么神奇的构造来让他本来检测不出来 然后读进来以后还是当做flag
查到一个好玩的东西

现在关键就是这个  JSON.stringify(item) 可以搞对象
然后是不是可以接一些拼接啥的给他干掉?
https://tttang.com/archive/1394/
理一下思路
现在我的想法是
- 通过  JSON.stringify(item)来读一下flag.txt
- 一爆破的方式去读软连接
如何去提前读一下 flag.txt ?  
https://blog.csdn.net/Zero_Adam/article/details/114853022
查阅了相关资料 这拦截器实在所有路由之前起作用的 所以 只剩下一种可能 就是去读远程的文件了
读一个远程的软连接?
stupid try
能不能搞一手竞争之类的
| 1 | import requests | 
没啥用 不知道是不是我方法的问题
复现
说实话 这题只有一种可能 那就是 readFileSync 函数可以识别 然后 Json.stringfy()函数不能识别
去跟一下 readFileSync 的源码
这个源码 我真是艹了
这个是官方自带的模块 所以你要到 github 上下node的源码
nodejs/node: Node.js JavaScript runtime (github.com)
在ws里直接b根进 我也不知道跟进了个什么东西 艹

他这里先判断是不是 fd 类型
不是的话 就用 openSync来读
我们继续根进

然后看看他是咋 validate 的
 
这里换包了

又换包了

接着去跟一下

然后来看看那这个 Instance 到底能接受个什么东西 我们肯定要在这里搞出点名堂来

这里做了检查
- 不能为空
- 要有href
- 要有origin

然后看到这里
这里表明 只接受 file:// 和 string 
最后跟到这里
 
express 的qs解析参数时会出现
| 1 | file[a]=a&file[c]=b ==> {"a":"a","c":"b"} | 
最终payload
| 1 | ?file[href]=x&file[origin]=x&file[protocol]=file:&file[hostname]=&file[pathname]=fl%2561g.txt |