SQL注入(一)

SQL注入

什么是SQL注入?

SQL注入本质:把用户输入的信息当作代码执行

需要满足两个条件:
1. 用户能够控制输入
2. 原本程序要执行的代码,拼接了用户输入的数据然后进行执行

靶场练习——显错注入(一)

显错注入(一)

1. 先确定是否是显错注入
id=1时显示这个结果
在这里插入图片描述

id=2时显示不同结果,说明可能存在显错注入
在这里插入图片描述

原理:根据传参值的变化页面在不断改变

原因:
1.php代码里写了if等分支语句
2.这个地方从数据库里提取信息然后展露出来
如果一个网站针对id=1,id=2做条件判断再输出,十分繁琐并不便于修改,因此排除第一种情况。

再试试1是不是字符串
在这里插入图片描述

发现跟id=2的返回结果一致,说明是显错注入

2. 用order by语句查看有多少字段
在这里插入图片描述

当order by 4时发现报错
在这里插入图片描述

说明有3个字段

3. 寻找输出点
原理:用union联合查询,使用1=2让前查询语句不执行只执行union之后的查询语句
在这里插入图片描述

发现2,3是输出点
在这里插入图片描述

运用查找语句从information_schema.tables表中查找table_name列的信息,条件是table_schema和该数据库名相等->获取该数据库的表名(可用limit x,1语句挨个查找我们需要的表)

发现了我们需要的表名error_flag
在这里插入图片描述

运用查找语句从information_schema.columns表中查找column_name的信息,增加已知条件table_name=’error_flag’->获取error_flag表中的列的信息(同样可用limit x,1挨个查看列名)
在这里插入图片描述
在这里插入图片描述

发现第一列列名是id,第二列列名是flag,没有第三列

现在我们知道我们所需要的flag在error_flag表中的flag列中,则
在这里插入图片描述

用查询语句直接得到我们的flag

靶场练习——显错注入(二)

显错注入(二)

  1. 先确定是否为SQL注入
    在这里插入图片描述在这里插入图片描述

发现id=2页面发生变化说明可能是SQL注入
在这里插入图片描述

但id=2-1时页面没有发生变化,说明这里被当作字符串输出了字符串里的第一位2,因此页面没有发生变化

解决办法:先将id值闭合(id=1’),再将后面的(’)用(-- qwe’)注释掉,这样就不会干扰后面的语句执行

在这里插入图片描述

  1. 获取字段数
    用order by 语句
    在这里插入图片描述在这里插入图片描述

发现有三个字段
3. 获取表名
在这里插入图片描述

发现第一张表就是我们需要的表,因此得到表名error_flag
4. 获取列名
在这里插入图片描述在这里插入图片描述

得到error_flag表第一列为id,第二列为flag

  1. 得到flag值

在这里插入图片描述

靶场练习——显错注入(三)

显错注入(三)

  1. 判断是否存在sql注入
    在这里插入图片描述在这里插入图片描述

页面发生变化,说明存在SQL注入
还是老套路需要手动闭合(‘))
再将原本的(‘))注释掉
在这里插入图片描述

  1. 获取字段数
    在这里插入图片描述在这里插入图片描述

确定3个字段

  1. 确定注入点
    在这里插入图片描述

确定后两位时注入点,任选其一

  1. 获取表名
    在这里插入图片描述

这里我使用了一个新的语句
group_concat(table_name)
这句话的意思是将table_name列的数据以字符串形式输出
我们得到表名error_flag
5. 获取列名
在这里插入图片描述

也用到group_concat()语句,因为特别好用
得到列名flag

  1. 得到flag

在这里插入图片描述

靶场练习——显错注入(四)

显错注入(四)

  1. 判断是否存在SQL注入
    在这里插入图片描述在这里插入图片描述

确定存在SQL注入

  1. 获取字段数
    在这里插入图片描述在这里插入图片描述

确定3个字段

  1. 确定注入点
    在这里插入图片描述

确定后两位是注入点,任选其一

  1. 获取表名
    在这里插入图片描述

得到表名error_flag

  1. 获取列名
    在这里插入图片描述

得到列名flag

  1. 得到flag

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值