怎样判断有没有SQL注入漏洞及原理?
2024-10-11 01:46:47
来源:实验楼
最为经典的单引号判断法: 在参数后面加上单引号,比如:
http://xxx/abc.php?id=1'
如果页面返回错误,则存在 Sql 注入。 原因是无论字符型还是整型都会因为单引号个数不匹配而报错。
通常 Sql 注入漏洞分为 2 种类型:
- 数字型
- 字符型
数字型判断:
当输入的参 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下: select * from <表名> where id = x
这种类型可以使用经典的 and 1=1
和 and 1=2
来判断:
- Url 地址中输入
http://xxx/abc.php?id= x and 1=1
页面依旧运行正常,继续进行下一步。
- Url 地址中输入
- Url 地址中继续输入
http://xxx/abc.php?id= x and 1=2
页面运行错误,则说明此 Sql 注入为数字型注入。
- Url 地址中继续输入
原因如下: 当输入 and 1=1
时,后台执行 Sql 语句:
select * from <表名> where id = x and 1=1
没有语法错误且逻辑判断为正确,所以返回正常。
当输入 and 1=2
时,后台执行 Sql 语句:
select * from <表名> where id = x and 1=2
没有语法错误但是逻辑判断为假,所以返回错误。 我们再使用假设法:如果这是字符型注入的话,我们输入以上语句之后应该出现如下情况:
select * from <表名> where id = 'x and 1=1'
select * from <表名> where id = 'x and 1=2'
查询语句将 and 语句全部转换为了字符串,并没有进行 and 的逻辑判断,所以不会出现以上结果,故假设是不成立的。
字符型判断:
当输入的参 x 为字符型时,通常 abc.php 中 SQL 语句类型大致如下: select * from <表名> where id = 'x'
这种类型我们同样可以使用 and '1'='1
和 and '1'='2
来判断:
- Url 地址中输入
http://xxx/abc.php?id= x' and '1'='1
页面运行正常,继续进行下一步。
- Url 地址中输入
- Url 地址中继续输入
http://xxx/abc.php?id= x' and '1'='2
页面运行错误,则说明此 Sql 注入为字符型注入。同理
- Url 地址中继续输入
最新文章
- MFC中CListCtrl控件的使用方法
- android: 多线程编程基础
- leetcode: Path Sum II 迭代法
- win7旗舰版在安装vs2010后向sql2008添加SQL_Server_Management详解
- git的id_rsa.pub的生成(也就是github上的SSH Keys)
- JavaScript对象基础知识
- java提高篇(十四)-----关键字final
- HTML5实现图片文件异步上传
- openresty源码剖析——lua代码的加载
- 为Markdown文件生成目录
- 原创:TSP问题解决方案-----禁忌搜索算法C实现
- spring+hibernate项目demo搭建
- Scala对MongoDB的增删改查操作
- [HNOI2002]营业额统计_Treap
- Filter、Interceptor、Aspect 区别及实现
- 【Android Studio安装部署系列】八、Android Studio主题皮肤更换
- 如何隐藏overflow: scroll的滚动条
- PHP中的Traits用法详解
- SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介、创建消息生产者、创建消息消费者、自定义消息通道、分组与持久化、设置 RoutingKey)
- CSS3动画:流彩文字效果+图片模糊效果+边框伸展效果实现
热门文章
- [AI开发]视频结构化类应用的局限性
- Java中的接口(什么是接口,接口的好处,具体的使用)
- Windows 服务程序(一)
- [JZOJ100043] 【NOIP2017提高A组模拟7.13】第K小数
- [GDKOI2016]染色大战
- Cocos2d-x 学习笔记(11.3) JumpBy JumpTo
- 【Labview入门】将输入度数转换为3位精度弧度值
- JS中==运行机制
- postman-windows下newman的使用
- 《HelloGitHub》第 43 期