天天听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'



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



可以查询实例名



可以查询数据库版本

相关文章
|
3天前
|
SQL 安全 网络安全
Victor CMS v1.0 SQL 注入(CVE-2022-26201)
Victor CMS v1.0 SQL 注入(CVE-2022-26201)
|
2天前
|
SQL API Python
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
19 8
|
3天前
|
SQL 自然语言处理 安全
Atom CMS v2.0 SQL 注入(CVE-2022-24223)
Atom CMS v2.0 SQL 注入(CVE-2022-24223)
|
4天前
|
SQL 监控 安全
数据库安全:SQL注入防御实践
【7月更文挑战第11天】SQL注入攻击作为一种常见的网络攻击手段,对数据库的安全性和业务稳定构成了严重威胁。为了有效防御SQL注入攻击,开发者和数据库管理员应采取一系列实践措施,包括输入验证与过滤、使用参数化查询、限制数据库用户权限、使用Web应用程序防火墙、定期更新和打补丁、实施实时监控和审计以及使用HTTPS协议等。通过这些措施的实施,可以显著提升数据库的安全性,降低遭受SQL注入攻击的风险。同时,开发者和数据库管理员应持续关注新的安全威胁和防御技术,不断提升自身的安全防护能力。
|
3天前
|
SQL 安全 网络安全
Victor CMS v1.0 SQL 注入(CVE-2022-28060)
Victor CMS v1.0 SQL 注入(CVE-2022-28060)
Victor CMS v1.0 SQL 注入(CVE-2022-28060)
|
13天前
|
SQL 安全 关系型数据库
使用SQLMap进行SQL注入测试
使用SQLMap进行SQL注入测试
|
3天前
|
SQL 安全 关系型数据库
Atom CMS v2.0 SQL 注入(CVE-2022-25488)
Atom CMS v2.0 SQL 注入(CVE-2022-25488)
|
3天前
|
SQL 安全 关系型数据库
Web Based Quiz System v1.0 SQL 注入(CVE-2022-32991)
Web Based Quiz System v1.0 SQL 注入(CVE-2022-32991)
|
13天前
|
SQL 安全 Oracle
SQLMap工具详解与SQL注入防范
SQLMap工具详解与SQL注入防范
|
15天前
|
SQL 存储 关系型数据库
【SQL注入】 数据库基础
SQL注入 MYSQL数据库结构 数据库操作
9 0