多方式注入 第三十四天
0x00宽字节注入
成因
为防止渗透测试过程中,用来检测网站的关键字符,被网站开发人员听过代码函数设置给过滤
掉,通过构建16进制编码来防止,单引号,双引号等用来做测试的特殊字符被过滤掉。
原型sql语句:
select * from 'id' 通过函数转义具有防单引号,双引号,括号的渗透测试
主要添加为
%df%27
%81%27
功能解释
一般网站人员通过addslashes()函数做字符转义,会在多出的字符前添加\,转义字符,
而斜杠的16进制数为%c5,利用gbk或者utf8的编码结构构成文字或者其他,可以顺利进行注入测试。
宽字节测试成功后,通过union select联合查询就可以得出数据,
###
总结
宽字节注入,主要集中在gbk编码方式中,宽字节注入,
post提交数据用burp修改数据,
get数据在地址栏中做修改,
这个宽字节的注入可以有多种payload解释,如联合查询,延时注入等,但内联是无法用的。
添加的函数
--tarper 跟脚本
sqlmap purge 清除缓存
在没有指定参数的情况下,sqlmap会自动找到 *
--leavel 5 设置payload等级,等级越高,可用的payload越多
--prefix 前缀 如:--prefix '%df%27'
--suffix 后缀 如:--suffix '-- l'
-p 指定注入点
--technique BEUSTQ(B:布尔盲注,E(Error injection):报错注入,U:union联合查询,S:堆叠查询(Stacking query),T:时间盲注,Q:内联)
自创建
在合适的位置找到注入点后,根据宽字节注入原则,找到注入点并构建方式,可以在sqlmap的语句
二次编程注入
二次编,码问题
url编码是一种浏览器用来打包表单输入的格式,URL编码就是一个字符ascii码的十六进制
不过稍微变动,需要在前面加上‘%’ ,比如‘\’ 的ascii码是92,92的十六进制是5c,
所以“\”的url编码是%5c。
二次编码的函数注入
函数的16进制加密,只解一次,urldecode()和rawurldecode()两个函数,
注意:默认GET和POST函数,先解码一次
代码实例:
指定后缀,就不会用内联注入,
总结:sql注入与二次编码的结合利用,文件包含也是利用二次编码的利用
http请求头
user-agent
浏览器向服务器表名自己的身份,使得服务器能够识别客户使用的操作系统,浏览器版本等
在user-agent的使用中,暂时的使用也是通过单引号,双引号这些策略来判断在useragent有没有注入点,
然后根据注入点,在做sql注入测试。
猜测在user-agent的sql语句为:
insert into users(id,uname,ip,uage) value ('1','admin','192.168.1.1','firfox');
然后通过
where id =1 and / or / union select / and ''=' / and sleep()
构建注入点跑sqlmap
先建立两种注入方式:
数字型延时盲注
数字盲注
referer
referer存在报错,可以用报错中注入,
使用案例如下图:
x-forwarded-for
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com
文章标题:多方式注入 第三十四天
本文作者:弈少
发布时间:2019-09-02, 09:13:43
最后更新:2019-09-07, 09:14:37
原始链接:http://yoursite.com/2019/09/02/北京渗透测试第三十四天 20190902/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。