美文网首页
sql-labs less33-35 宽字节注入

sql-labs less33-35 宽字节注入

作者: Yix1a | 来源:发表于2019-05-20 22:06 被阅读0次
  • 转自一个不知名大佬的笔记
    ---------------------------------less-33-------------------------------------

原url:

http://192.168.137.138/sqli-labs-master/Less-33

按照提示添加id值


               AddSlashes()

定义和用法

addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。

预定义字符是:

*单引号(')

*双引号(")

*反斜杠(\)

*NULL

提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串。
注释:默认地,PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

实例:

<?php
str = "Who's Bill Gates?"; echostr . " This is not safe in a database query.
";
echo addslashes($str) . " This is safe in a database query.";
?>

运行结果

Who's Bill Gates? This is not safe in a database query.
Who's Bill Gates? This is safe in a database query.


前台测试

添加 ' 和 "

页面返回没有变化

页面hint:

Hint: The Query String you input is escaped as : 2'
The Query String you input in Hex becomes : 325c27

和 less-32 有点类似哈

先用 %bf 来试试(宽字节注入)

语句:

1%bf'

效果如下:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1?'' LIMIT 0,1' at line 1

由页面反馈的信息,得知 闭合条件 是 '

后面的注入方式一样,直接 union select

-----------------------------------less-34-----------------------------------

原url:

http://192.168.137.138/sqli-labs-master/Less-34

由页面看出,这是一个 post 注入

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

这里说一个 hackbar 的小技巧:

之前,每次注入练习,我都是从 url 框中 复制到 hackbar 中,其实有个按钮:

Load URL 这个,点一下,直接获取url(要先访问)

同样的

post注入的时候

(先提交一个用户名和密码(正确和错误都无所谓))然后点 Load URL ,就自动获取了

post格式了

Referrer 注入相同的原理

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

观察到,当 用户名 和 密码 都是正确的时候(也就是成功登陆)

会反馈用户名和密码 的信息

那么 在 成功登陆 后 使用 联合查询 速度更快

不过 在测试 闭合条件的时候,返回效果如下:

Hint: The Username you input is escaped as : admin'
Hint: The Password you input is escaped as : 123

转义了,用上节课的知识

' 前面 加上 一个 81~FE 的 高位 url编码 比如:%ee

效果如下:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123' LIMIT 0,1' at line 1

页面hint:

Hint: The Username you input is escaped as : admin?'
Hint: The Password you input is escaped as : 123

成功绕过转义

从 语法 错误信息 中 看出,闭合条件不知道有没有猜测正确,

那么现在试试 ') 的闭合条件

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' and password='123' LIMIT 0,1' at line 1

从 password='123' 看出:闭合条件就是 '

联合查询:

Your Login name:1
Your Password:2

接下来就不细说了

--------------------------------------less-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");//宽字节注入的必备条件,设置宽字节字符集,若不设置,那么宽字节注入无效,因为 mysql 不会按照 宽字节 的理解方式 去组合 %bf%5c,那么单引号也无法逃逸了

sql="SELECT * FROM users WHERE id=id LIMIT 0,1";

id根本就没有 设置闭合条件

上来就直接 union select

所以,这个练习中,addslshes 就是个摆设,因为不用其他字符,也就不用考虑 被转义的问题了

---------------------------------less-33的源码-------------------------------

<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");

function check_addslashes(string) {string= addslashes(string); //转义处理 returnstring;
}

// 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);

if($row)
{
echo '<font color= "#00FF00">'; 
echo 'Your Login name:'. $row['username'];
echo "<br>";
echo 'Your Password:' .$row['password'];
echo "</font>";
}
else 
{
echo '<font color= "#FFFF00">';
print_r(mysql_error());
echo "</font>";  
}

}
else { echo "Please input the ID as parameter with numeric value";}

?>
</font> </div></br></br></br><center>
<img src="../images/Less-33.jpg" />
</br>
</br>
</br>
</br>
</br>
<font size='4' color= "#33FFFF">
<?php
function strToHex(string) {hex='';
for (i=0;i < strlen(string);i++)
{
hex .= dechex(ord(string[i])); } returnhex;
}
echo "Hint: The Query String you input is escaped as : ".id ."<br>"; echo "The Query String you input in Hex becomes : ".strToHex(id);
?>

相关文章

  • sql-labs less33-35 宽字节注入

    转自一个不知名大佬的笔记---------------------------------less-33-----...

  • sql-labs less32 宽字节注入

    转自一个不知名大佬的笔记--------------------------------less-32------...

  • Mysql注入-宽字节注入,二次编码注入

    宽字节注入 造成宽字节注入的原因,主要是因为使用了宽字节编码,导致一些字符被绕过 当我们注入 1' 时,若被转义成...

  • 宽字节注入

    宽字节注入 原理:宽字节(两字节)带来的安全问题主要是吃ASCII字符(一字节)的现象,使用一些特殊字符来”吃掉“...

  • 宽字节注入

    概述 首先要先了解一个宽字节注入,宽字节注入主要是源于程序员设置数据库编码与php编码设置为不同的两个编码,这样就...

  • PHP宽字节注入

    在PHPMySql语句中存在着宽字节注入漏洞,MySQL宽字节注入漏洞是SQL注入漏洞攻防技术相互促进的一个典型例...

  • sql注入 | 宽字节注入

    路漫漫其修远兮,吾将上下而求索。 mysql 在使用 GBK 编码的时候,会认为两个字符为一个汉字,例如%aa%...

  • sql注入-宽字节注入

    宽字节注入原理 当数据库编码方式为gdk时,一个汉字会占用两个字节,平常字符会占一个字节 例如:你 url编码之后...

  • mysql宽字节注入

    宽字节注入主要来自程序员设置数据库编码为非英文编码就有可能产生宽字节注入,典型情景是网站使用GBK编码,数据库使用...

  • 墨者学院-SQL手工注入漏洞测试(MySQL数据库)

    思路:1.判断是否存在注入点。使用and、or、’,判断是否有注入,是否存在宽字节注入.是否存在http头注入以及...

网友评论

      本文标题:sql-labs less33-35 宽字节注入

      本文链接:https://www.haomeiwen.com/subject/isnkzqtx.html