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函數的特性了。
這樣單引號就注入成功了。