SQL注入之 base64注入攻击 您所在的位置:网站首页 sql注入url的参数 SQL注入之 base64注入攻击

SQL注入之 base64注入攻击

2024-07-16 04:40| 来源: 网络整理| 查看: 265

目录

1 base64注入代码分析

2 实验过程

1 base64注入代码分析

在base64注入页面中,程序获取GET参数ID,利用base64_decode ()对参数ID进行base64解码,然后直接将解码后的$id拼接到select语句中进行查询,通过while循环将查询结果输出到页面,代码如下所示。

由于代码没有过滤解码后的$id,且将$id直接拼接到SQL语句中,所以存在SQL注入漏洞。当访问id=1 union select 1, 2, 3# (访问时,先进行base64编码)时,执行的SQL语句为:

select * from users where id'=1 union select 1, 2, 3#

此时SQL语句可以分为 select * from users where `id`=1 和 union select 1,2,3 两条,利用第二条语句(Union查询) 就可以获取数据库中的数据。这种攻击方式还有其他利用场景,例如,如果有WAF,则WAF会对传输中的参数ID进行检查,但由于传输中的ID经过base64编码,所以此时WAF很有可能检测不到危险代码,进而绕过了WAF检测。

数据库 2 实验过程

base64编码解码一大堆在线网站或者burpsuite的Decoder模块都可以。

从URL中可以看出,ID参数经过base64编码(%3d是=的URL编码格式),解码后发现ID为1

尝试加上一个单引号并一起转成base64编码, 如图所示。 当访问id=1'编码后的网址 base64.php?id=MSc%3d), 页面返回错误。

1 and 1=1和1 and 1= 2的base64编码分别为MSBhbmQgMT0x和MSBhbmQgMT0y,再次访问id=MSBhbmQgMT0x和 id= MSBhbmQgMT0y,返回结果如下两图所示。

从返回结果可以看到,访问id=1 and 1= 1时,页面返回与id= 1相同的结果,而访问id=1 and 1=2时,页面返回与id= 1不同的结果,所以该网页存在SQL注入漏洞。接着,使用order by查询字段,使用Union方法完成此次注入。

https://www.jianshu.com/p/8a11bf55aaee (后续的跟这个链接即可👌)

假设所有的表名全部查询完毕,已知库名和表名,开始查询字段名,这里以emails表名为例,union注入的查询语句如下所示。在2的位置粘贴语句,括号还是不可少,结果如图所示,获取了emails表的第一个字段名。

id=-1 union select 1,(select column_name from information_schema.columns where table_schema='security' and table_name='emails' limit 0, 1),3

对id=后面的字符串进行base64编码,得到

id=LTEgdW5pb24gc2VsZWN0IDEsKHNlbGVjdCBjb2x1bW5fbmFtZSBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIHdoZXJlIHRhYmxlX3NjaGVtYT0nc2VjdXJpdHknIGFuZCB0YWJsZV9uYW1lPSdlbWFpbHMnIGxpbWl0IDAsIDEpLDM=

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有