addslashes()函数

addslashes() 函数是 PHP 中用于在字符串中的特定字符前添加反斜杠 \ 的函数。它通常用于准备字符串,以防止其中的字符被误解为具有特殊含义的字符。这个函数的主要用途是在构建 SQL 查询语句或其他需要转义特殊字符的上下文中,以防范一些安全问题,比如 SQL 注入。

<?php
$a = '"zx'; #对"
$b = "'zx"; #对'
$c = "\zx"; #对\
$d = "\\0zx"; #null(\0在ascii码中为null第一个\用来转义第二个\)
echo addslashes($a),"\n"; 
echo addslashes($b)."\n"; 
echo addslashes($c)."\n"; 
echo $d."\n";
echo addslashes($d)."\n"; 
?>
\"zx     
\'zx
\\zx
\0zx
\\0zx

从上面我们可以知道addslashes()函数对于特定字符“ ‘ \ NULL的处理

以[CISCN2019 总决赛 Day2 Web1]Easyweb举例

这里扫描目录发现*.php.bak在对页面查看源码发现image.php,尝试image.php.bak下载源码

<?php
include "config.php";

$id=isset($_GET["id"])?$_GET["id"]:"1";
$path=isset($_GET["path"])?$_GET["path"]:"";

$id=addslashes($id);
$path=addslashes($path);

$id=str_replace(array("\\0","%00","\\'","'"),"",$id);
$path=str_replace(array("\\0","%00","\\'","'"),"",$path);

$result=mysqli_query($con,"select * from images where id='{$id}' or path='{$path}'");
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);

$path="./" . $row["path"];
header("Content-Type: image/jpeg");
readfile($path);
?>

这里我们发现通过str_replace对\\0 %00 \' ' 替换为空

id的闭合为’

根据上面当id=\\0,传递后为\0通过addslashes()函数变成\\0

我们的值为\\0,但是真正赋值为\0(第一个\为转义符)

addslashes()处理因为这里的id值已经有转义符了所以不会进行处理值为为\\0

str_replace()中表示匹配\0(第一个为转义)

这里会匹配\0替换为空最后的值为\在语句中就是\'转义了'

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许允er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值