1

注:本文仅供学习参考

SQL定义

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。讲人话就是你在前端的操作影响到后端的数据了。

sql注入条件
必须要有参数

sql注入类型
总体来是分为数字型以及字符型
字符型里又有报错 布尔 搜索型等等
字符型是需要闭合才能执行我们想要执行的语句
字符型为什么需要闭合呢?
我们来看看数字型以及字符型的源码

$query="select username,email from member where id=$id";
$query="select id,email from member where username='$name'";

可以发现字符型参数里面多了一对单引号,如果不进行闭合是执行不了我们想要执行的语句所以我们需要加个单引号或者其他符号进行闭合,在执行我们想要的语句并且通过注释符完成。

sql注入之联合注入
使用到Union这个函数,但有条件字段数需要和数据库里面的字段数一样,否则会出错。这也是为什么进行爆库等操作前需要用到order by猜字段数的原理。
下面看看实例
输入单引号报错

image.png

'and '1'='1(正常)
'and '1'='2(报错)
确认为字符型
order by猜字段
当order by =3时出现错误说明只有2个字段
看一下回显位!
1,2都有

image.png
image.png

' union select 1,group_concat(table_name) from information_schema.tables where table_schema='pikachu'#

得到表名之后爆列名(这里省略)

image.png
最后爆出账号密码

image.png
密码md5解一下就行

明天复习一下常见的报错函数!继续加油!


在努力的wulaoban
4 声望8 粉丝