1. 基础
a. 简要明确参数类型 数字,字符,搜索,JSON等
b. 简要明确请求方法 GET,POST,COOKIE,REQUEST,HTTP等
其中SQL语句干扰符号:',",%,),}等
c. 了解常用的注释符 –+可以注释掉前面的引号,- -+可以用#替换,两者的效果相同。 +号在语句中变成了空格。用来和后面的单引号分隔开,将后面的语句注释,了解原理后便知道了–无法使用的原因,是因为–与后面的单引号连接在一起,无法形成有效的mysql语句。
2. 盲注
盲注主要分为以下四种情况: 回显注入 无回显注入 延时注入 布尔注入
先了解下常用的相关函数,以后会经常用到:
sleep(5)
mid(a,b,c)
substr(a,b,c)
left(a,b)
length(database())=8
ascii(x)=97
盲注就是在注入过程中,获取的数据不能回显至前端页面,需要利用一些方法进行判断或者尝试。 盲注可以分为以下三类:
if,sleep
select * from users where id=1 and sleep(5);
select name,if(sex=0,'女','男') as sex from student;
select * from users where id=1 and sleep(if(database()='mysql',5,0))
select * from users where id=1 and if(database()='mysql',sleep(5),0)
select * from users where id=1 and sleep(if(length(database())=8,5,0))
floor,updatexml,extractvalue
3. 加解密
4. 二次注入
第一步: 插入恶意数据 第一次进行数据库插入数据的时候,仅仅对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身包含恶意内容。 第二步: 引用恶意数据 在将数据存入到了数据库中之后,开发者就认为数据是可信的,在下一次需要进行查询的时候,直接从数据库中取出了恶意数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。
5. 堆叠查询
堆叠查询简单说就是一堆SQL语句一起执行
6. WAF绕过
6.1 相关技术
注释符【重要!!!】 /**/注释符
因为注释符#、-- 都是把后面的语句全部注释掉了,而内联注释/**/则是注释指定部分,需要一前一后闭合,所以在传参那里几乎不做注释语句用,而是用于过滤空格等bypass
/*! …*/注释符
在mysql中 /*! …*/ 不是注释,mysql为了保持兼容,它把一些特有的仅在mysql上用的语句放在/!../中,这样这些语句如果在其他数据库中是不会被执行,但在mysql中它会执行。
/*!44595union…*/ 表示当mysql数据库版本为4.45.95时执行后面的语句。
-
数据 加密解密 编码解码 等价函数 特殊符号 反序列化 注释符混用 -
方式 更改提交方式 变异 -
其它
Fuzz大法
一种绕过思路,利用脚本,逐个测试,批量化访问地址,类似于爆破
数据库特性 垃圾数据溢出
Http参数污染
浏览器在跟服务器进行交互的过程中,浏览器往往会在GET/POST请求里面带上参数,这些参数会以 名称-值 对的形势出现,通常在一个请求中,同样名称的参数只会出现一次。但是在HTTP协议中是允许同样名称的参数出现多次的。比如下面这个链接:http://www.baidu.com?name=aa&name=bb ,针对同样名称的参数出现多次的情况,不同的服务器的处理方式会不一样。有的服务器是取第一个参数,也就是name=aa。有的服务器是取第二个参数,也就是name=bb。有的服务器两个参数都取,也就是name=aa,bb 。这种特性在绕过一些服务器端的逻辑判断时,非常有用。
6.2 例子说明
id=1 union%23a%0A;%23
id=1 union%23a%0Aselect 1,2,3%23
id=1
1
-1 union select 1,2,3
select UAccount,USex,UPassword from t_users union
select UAccount,USex,UPassword from t_users union
6.3 常见绕过方式
1. IP白名单 从网络层获取的ip,这种一般伪造不来,如果是获取客户端的IP,这样就可能存在伪造IP绕过的情况。 测试方法:修改http的header来绕过waf x-forwarded-for x-remote-IP x-originating-IP x-remote-addr x-Real-ip
2. 静态资源 特定的静态资源后缀请求,常见的静态文件(.js .jpg .swf .css等等),类似白名单机制,waf为了检测效率,不去检测这样一些静态文件名后缀的请求。
3. URL白名单 为了防止误拦,部分waf内置默认的白名单列表,如admin/manager/system等管理后台,只要url中存在白名单的字符串,就作为白名单不进行检测。
正常白名单地址如下:
http://10.10.1.5/../../manager/../sql.php?id=1
可以通过以下方式尝试绕过防御规则:
http://10.10.1.5/.。/sql.php?a=/manager/&b=../etc/passwd/&id=1
7. 写在后面
由于本人初学网络安全,水平有限,更多知识后续会持续补充,让笔记条理更加清晰,易于查阅。
|