Web渗透测试|SQL报错注入
时间:2022-07-28
本文章向大家介绍Web渗透测试|SQL报错注入,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原理
1.updatexml() 更新xml文档的函数。
语法:updatexml(目标xml内容,xml文档路径,更新的内容)
2.concat()连接字符串。
语法:concat(str1,str2,str3,…..)
3.“#”:MySQL数据库注释,但凡在回车前“#”后的内容都会被注释。
Mysql支持16进制,但是开头得写0x,0x7e是一个特殊符号。
4.SQL报错注入原理:
使用updatexml函数去更新XML文档,但是我们在XML文档路径的位置里面写入了子查询,我们输入特殊字符(0x7e),然后就因为不符合输入规则然后报错了,但是报错的时候,它其实已经执行了那个子查询代码!
实战
演示靶场为网上真实网站,且已经过站长同意。
1.此网页为网站注册页面。当我们注册用户时,网站后台流程为前端将我们注册的用户名和密码传入web服务器,再由web服务器将用户名和密码储存到数据库服务器中。由此我们分析数据库插入语句可能是:
insert into user(username,password) values('admin','123456')
2.尝试通过前端传入数据,修改数据库插入语句,加入updatexml语句:
insert into user(username,password) values('admin','123456')
此时可以通过本地搭建数据库模拟语句,观察返回结果。
3.如上图所示在使用updatexml函数中加入database()函数,经查询即可得到数据库名。
通过以上测试我们在靶场中输入如下内容:
username:' or updatexml(1,concat(0x7e,database()),1),1)#
password:随便输
结语
SQL注入漏洞属于高危漏洞,不仅能窃取用户隐私,还可以攻陷服务器,危害巨大。由于多方面原因,目前仍有少数网站存在此漏洞。学习网络安全不仅是用于渗透测试,更是提升网站开发人员能力的重要途径。
以上内容仅用于信息技术防御教学,切勿用于其他用途。
END
主 编 | 王楠岚
责 编 | KeeCTh
- IO约束(下)
- 可以通过基类实现的几种功能。vs2008 .net 2.0
- Python基础知识2:字典
- 桶式移位器
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.7 增加了一个js函数的分页方式。
- FireEye报告:揭露新型工控系统恶意软件TRITON
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.6 修改了几个小bug,使用演示。
- Invoke-PSImage:将PS脚本隐藏进PNG像素中并用一行指令去执行它
- linux的内存清理相关知识!
- 一个页面搞定几乎所有的列表需求的实现思路和一点代码。
- 实现 Table 的行交替颜色、选中行变色的一种方法。演示+源码
- 【知识】使用Python来学习数据科学的完整教程
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.4 增加了几个分页算法
- 虚拟时钟
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python-leetcode424-滑动窗口法】替换后的最长重复字符
- c++实例之通讯录管理系统之修改联系人功能(六)
- 解决arxiv.org打开pdf缓慢问题
- c++实例之通讯录管理系统之清空联系人功能(七)
- springboot任务之定时任务
- springboot检索之整合elasticsearch并使用jest操作
- springboot任务之邮件任务
- springboot安全之整合spring security实现(只有登录才有权限、不同用户显示不同内容、记住我)
- springboot任务之异步任务
- springboot缓存之@Cacheable中常用参数
- springboot开发之添加员工
- springboot分布式之整合zookeeper和dubbo
- springboot之热部署
- c++之内存模型
- springboot消息之AmqpAdmin管理组件的使用