sql注入攻击
来源:互联网 发布:CPDA数据分析师证书 编辑:程序博客网 时间:2024/05/22 02:25
sql注入主要分为以下几个步骤:
1、确定该网站是都存在注入点。
例如:http://***/cases/index.aspx?Id=100000054923742这个url,对于有开发基础的同学来说,进入这个页面,在数据库底层其实是做了一个select操作:select * from table_tmp where id ='100000054923742'(table_tmp和id是假设的表名和字段)。
然后尝试对地址做以下修改:
http://***/cases/index.aspx?Id=100000054923742'
http://***/cases/index.aspx?Id=100000054923742 and 1=1
http://***/cases/index.aspx?Id=100000054923742 and 1=2
如果执行①后,页面上提示报错或者提示数据库错误的话,说明是存在注入漏洞的。
如果执行②后,页面正常显示,而执行③后,页面报错,那么说明这个页面是存在注入漏洞的。
這里有个关键,就是如何判断是否真的报错,一般而言,现在的web开发如果报错了,不会直接将错误信息显示在页面上,有可能后台程序会做如下处理:如果出现错误跳转至特定页面。
2、分析数据库类型
分析数据库类型一般是利用不同数据库有不同内置系统表、函数声明和注释符来分析的。
2.1、通过函数分析:
len和length
在mssql和mysql以及db2内,返回长度值是调用len()函数;在oracle和INFORMIX则是通过length()来返回长度值。
version()>1 返回与@@version>1 相同页面时,则可能是mysql。如果出现提示version()错误时,则可能是mssql。
substring和substr
在mssql中可以调用substring。oracle则只可调用substr
2.2、通过注释符分析
“/*”是mysql中的注释符,返回错误说明不是mysql,
“--”是Oracle和MSSQL的注释符,返回错误说明不是这两者。
3、猜测表名和列名
在地址后面拼接类似于 and exists(select*from 表名)和 and exists(select 列名 from 表名)这样的查询语句,根据是否报错判断。这样就可以获取数据了。
以上只是初级的sql注入攻击的方式。技术没有对错,技术的使用方式才有对错,所以才有白帽子和黑帽子之分。
- 注入攻击--SQL注入
- 注入攻击之sql注入
- 跨站式SQL注入攻击
- SQL注入攻击总结
- 防SQL注入攻击
- SQL 注入式攻击
- SQL注入攻击尝试
- sql注入攻击
- sql注入攻击文章
- SQL注入防止攻击
- sql注入性攻击
- 防止sql注入攻击
- SQL注入攻击零距离
- sql注入攻击
- SQL注入攻击零距离
- SQL注入攻击零距离
- SQL注入攻击
- SQL注入攻击
- BeeHome从2.3迁移到3.0需要修改的地方
- java EE常见几种错误
- 数据结构实验之排序三:bucket sort
- spring cloud config 之svn仓库配置与动态刷新(服务端)
- 计算字符串最后一个单词的长度,单词以空格隔开。
- sql注入攻击
- ros tf
- Vue实践--v-model在组件中的应用
- mytable-0.3
- notepad: 怎么在notepad里面,将字符串替换成换行
- JPA的一些注解
- python中的encode()和decode()函数
- 极光征文 | 写写文章就能赢 Filco,岂不美滋滋
- 蓝桥杯 算法训练 数字三角形