sqli-labs lesson 32-37
宽字节注入:
原理:mysql在使用GBK编码的时候,会认为两个字符为一个汉字,例如%aa%5c就是一个汉字(前一个ascii码大于128才能到汉字的范围)。我们在过滤 ' 的时候(也就是从防御的角度),往往利用的思路是将 ' 转换为 \' (转换的函数或者思路会在每一关遇到的时候介绍)。
因此我们在此想办法将 ' 前面添加的 \ 除掉,一般有两种思路:
- %df吃掉 \ 具体的原因是urlencode(\') = %5c%27,我们在%5c%27前面添加%df,形成%df%5c%27,而上面提到的mysql在GBK编码方式的时候会将两个字节当做一个汉字,此时%df%5c就是一个汉字,%27则作为一个单独的符号在外面,同时也就达到了我们的目的。
- 将 \' 中的 \ 过滤掉,例如可以构造 %**%5c%5c%27的情况,后面的%5c会被前面的%5c给注释掉。这也是bypass的一种方法。
less 32
执行:
http://127.0.0.1/sqli-labs-master/Less-32/?id=0%df' union select 1,2,database() --+
可以看到df5c已经被当作了一个字符,从而绕过了源代码对于 ' 的过滤

下面步骤基本和less 1 一致(在爆字段名的时候遇见问题,如果最后是用 table_name = 'users' 的话那么这里
的单引号如何进行绕过呢?)
附上结果

less 33
与less 32一致 宽字节注入即可。唯一不同的是使用函数addslashes()


less 34
这里变为了post型,而post传入数据时会再次编码
可以通过抓包改包进行绕过,改包时需要把uname中多的%25中的25删掉即可
然后介绍一下另一种方式,因为get型是以url形式提交参数,数据会直接通过URLencode
这里可以直接将utf-8转换为utf-16 比如 ' 在utf-16中为 �(win2003为 )

也可执行:
'union select 1,concat_ws(0x7e,username,password) from users limit 0,1# 获得数据库信息

less 35
此处id没有用‘’包裹,所以也没必要考虑check_addslashes()
直接构造payload:这里不用--+注释也可以出结果
http://127.0.0.1/sqli-labs-master/Less-35/?id=0 union select 1,2,group_concat(concat_ws(0x7e,username,password)) from security.users --+

less 36
观察源码:
注意下面的函数,利用了mysql_real_escape_string()函数,这个函数和最开始的几关一样的


但是因为数据库没有设置成GBK所以还是可以和前面几关一样构造payload
1. ' 的utf-16格式绕过(在utf-16中单引号为:%EF%BF%BD%27):
?id=0%EF%BF%BD%27 union select 1,2,concat_ws(0x7e,username,password) from security.users limit 0,1 --+

2. 利用%df进行宽字节注入:
?id=0%df'union select 1,2,concat_ws(0x7e,username,password) from security.users limit 0,1 --+

less 37
和less 34类似,只不过函数换成了mysql_real_escape_string()而不是addslashes()
使用utf-16的单引号绕过之后使用万能密码即可。

sqli-labs lesson 32-37的更多相关文章
- SQLI LABS Basic Part(1-22) WriteUp
好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...
- Sqli labs系列-less-3 。。。
原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...
- Sqli labs系列-less-2 详细篇
就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...
- Sqli labs系列-less-1 详细篇
要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...
- 攻防世界MISC—进阶区32—37
32.normal_png 得到一张png,扔进kali中binwalk 和 pngcheck一下,发现CRC报错 尝试修改图片高度,我是把height的2改为4,得到flag 33.很普通的数独 得 ...
- SQL注入系列:SQLi Labs
前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...
- Sqli - Labs 靶场笔记(一)
Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...
- SQLI LABS Challenges Part(54-65) WriteUp
终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...
- SQLI LABS Stacked Part(38-53) WriteUp
这里是堆叠注入部分 less-38: 这题啥过滤都没有,直接上: ?id=100' union select 1,2,'3 less-39: 同less-38: ?id=100 union selec ...
- SQLI LABS Advanced Part(23-37) WriteUp
继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...
随机推荐
- centos 安装jre
r第一步:将安装的jre安装文件上传到Linux系统中(这里用的是finalshell工具) 第二步: 解压tar -zxvf server-jre-8u131-linux-x64.tar.gz 显 ...
- 5shell中的数组
0.理解数组 (1)shell不限制数组的大小,数组元素的下标从0开始计数 (2)获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式,但是下标必须大于等于0 (3)b ...
- sublime最全笔记
sublime骨架建立 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8&quo ...
- Oracle如何以逗号分隔的字符串拆分为多行数据
近期在工作中遇到某表某字段是可扩展数据内容,信息以逗号分隔生成的,现需求要根据此字段数据在其它表查询相关的内容展现出来,第一想法是切割数据,以逗号作为切割符,以下为总结的实现方法,以供大家参考.指教. ...
- ARM汇编指令-STM32单片机启动
EQU 给数字常量取一个符号名,相当于c中的define. AREA 告诉汇编器汇编一个新的代码段. SPACE 分配内存空间. PRESERVE 当前文件堆栈按照8字节对齐. EXPORT 声 ...
- vmware使用U盘安装系统
创建好系统 创建一个新的硬盘,选择"physicalDrive1" 如果识别不到physicalDrive 1,使用下面的方法. 1.在本机的服务里面启用下面的服务. 2.重启 V ...
- 「CF521E」 Cycling City
「CF521E」 Cycling City 传送门 首先你能发现这个东西一定是两个环的公共边. 最开始想的是什么如果一个点被访问过三次那它一定是公共边的某一端之类的东西,然后发现被仙人掌叉掉. 然后就 ...
- Scala学习——函数高级操作
scala函数高级操作 一.字符串高级操作 多行字符串和插值 package top.ruandb.scala.Course06 object StringApp { def main(args: A ...
- vuejs第一集之:vuejs了解
1,了解到前后端分离2,连接到vuejs3,搜集书籍: Vuejs前端开发基础与项目实战 (https://detail.tmall.com/item.htm?spm=a230r.1.14.107.6 ...
- deepin使用synergy鼠标越界软件实现和另一台windows系统共享鼠标
1,搜索synergy就能找到很多安装和配置的博客文章. 2,我遇到的问题: 1,在linux(deepin)上安装1.8.8版本报出找不到依赖libssl.so.1.0.0的错误,导致无法成功启动软 ...