Web渗透测试|SQL报错注入

简介: 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('' or updatexml(1,concat(0x7e,database()),1),1)#admin','123456')

此时可以通过本地搭建数据库模拟语句,观察返回结果。

3.如上图所示在使用updatexml函数中加入database()函数,经查询即可得到数据库名。

通过以上测试我们在靶场中输入如下内容:

username' or updatexml(1,concat(0x7e,database()),1),1)#

password:随便输


结语

SQL注入漏洞属于高危漏洞,不仅能窃取用户隐私,还可以攻陷服务器,危害巨大。由于多方面原因,目前仍有少数网站存在此漏洞。学习网络安全不仅是用于渗透测试,更是提升网站开发人员能力的重要途径。

以上内容仅用于信息技术防御教学,切勿用于其他用途。

目录
相关文章
|
1天前
|
Java 测试技术 Maven
Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]
Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]
|
1天前
|
SQL 存储 Java
如何避免SQL注入?
【4月更文挑战第30天】如何避免SQL注入?
6 0
|
2天前
|
SQL 安全 PHP
【PHP 开发专栏】PHP 防止 SQL 注入的方
【4月更文挑战第30天】本文介绍了PHP防止SQL注入的策略,包括理解SQL注入的原理和危害,如数据泄露和系统控制。推荐使用参数化查询(如PDO扩展)、过滤和验证用户输入,以及选择安全的框架和库(如Laravel)。此外,强调了保持警惕、定期更新维护和开发人员安全培训的重要性,以确保应用安全。
|
2天前
|
SQL 存储 安全
|
2天前
|
SQL Oracle 关系型数据库
常见 SQL 注入绕过方法
常见 SQL 注入绕过方法
|
2天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结
|
2天前
|
SQL 关系型数据库 MySQL
利用 SQL 注入识别数据库方法总结
利用 SQL 注入识别数据库方法总结
|
2天前
|
SQL Oracle Java
SQL 注入神器:jSQL Injection 保姆级教程
SQL 注入神器:jSQL Injection 保姆级教程
|
2天前
|
SQL 数据库
常见寻找 SQL 注入方法总结
常见寻找 SQL 注入方法总结
|
2天前
|
前端开发 JavaScript 索引
【Web 前端】JS的几种具体异常类型(报错)
【4月更文挑战第22天】【Web 前端】JS的几种具体异常类型(报错)