亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mysql 簡單注入疑問

mysql 簡單注入疑問

蠱毒傳說 2018-09-01 15:07:45
mysql數據庫表user結構如圖,php版本5.4.31$uid="1'; select * FROM user;";直接用:$result=mysql_query("select * from user where uid='$uid' ");mysql_error()顯示`You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * FROM user;'' at line 1`和用pdo查詢:$sql="select * from user where uid='$uid' ";$res=$pdo->query($sql);顯示$res是空請問大神我構造的mysql注入語句是不是有錯...我主要目的是想測試不同的mysql注入語句,pdo_mysql的防護性
查看完整描述

2 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

mysql_query時,拼接的SQL語句是,是不合法的

select * from user where uid='1'; select * FROM user;'

想辦法把單獨的'閉合,改成下面的代碼就可以了:

$uid="1'; select * FROM user where uid='";

PDO會自動轉義,查詢的以下語句,所以為空。

select * from user where uid='1\'; select * FROM user;'


查看完整回答
反對 回復 2018-09-09
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

$uid="1'; select * FROM user;";這種聲明其實和你的測試沒關系,反而造成困擾,你可以直接測試
mysql_query("select * from user where uid=1; select * from user")。我沒深入研究過這個東西,但是你的兩種測試是等價的,都會被注入。

最簡單的注入問題例子是 $username = "It's test",然后被執行的時候變成 "select * from user where username='It's test",引發語法錯誤。而PDO等通過預處理防止此類問題,如 $pdo->query("select * from user where username=?", array("It's test"));此時會適當轉意起到防注入作用,但是像你的例子中直接$pdo->query($sql)這種用法,防護機制此時根本不會產生任何效果的。

大意如此,自己理解吧。

最近工作很忙,大部分邀請都只好忽略了,偶爾回答幾個也沒時間說太多,只能說抱歉了。


查看完整回答
反對 回復 2018-09-09
  • 2 回答
  • 0 關注
  • 756 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號