天天听SQL注入,SQL注入到底是怎么注入的?

简介: 天天说SQL注入,写程序的时候要如何如何避免SQL注入,有多少人根本都不知道SQL注入是怎么注入的?

天天说SQL注入,写程序的时候要如何如何避免SQL注入,有多少人根本都不知道SQL注入是怎么注入的?


下面是SQL注入的一个简单实现步骤


首先我自己简单写了一个有SQL注入漏洞的接口用来测试




第一步:判断接口是否存在数据库注入漏洞


使用and 1=1,使条件成立,看接口是不是还可以正常返回数据




使用and 1=2,使条件不成立,看接口是不是不返回数据了,或者报错


上面两个步骤达到预期结果,就说明这个接口存在SQL注入漏洞


第二步:判断字段数


虽然看起来是返回了两个字段数据,但是SQL不一定查了两个数据,可能在程序中处理过后才返回的两个数据,所以需要判断SQL到底查询了几个字段


使用order by (一个数字)来依次请求,判断接口的SQL查询了几个字段。


先使用order by 1来试试,结果没问题



再使用order by 2 后面3 4 5,直到接口报错或者不返回数据,就说明SQL查询的字段数是前一个不报错的数字,我这里是查询的三个字段,所以到4的时候就报错了



现在知道了SQL查询的是字段数是3


第三步:判断回显点


回显点可以将我们输入的SQL语句执行,并返回回来


先试用and 1=2 使原SQL的条件不成立,再使用union 加上自己的SQL



我这里是用的Oracle,mysql可以直接select 1,2,3


可以看到报错提示数据类型不匹配,那就换成下面三个试一下,一般不是number就是varchar,看第几个字段可以返回回来1。


'1',null,null


null,'1',null


null,null,'1'



第一个字段可以返回,说明可以在第一个字段这里写我们想查询的东西



可以查询实例名



可以查询数据库版本

相关文章
|
7天前
|
SQL 安全
jeecg-boot sql注入漏洞解决
jeecg-boot sql注入漏洞解决
39 0
|
7天前
|
SQL 关系型数据库 MySQL
0基础学习SQL注入之万能账号密码(BUUctf例题-[极客大挑战 2019]EasySQL1)
0基础学习SQL注入之万能账号密码(BUUctf例题-[极客大挑战 2019]EasySQL1)
|
7天前
|
SQL NoSQL 关系型数据库
一个基于 BigQuery 的 SQL 注入挖掘案例
一个基于 BigQuery 的 SQL 注入挖掘案例
8 0
|
7天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
29 0
|
7天前
|
SQL 安全 关系型数据库
SQL 注入神器:SQLMap 参数详解
SQL 注入神器:SQLMap 参数详解
|
7天前
|
SQL 存储 Java
如何避免SQL注入?
【4月更文挑战第30天】如何避免SQL注入?
26 0
|
7天前
|
SQL 安全 PHP
【PHP 开发专栏】PHP 防止 SQL 注入的方
【4月更文挑战第30天】本文介绍了PHP防止SQL注入的策略,包括理解SQL注入的原理和危害,如数据泄露和系统控制。推荐使用参数化查询(如PDO扩展)、过滤和验证用户输入,以及选择安全的框架和库(如Laravel)。此外,强调了保持警惕、定期更新维护和开发人员安全培训的重要性,以确保应用安全。
|
7天前
|
SQL 存储 安全
|
7天前
|
SQL Oracle 关系型数据库
常见 SQL 注入绕过方法
常见 SQL 注入绕过方法
|
7天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结