第八周
目录
WEB
[RoarCTF 2019]Easy Java
WEB-INF/web.xml泄露
WEB-INF/web.xml泄露原因
WEB-INF/web.xml泄露利用方法
解决方法
[BJDCTF2020]The mystery of ip
什么是板块注入 SSTI
为什么会产生
什么是render_template
render_template:
我们为什么能想到是框架注入呢
Crypto
被劫持的神秘礼物
[BJDCTF2020]认真你就输了
打开环境
发现是登入界面 看看能不能sql注入
发现是做不到的
我们看看源代码
发现有两个界面 第一个我们刚刚去过了 看看下面这个
返回了这个文件 我们发现docx 是文档文件
看看能不能下载
31d39024-b852-4ee7-9743-b9b17fa5494e.node4.buuoj.cn:81/help.docx
显然没有这么简单
但是这道题目不是耍我们 是给我们发现 我们能够从里面下载文件
因为这道题的题目是java
java有一个漏洞 和git差不多的漏洞
其实web-inf就是一个文件夹 这个文件夹里存放着很多敏感文件
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其余的应用组件配置及命名规则。
/WEB-INF/classes/:含了站点全部用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用须要的各类JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件
这些文件都是包含着敏感信息 如果我们有办法得到访问这个文件夹的权限
我们就可以看到这些文件
我们可以先试试看能不能访问这些文件
因为web有的时候需要很多服务器来共同维护 如果有的服务器对静态资源的目录或文件的映射配置不
当,就容易出现这个泄露
先看看能不能访问/WEB-INF/web.xml文件 如果可以访问 我们就可以发现命名规则 然后通过
/WEB-INF/classes/ 来下载文件
修改Nginx配置文件禁止访问WEB-INF目录
我们得到了这个办法 就开始看看哪里可以访问 /WEB-INF/web.xml
我们能发现 在这里有post的方法 因为经过尝试 get无法访问这个文件夹
我们看看post能不能
记事本打开
能发现flag的命名和类存放位置
我们可以使用
/WEB-INF/classes/com/wm/ctf/FlagController.class
来访问 其实就是访问文件夹
得到文件 通过java打开
发现加密
base64解密
CTF常见源码泄漏总结 - JavaShuo
https://www.cnblogs.com/2ha0yuk7on/p/16648850.html#%E6%A8%A1%E6%9D%BF%E5%BC%95%E6%93%8E
服务器端模板注入(SSTI) - 知乎
这题考的是板块注入 SSTI
其实和sql注入一样 sql注入是通过构造字符串 让我们要比对的字符串变为执行的命令
ssti也是一样的 只不过 ssti是在框架中执行 语言框架对html的渲染 因为对字符串不够严格 就容易变为命令执行
render_template渲染函数的问题
是用户和页面交互的函数 页面可以通过用户的操作来展示页面
如果对用户输入不进行操作
{{}}在Jinja2渲染的时候会对{{}}里面进行操作 例如 {{1+2}} 会被渲染为3 所以SSTI利用了这一点
{{命令}} 来实现注入
开始做题
打开网站 发现有其他的页面 看看源代码
访问 flag.php
访问hint.php
在源代码里发现提示
让我们思考如何知道我们ip的 我们一下就想到 X-Forwarded-For
我们抓包看看能不能更改
因为这个是我们完全可控的 我们修改多少就是多少 我们可以先尝试看看能不能写入
因为这里是自动获取 SSTI就是容易在cookie这块自动获取的地方下手脚
我们尝试{{1+2}}
发现完全可以 说明就是SSTI注入
我们开始构造payload
X-Forwarded-For:{{system('ls')}}
发现flag文件 我们开始查看
X-Forwarded-For:{{system('cat /flag.php')}}
发现没有回显 应该不会是黑名单 我们先看看根目录再说 实在不行 我们应该可以发现黑名单文件的
我们开始查看根目录
X-Forwarded-For:{{system('ls ../../..')}}
发现这里也有flag 说明刚刚是骗我们的
我们继续访问
X-Forwarded-For:{{system('cat /flag')}}
得到flag
这题很简单 流量分析
有一个login
看看里面的账号密码
adminaadminb
MD5小写加密
提交即可
下载文件
发现pk 解压包 我们改后缀
下来一大堆文件 看看里面 flag
得到flag