SQL注入 ---> Day1 !

发布时间:2024年01月24日

终于,我的课程开始讲SQL注入了,对就是那个常年在OWASP上有名的SQL注入

今天是真的冷啊,幸苦的小编还在写csdn? ? ? ? ? ? ? ??

1.SQL注入原理

SQl注入其实就是将恶意的代码向服务器提交,但是后端又不过滤而引发的漏洞!!比如:

select * from security where username="admin"and password="password"

这个句子就是在向security的表中查找username是admin&&password是password所对应的数据

其中adminpassword是外界传入的参数,像这样:

? ? ? ? ? ? ? ? ??

那如果我们传入恶意参数呢??😊😊 如?admin ' or 1=1 --+ 那么此时的代码是不是就变成了

select * from security where username="admin" or 1=1 --+ password="";

相信可以看出来这里就算不知道账号密码也能进行查询 ,来解释一下这行代码

  • username="admin" or 1=1? 这里就算数据库中不存在admin也是对的(因为1=1天然成立)
  • --+ 在sql中--就是注释的意思 这个+用来占位,你可以替换成任意字符,反正要有占位符,所以后面的password不管对不对都被注释掉了,看代码展示也能看见他变成灰色了吧😊😊

2.SQL注入的类型

SQl注入可以分为以下两种类型

  1. 按照数据类型
  • 字符型
  • 数字型

? ? ? 2. 按照返回结果

  • 报错注入
  • 盲注

今天就先来讲讲第一类

字符型 比如要求我们输入用户名,这种就是字符型 基本格式:

select * from security where username="zhangsan";

这时候我们的检测方法可以有

  • 输入 zhangsan' 如果是字符串类型就会出现以下代码
select * from security where username="zhangsan'  ";

很显然最后一个 " 没有闭合 那么就会报SQL?syntax errors 或者页面发生改变

  • 也可以 输入 zhangsan ' and '1' = '2 ,这时候这个查询语句就变成了
select * from security where username="zhangsan" and '1'='2';

这样也是会发生和上面一样的的情况

然后就是数字型注入的检查,相对于字符型就不用考虑这么多了

  • 输入 1 and 1=2? 这时候的查询语句就变成了
select * from security where id=1 and 1=2;

这样就会发生报错,但是还有一种检测数字型注入的方法?

  • 输入 1/1 和1/0? (前提是id=1是有值的)如果能正常查询,说明这里不会进行数学运算

就是字符型注入,如果1/1不报错,但是1/0报错,说明进行了数学运算,就是数字型注入

3.MySQL的报错函数?

1.extractvalue()

这个函数的用法

如果在使用 EXTRACTVALUE 函数时出现错误,MySQL 将返回 NULL 值,并且可能会生成一个警告

有意思的就是这个警告,他会返回你的一些函数的报错和NULL,上案例!!!

select extractvalue(1,concat(0x7e,(select user()),0x7e));

?这句代码的意思就是将~select user()~当作路径查询(0x7e是~的十六进制编码),因为~在xpath的语法中式不存在的,所以就会报错,并且执行select user()

2.updatexml()

这个和上面的extractvalue差不多

还是从Xpath下手,就是酱紫~~~

补充,这里为什么要~~来显示呢,完全可以直接select current_user()对吧? ? 哈,那肯定是有原因的!!!!

这个返回值最大长度是32,如果实际中的返回值大于32呢

那就要这样查询了

select updatexml(1,substr(concat(0x7e,(select current_user()),0x7e),1,32),1);

通过控制返回值的长度,如果太长了,那就再输入一次将1改为33就是了

3.GTID_SUBSET(参数1,参数2)

这个函数就是用来判断参数2是不是参数1的子集,如果不是就报错返回false,并且执行参数一

那就:(这里的版本要比5.5高哦)

select gtid_subset(user(),1);

以上就是第一节SQL注入课程的知识点整理了!!!(真好,这就一点了😭😭😭)

?????????????????????????????????????????????????????????????

文章来源:https://blog.csdn.net/huohaowen/article/details/135799453
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。