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

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

如何從“Bobby Tables”XKCD漫畫中注入SQL?

如何從“Bobby Tables”XKCD漫畫中注入SQL?

慕的地10843 2019-05-20 16:46:58
這個SQL做了什么:Robert'); DROP TABLE STUDENTS; --我知道這兩個'并且--是用于評論,但是這個詞也沒有DROP被評論,因為它是同一行的一部分?
查看完整描述

6 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

它放下了學生桌。

學校計劃中的原始代碼可能看起來像

q = "INSERT INTO Students VALUES ('" + FNMName.Text + "', '" + LName.Text + "')";

這是將文本輸入添加到查詢中的天真方式,非常糟糕,正如您將看到的那樣。

在第一個名稱,中間名稱文本框FNMName.Text(即Robert'); DROP TABLE STUDENTS; --)和最后一個名稱文本框LName.Text(讓我們調用它Derper)的值與查詢的其余部分連接之后,結果現在實際上是由兩個查詢分隔的查詢語句終止符(分號)。第二個查詢已注入第一個查詢。當代碼對數據庫執行此查詢時,它將如下所示

INSERT INTO Students VALUES ('Robert'); DROP TABLE Students; --', 'Derper')

用簡單的英語粗略地翻譯成兩個查詢:

使用名稱值“Robert”向Students表添加新記錄

刪除學生表

超過第二個查詢的所有內容都標記為注釋: --', 'Derper')

'在學生的名字是不是一個評論,它的收盤字符串分隔符。由于學生的名字是一個字符串,因此在語法上需要完成假設的查詢。注入攻擊僅在它們注入的SQL查詢產生有效SQL時才有效。


查看完整回答
反對 回復 2019-05-20
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

正如其他人已經指出的那樣,');關閉原始陳述,然后是第二個陳述。大多數框架(包括PHP等語言)到目前為止都有默認的安全設置,不允許在一個SQL字符串中使用多個語句。例如,在PHP中,您只能使用該mysqli_multi_query函數在一個SQL字符串中運行多個語句。

但是,您可以通過SQL注入操作現有的SQL語句,而無需添加第二個語句。假設你有一個登錄系統,用這個簡單的選擇來檢查用戶名和密碼:

$query="SELECT * FROM users WHERE username='" . $_REQUEST['user'] . "' and (password='".$_REQUEST['pass']."')";$result=mysql_query($query);

如果您提供peter用戶名和secret密碼,則生成的SQL字符串將如下所示:

SELECT * FROM users WHERE username='peter' and (password='secret')

一切安好?,F在假設您提供此字符串作為密碼:

' OR '1'='1

然后生成的SQL字符串將是這樣的:

SELECT * FROM users WHERE username='peter' and (password='' OR '1'='1')

這樣您就可以在不知道密碼的情況下登錄任何帳戶。因此,您不需要能夠使用兩個語句來使用SQL注入,但如果您能夠提供多個語句,則可以執行更具破壞性的操作。


查看完整回答
反對 回復 2019-05-20
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

單引號是字符串的開頭和結尾。分號是聲明的結尾。所以,如果他們做這樣的選擇:

Select *From StudentsWhere (Name = '<NameGetsInsertedHere>')

SQL將成為:

Select *From StudentsWhere (Name = 'Robert'); DROP TABLE STUDENTS; --')--             ^-------------------------------^

在某些系統上,select會首先運行,然后是drop語句!消息是:不要將值嵌入到您的SQL中。而是使用參數!


查看完整回答
反對 回復 2019-05-20
  • 6 回答
  • 0 關注
  • 929 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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