[NISACTF 2022]babyupload
打开后尝试上传php,jpg,png文件都没成功
查看源代码发现有个/source文件
访问后下载压缩包发现有一个python文件
搜索后知道大致意思是,上传的文件不能有后缀名,上传后生成一个uuid
,并将uuid和文件名存入数据库中,并返回文件的uuid。再通过/file/uuid
访问文件,通过查询数据库得到对应文件名,在文件名前拼接uploads/
后读取该路径下上传的文件。
http://t.csdnimg.cn/jR6yM
读取 flag 文件,在文件名前被uploads/
拼接意味着只能读取上传后的文件,而且上传的文件没有后缀名,不能直接利用,但os.path.join()
函数存在绝对路径拼接漏洞
绝对路径拼接漏洞
os.path.join(path,*paths)函数用于将多个文件路径连接成一个组合的路径。第一个函数通常包含了基础路径,而之后的每个参数被当作组件拼接到基础路径之后。
然而,这个函数有一个少有人知的特性,如果拼接的某个路径以 / 开头,那么包括基础路径在内的所有前缀路径都将被删除,该路径将视为绝对路径
当上传的文件名为 /flag ,上传后通过uuid访问文件后,查询到的文件名是 /flag ,那么进行路径拼接时,uploads/ 将被删除,读取到的就是根目录下的 flag 文件。
将filename改为/flag
即可得到flag
[LitCTF 2023]Follow me and hack me
按照要求传参可直接得到flag
[LitCTF 2023]Ping
先尝试ping一下本机地址,查看目录,发现不行
查看源码发现有过滤
题目提示是前端绕过,直接禁用js
查看所有文件夹,发现里面有flag
用cat查看即可得到flag
[LitCTF 2023]Vim yyds
题目提示泄露,直接用dirsearch扫描,发现一个文件,访问后下载
用vim编辑器打开
vim -r 文件名打开可查看源码
用post传参传入“Give_Me_Your_Flag”通过base64加密后的值
即可得到flag
[HNCTF 2022 Week1]Interesting_include
用get传参的方法传入一个filter,还有一个正则匹配
题目提示是php伪协议,直接构造url,得到一串base64编码
解码后得到flag
[HUBUCTF 2022 新生赛]checkin
要求用get传参传入一个info,info后续被反序列化,include("flag.php")处的提示是已经修改了username和password这两个值,发现是弱比较
补充:
弱比较中的布尔true和任意比较:
var_dump(True == 0); //bool(false)
var_dump(True == 'False'); //bool(true)
var_dump(True == 2); //bool(true)
所以可知,true和非空、非零字符串比较都是为true
编写php代码,得到payload
传入url,得到flag
[GXYCTF 2019]BabyUpload
发现提示
先上传一个.htaccess文件并抓包更改类型
上传成功并显示上传路径
传入一个jpg文件
文件头欺骗也不行,可能是不能含有<?
尝试换用别的一句话木马
上传成功,显示路径
蚁剑测试连接成功
找到flag