遇到的乙個php過濾問題

2021-07-11 13:53:46 字數 1248 閱讀 9497

在測試手工注入時發現乙個比較有意思的問題;這個問題是關於php過濾器的;主要用到的**段為filter_var($_get['id'],filter_sanitize_string);

**如下:

//傳值的連線

' and (select count(*) from msysobjects)>0 and '1'='1

$con = mysql_connect("127.0.0.1","root","");

if (!$con)

mysql_select_db("test", $con);

//第一段**

$id = $_get['id'];

$sql = "select * from user where id=''";

//第二段**

//$id = filter_var($_get['id'],filter_sanitize_string);

//$sql = "select * from user where id=''";

echo $sql;

$sql = "select * from user where id='1' and (select count(*) from msysobjects)>0 and '1'='1'";

$result = mysql_query($sql);

while($row = mysql_fetch_array($result))

mysql_close($con);

兩次列印出來的sql語句都是一樣的;如下:

select * from user where id='1' and (select count(*) from msysobjects)>0 and '1'='1'

但第一段程式報錯,第二段程式可以正常查出結果;

php文件上也寫的很模糊;最後把兩次的sql列印出來,有了收穫;

兩次列印id的結果:

string '1' and (select count(*) from msysobjects)>0 and '1'='1' (length=54)

string '1' and (select count(*) from msysobjects)>0 and '1'='1' (length=70)

原來filter_var($_get['id'],filter_sanitize_string);將「'」進行了編碼轉換成了ƈ這樣就截斷了sql語句,使它能正常執行;在某些方面也避免了sql注入

return 時遇到的乙個問題

今天做業務時遇到了乙個問題 我公司 上游公司 需要接收到 下游公司返回 return 的乙個字串 string string notify 我公司 上游公司 接收到的字串 業務 當我公司 上游公司 接收到下游返回的是 keyi 時,system.out.println 成功 否則,system.ou...

今天遇到乙個奇怪的問題

想實現乙個使用者訪問頁面,得到使用者的外網位址 在公司上。程式是沒問題。正常獲取使用者的位址 測試 哪位遇到這樣的問題過。如下 string ip request.getheader x forwarded for if ip null ip.length 0 unknown equalsignor...

今天遇到乙個亂碼問題

用ecplise自動生成的servlet,會自動帶有這麼一句話 他被放在了 request.setcharacterencoding utf 8 response.setcharacterencoding utf 8 的前面,然後 的時候 request.getrequestdispatcher i...