php sprintf函数引起的sql注入

sprintf函数作用:

sprintf() 函数把格式化的字符串写入变量中。

arg1、arg2、++ 参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。

注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符位于 % 符号之后,由数字和 "\$" 组成

测试1.php文件:

<?php 
$name = $_GET['name'];
$name = mysql_escape_string(stripslashes($name));
$sql = sprintf("select * from product where name = '$name' and adddate <= '%s' limit 1",date("Y-m-d H:i:s"));
echo $sql;
?>

由于函数处理了$name所以直接单引号是不能被注入的,如图

这个时候就要利用sprintf函数的特性了。

这样单引号就注入成功了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章