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函數的特性了。

這樣單引號就注入成功了。

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