sql注入

一、什么是sql注入?

sql注入原理:sql注入就是把用户的输入当作sql代码去执行,攻击者可以假设场景利用数据库的一些特性进行攻击。

二、思路

1.找寻注入点

  1. url
  2. header
  3. 表单提交

2.判断是否存在注入

代码如下(示例):

 4. and 1=1 
 5. and 1=2
 6. 使用运算符
 7. sleep

3.判断字段数

order by

4.查找显错位

  1. 联合查询
union select 1,2,3 --mysql
union select null,null,null --mssql 对于字符类型要求严格可使用null代替所有类型
union all select null,null,null from dual --oracle 对于语法格式要求严格 dual 虚表

5.查询数据库名

database() --mysql
select * from V$version --oracle查询数据库的版本

6.查询表名

information_schema.tables --mysql
sysobjects --mssql
user_tables --oracle

7.查询字段名

information_schema.columns --mysql
syscolumns --mssql
user_tab_columns --oracle

8.查询值

三、常见的sql注入类型

1.显错注入

  • 思路:参考上面的8个步骤

2.head注入

思路:通过弱口令爆破密码,在用户登录的时候发起请求,请求头的信息部分会被网站记录保存到数据库如:UA,XXF,REFERER ,可以通过这些点来尝试进行注入,header注入没有回显,可以利用盲注和报错注入方法其中使用mysql的报错函数updatexml来实现;

3.盲注

  • 布尔盲注:采用拆分法,利用sleep ASCII substr length 函数结合再通过burp爆破
  • 延时盲注:跟布尔盲注一样多加一个if判断的方法,最后根据burp爆破的响应时间来判断

4.偏移注入

  • 思路:利用找出的显错位通过联合查询移动位置来获取数据,有局限性,不能捞取所有数据。

5.dns注入

  • 通过load_file函数,让数据库查询的时候访问dns服务地址,然后把结果显示在dnslog上

6.反弹注入

  • 对于mssql来说通过opendatesource函数来获取目标数据库数据,插入到攻击者的数据库中,脱库

7.报错注入

  • mysql通过updatexml函数
  • oracle通过and 1=CTXSYS.DRITHSX.SN(user,(select banner from v$version where rownum=1))

8.宽字节注入

  • 主要就是魔术引号的逃逸,通过gbk编码的特性,双字符可以可以构成一个汉字,=%5c ,%df%5c=一个汉字,让\逃逸就可以正常的进行闭合

9.堆叠注入

  • 就是使用’;‘,来隔断sql,sql一句一句执行,不同于联合查询,’;'可以堆叠增删改查所有类型的sql

总结

sql注入还可以通过sqlmap脚本来跑,本章不做任何概述,后续更新xss,csrf,文件上传漏洞文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值