php sprintf函式引起的sql注入

2021-10-03 18:47:13 字數 756 閱讀 5803

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

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

strcpy函式引起的思考

不呼叫庫函式,實現strcpy函式。解釋為什麼要返回char 解說 strcpy的實現 char strcpy char strdest,const char strsrc if null strdest null strsrc 1 throw invalid argument s 2 char s...

malloc函式引起的意外錯誤

在實現乙個簡單的字元對應函式的過程中發現了這個不算是bug的錯誤 這個錯誤出現的前提是這樣的 main函式如下 int main int argc,char argv getnodename函式 char getnodename int num printf n nout of the switch...

VC 乙個函式引起的思考

windows一些系統函式返回值是指標,例如 char far inet ntoa struct in addrin 這個函式傳入乙個結構,返回乙個指向字串的指標,一般c 程式設計中介面設計的時候對記憶體的使用都是堅持誰申請誰釋放,這樣才不會造成忘記釋放的記憶體洩漏問題。可是這個函式直接返回乙個指標...