Bugku ---Web---全题目解析 超详细步骤 持续更新

目录

1.Simple_SSTI_1

2.Simple_SSTI_2

3.滑稽

4.计算器

5.矛盾

6.GET


————————————————————分割线————————————————————

1.Simple_SSTI_1

SSTI是服务器端模板注入 

F12查看下源码 

在 Flask 中,双大括号 {{ }} 用于表示动态内容的占位符,该内容将由模板引擎渲染。这被称为模板语法。 当你在 Flask 模板中使用双大括号把变量或表达式括起来时,它告诉模板引擎去计算该表达式并将其值插入到渲染后的 HTML 文档中。 例如,你提供的代码 flag={{config.SECRET_KEY}} 将会在 HTML 文档中的该位置渲染 Flask 应用程序的秘密密钥。

在Flask项目的配置中都是通过app.config对象来进行配置的。比如要配置一个项目的SECRET_KEY,可以使用app.config['SECRET_KEY'] = "xxx"来进行设置。

所以综上所诉 我们直接尝试去在url试着访问 config 

注意语法格式 ?flag={{config}}

也可用查询语法?flag={{config.SECRET_KEY}}

2.Simple_SSTI_2

打开题目让传入一个flag参数 我们试着看看config文件里

但是好像没有有用的东西 我们试着用模板注入看看怎么个事

?flag={{ config.__class__.__init__.__globals__['os'].popen('ls ../').read() }}

使用了模板引擎的功能来访问Python的config对象,通过链式属性访问(__class____init____globals__)来获取对Python标准库的os模块的访问权。一旦获得对os模块的访问,攻击者就可以通过popen方法执行任意的系统命令。

_class_:用来查看变量所属的类,根据前面的变量形式可以得到其所属的类。

__init__ :初始化类,返回的类型是function。

__globals__[]:使用方式是函数名.__globals__获取function所处空间下可使用的module、方法以及所有变量。

os.popen()方法:用于从一个命令打开一个管道。

open() 方法:用于打开一个文件,并返回文件对象。

结果发现app 这个文件 好像不是常见的内部文件名字 我们试着去访问看看 发现了flag文件

cat一下获取flag

3.Flask_FileUpload

Flask是一个轻量级的‌Python ‌Web框架,主要用于构建和维护Web应用程序。它提供了一组工具和功能,使开发者能够快速轻松地创建动态Web应用程序

一个提交框 查看下网页源码 提示 说是要上传个文件 并且固定了上传文件类型 需要时jpg和png的图片

于是写一段python的脚本文件 并且将后缀名改成jpg

  1. import os: 这一行导入了Python的内置模块osos模块提供了许多与操作系统交互的功能,比如读写文件、更改和识别路径等。

  2. os.system('ls / '): 这一行使用os模块中的system函数来执行一个外部命令。这里执行的是ls /命令。在Unix和类Unix系统中,ls是一个用于列出目录内容的命令,而/代表系统的根目录。因此,ls /会列出根目录下的所有文件和子目录。

上传成功后 页面没有什么特别的回显 我们看一下源代码 发现了我们要找的flag

 首先对于这个有flask构建的web文件上传程序,其中包含了一个文件上传的端点 /uploader。当客户端通过 POST 请求发送文件到 /uploader 时,服务器会检查是否有文件被上传,然后将文件保存到指定的上传文件夹中。在文件保存后,os.system(' ls /') 这行代码被执行,它会在服务器上执行 ls / 命令,列出根目录下的所有文件和文件夹。

所以我只需要利用这个漏洞再去修改下我们的python代码重新上传一下我们的文件即可

import os
os.system('cat /flag ')

4.滑稽

进入环境 右键查看源代码

5.计算器

 让输入验证 但发现只能数一个字 打开源代码发现有输入长度限制是1  

将源代码中限制从1改一下 再次输入 正确验证即可获得flag

6.矛盾

这一行从 URL 查询字符串中获取名为 num 的参数值,并将其赋值给 $num 变量。如果 URL 中没有提供 num 参数,或者参数值不是有效的字符串,则 $num 将被设置为空或者默认值。

按照代码提示 直接在URL传入num的参数值为1 即可得出flag

7.GET

一样 根据提示 以GET传参方式 传入flag 得出答案

6.

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了通关ssti-lab靶场,你可以按照以下步骤进行操作: 1. 首先,从上一个数据库中找到的password字典中获取到mssql的账户密码。 2. 使用这个账户密码进行mssql的暴力破解,以获得访问权限。 3. 一旦你获得了访问权限,你可以使用SSTI有效载荷发生器来执行特定类型的Java SSTI攻击。该有效载荷发生器可以生成针对Java SSTI的payload,启发于${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(99)...}。 4. 另外,你还可以使用Rubeus工具来申请访问自身的可转发服务票据。通过运行命令".\Rubeus.exe asktgt /user:MSSQLSERVER$ /rc4:bd2cf5e6a8f89ed5b02d3d7fcf5e88c7 /domain:xiaorang.lab /dc:DC.xiaorang.lab /nowrap > 1.txt",你可以生成一个可转发的服务票据文件,以便在后续攻击中使用。 通过以上步骤,你可以成功通关ssti-lab靶场。请注意,在进行任何攻击前,确保你有合法的授权和使用权,并且遵守法律法规。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [WP-春秋云镜-Brute4Road靶场通关完指南](https://blog.csdn.net/qq_45234543/article/details/128482984)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [ssti-payload:SSTI有效载荷生成器](https://download.csdn.net/download/weixin_42128558/15099898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值