PHP -- SQL 注入讲解

概念

SQL 注入漏洞,本质是语句的混淆,对用户输入的语句过滤不严,导致语句拼接成新的语句,达到注入的目的。

原理

参数用户可控:前端传给后端的参数内容是用户可控的。
参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询。

注入点类型

数字型

select * from tables where id = 1;

字符型

select * from tables where id = '1';

搜索型

select* from tables where id like '%1%';

基于 union 查询的注入

联合查询要注意的是后面查询的列数要与主查询的列数一致

主要步骤

1 通过 ?id=1 and 1=1 ,and 1=2 。如果输出的结果不一致,说明输入的语句被执行了。就可以开始下一步了。

2 观察报错信息来确定注入点的类型。

3 使用order by 来查询主查询列数。

4 用union select 查询,将主查询项改成负数。

select* from tables where id = -1 union select 1,2,3;

5 在回显的位置上替换成查询语句,database(),user()。

6 查到库名后查表名

-1 union select 1,(SELECT group_concat(COLUMN_NAME) FROM information_schema
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值