PHP手動注入教程
2023/1/7 22:11:15 點擊:
判斷是否存在注入:
首先,PHP在一個動態(tài)連接后面加上and 1=1,and 1=2看其返回結(jié)果即可判斷.兩次返回結(jié)果不相同,即可初步判斷為有注入點.
判斷字段大小:接下來,對付php猜字段的方法,我們用order by.語法如下:
http://127.0.0.1/1.php?id=1 order by 40 //如果返回正常,說明實際的字段要比40大.那么我們繼續(xù)加.一直加到返回錯誤.
譬如當http://127.0.0.1/1.php?id=1 order by 45 的時候出錯了,那么我們就知道字段大小為44.
UNION SELECT:知道字段大小以后,我們就用union select聯(lián)合查詢來列出所有字段.
你就可以在回顯出來的相應的字段上,替換你要查詢的字段名,再from表明.就可以得到相應的字段內(nèi)容了.譬如:
幾個常用的MYSQL函數(shù):好 了,現(xiàn)在我們把字段都列出來了.估計這時候有人就該急急忙忙的加from來猜密碼了.實際上,猜測密碼走后臺這一招,我們應該放在最后.有人說MYSQL 的功能,和ACCESS一樣,甚至還不如,這其實是誤解,冤枉了MYSQL.我們下面來看看,MYSQL都有些什么高級的運用.
這里首先列出幾個常用的函數(shù):
他們的含義分別如下:
1:系統(tǒng)用戶名.
2:用戶名.
3:當前用戶名:
4連接數(shù)據(jù)庫的用戶名.
5:數(shù)據(jù)庫名.
6:數(shù)據(jù)庫版本.
7:MYSQL讀取本地文件的函數(shù)
他們都有什么用?1-6的作用如下:
這幾個函數(shù)翻回來的信息在檢測過程中具有非常重要的作用,他們對我們了解目標,分析目標,尋找漏洞,開闊思路等等都有莫大的作用.譬如了解系統(tǒng)的版本,了解數(shù)據(jù)庫是否支持union,當前用戶是否ROOT用戶的初步判斷等等...函數(shù)7的作用就更大了,我們接下來單獨說.
專說load_file()函數(shù)的作用與技巧.
OK.load_file 是MYSQL用來讀取本地文件時,會用到的函數(shù).在我們注入時的權(quán)限可以讀寫文件時,load_file就有無比巨大的作用了.怎么判斷有我們注入點的權(quán)限呢?很簡單,在注入點后加上and (select count(*) from mysql.user)>0/*如果結(jié)果返回正常,那么就是具有讀寫權(quán)限了.我們就可以用這個函數(shù)去讀取系統(tǒng)的敏感文件,去尋找配置文件,尋找數(shù)據(jù) 庫連接文件,尋找社工文件,尋找WEB物理路徑等等.下面,我給大家總結(jié)出了敏感文件列表:
WINDOWS下:
LUNIX/UNIX下:
FreeBSD下:
大概有朋友看到這里就該叫了,這都什么啊.char()是什么呀?后面一大串又是什么啊?
實際上,就算你擁有讀和寫權(quán)限的一個注入點,如果你直接執(zhí)行l(wèi)oad_file(c:\boot.ini),一般都回顯不了,遇到這樣的情況,你有兩個選擇.1把路徑轉(zhuǎn)為16進制,直接提交數(shù)據(jù)庫.2把路徑轉(zhuǎn)為10進制,用char()函數(shù)還原回ASCII.
譬 如c:\boot.ini,轉(zhuǎn)換為16進制就是:"0x633A5C626F6F742E696E69",然后你直接用 load_file(0x633A5C626F6F742E696E69)就可以了. 如果轉(zhuǎn)換為10進制,那么就是:"99 58 92 98 111 111 116 46 105 110 105".你需要使用char()來轉(zhuǎn)換,轉(zhuǎn)換之前,你需要在TXT里做個批量替換,把空格都轉(zhuǎn)為","號.
即:load_file(char(99,58,92,98,111,111,116,46,105,110,105)).注意不要少了擴號,都是對稱的。
只要把load_file()放到頁面出現(xiàn)的字段上,最好保證有足夠位置能顯示完你要顯示的文件.實在沒有足夠位置也不緊張,下面我再教你幾招.
1: 有時候,你明明確認自己擁有讀和寫文件的權(quán)利,卻硬是讀不出來文件,或者一片空白.為什么?原因可能是對方的系統(tǒng)在權(quán)限配置上做的好,你的USER權(quán)限, 讀不到他ADMINISTRATOR里的文件.NTFS和LINUX都能做到這點.如果你排除以上情況,你就要考慮,是不是你讀出來的內(nèi)容,被瀏覽器當作 HTML,ASP,PHP,ASPX,JSP等等的腳本語言給執(zhí)行了?
譬如你讀出來的內(nèi)容如果含有
怎么代替?我們有replace(load_file(A),char(B),char(C))函數(shù)在!當你讀A文件出來的時候,如果里面有B字母或者符 號,那么MYSQL會用C字母或者符號去代替B,然后再顯示出來.OK.
我們這么一換 上:str_replace(load_file(A)),char(60),char(32)).這里一樣用的CHAR()函數(shù)轉(zhuǎn)換為字母即一旦出 現(xiàn)"
2:所有的字段位置都不夠位置回顯,讀到的文件不完整哦,又不是 上面的原因,那么怎么辦呢?這里我們用Substring(str,pos,len)函數(shù)解決問題.意思是從字符串str的pos位位置起返回len 個字符的子串.
譬如Substring(load_file(A),50,100)就是把A的內(nèi)容的第50個字母開始回顯100個給你.那么就能逐段逐段的回顯啦.
into outfile的高級運用!
OK.load_file()我們就說那么多了.接下來,我們還有許多的重頭戲要來呢!這里,我要說下一個很重要的運用方法,也正是我著重參考劍心幾部作品的技術(shù)的部分.當我們確定如下幾個條件以后:
1獲得物理路徑(into outfile '物理路徑') 這樣才能寫對目錄
2能夠使用union (也就是說需要MYSQL3以上的版本)
3對方?jīng)]有對’進行過濾(因為outfile 后面的 '' 不可以用其他函數(shù)代替轉(zhuǎn)換)
4就是MYSQL用戶擁有file_priv權(quán)限(不然就不能寫文件 或者把文件內(nèi)容讀出)
5對web目錄有寫權(quán)限MS的系統(tǒng)一般都有權(quán)限,但是LINUX通常都是rwxr-xr-x 也就是說組跟其他用戶都沒有權(quán)限寫操作.
這里的1,我們一般可以靠數(shù)據(jù)庫出錯信息來爆出來,不行的話,也可以通過load_file()來得到.2那是一般都可以的了...3也不多見對'''過濾 的.4有沒有權(quán)限,我們前面已經(jīng)測試過的了.5如果不能備份到網(wǎng)站的路徑上來,我們也還有別的辦法,譬如到starup,run里面去等等社工的辦法.而 且一般多試試上傳目錄,圖片目錄,還是大部分都有讀寫權(quán)限的.
OK.需要的條件確定了,那怎么用呢?我們分開兩部來說用法.
用法1:這是中規(guī)中矩的用法,大家都知道.就是采用網(wǎng)站有的留言,上傳等功能,把你的一句話馬弄上去,然后使用
用法2,也是重點要說的.上面的方法,局限性還是比較大的,如果網(wǎng)站不給你上傳,或者網(wǎng)站過濾上傳的內(nèi)容,那怎么辦?不用怕,劍心早在幾年前就給我們想到了個好辦法.我們只需要直接這么執(zhí)行URL:
譬如
或者
或者
3,4,5,6為假設存在字段,/www/home/html/為假設的WEB路徑
首先,PHP在一個動態(tài)連接后面加上and 1=1,and 1=2看其返回結(jié)果即可判斷.兩次返回結(jié)果不相同,即可初步判斷為有注入點.
判斷字段大小:接下來,對付php猜字段的方法,我們用order by.語法如下:
http://127.0.0.1/1.php?id=1 order by 40 //如果返回正常,說明實際的字段要比40大.那么我們繼續(xù)加.一直加到返回錯誤.
譬如當http://127.0.0.1/1.php?id=1 order by 45 的時候出錯了,那么我們就知道字段大小為44.
UNION SELECT:知道字段大小以后,我們就用union select聯(lián)合查詢來列出所有字段.
你就可以在回顯出來的相應的字段上,替換你要查詢的字段名,再from表明.就可以得到相應的字段內(nèi)容了.譬如:
幾個常用的MYSQL函數(shù):好 了,現(xiàn)在我們把字段都列出來了.估計這時候有人就該急急忙忙的加from來猜密碼了.實際上,猜測密碼走后臺這一招,我們應該放在最后.有人說MYSQL 的功能,和ACCESS一樣,甚至還不如,這其實是誤解,冤枉了MYSQL.我們下面來看看,MYSQL都有些什么高級的運用.
這里首先列出幾個常用的函數(shù):
他們的含義分別如下:
1:系統(tǒng)用戶名.
2:用戶名.
3:當前用戶名:
4連接數(shù)據(jù)庫的用戶名.
5:數(shù)據(jù)庫名.
6:數(shù)據(jù)庫版本.
7:MYSQL讀取本地文件的函數(shù)
他們都有什么用?1-6的作用如下:
這幾個函數(shù)翻回來的信息在檢測過程中具有非常重要的作用,他們對我們了解目標,分析目標,尋找漏洞,開闊思路等等都有莫大的作用.譬如了解系統(tǒng)的版本,了解數(shù)據(jù)庫是否支持union,當前用戶是否ROOT用戶的初步判斷等等...函數(shù)7的作用就更大了,我們接下來單獨說.
專說load_file()函數(shù)的作用與技巧.
OK.load_file 是MYSQL用來讀取本地文件時,會用到的函數(shù).在我們注入時的權(quán)限可以讀寫文件時,load_file就有無比巨大的作用了.怎么判斷有我們注入點的權(quán)限呢?很簡單,在注入點后加上and (select count(*) from mysql.user)>0/*如果結(jié)果返回正常,那么就是具有讀寫權(quán)限了.我們就可以用這個函數(shù)去讀取系統(tǒng)的敏感文件,去尋找配置文件,尋找數(shù)據(jù) 庫連接文件,尋找社工文件,尋找WEB物理路徑等等.下面,我給大家總結(jié)出了敏感文件列表:
WINDOWS下:
LUNIX/UNIX下:
FreeBSD下:
大概有朋友看到這里就該叫了,這都什么啊.char()是什么呀?后面一大串又是什么啊?
實際上,就算你擁有讀和寫權(quán)限的一個注入點,如果你直接執(zhí)行l(wèi)oad_file(c:\boot.ini),一般都回顯不了,遇到這樣的情況,你有兩個選擇.1把路徑轉(zhuǎn)為16進制,直接提交數(shù)據(jù)庫.2把路徑轉(zhuǎn)為10進制,用char()函數(shù)還原回ASCII.
譬 如c:\boot.ini,轉(zhuǎn)換為16進制就是:"0x633A5C626F6F742E696E69",然后你直接用 load_file(0x633A5C626F6F742E696E69)就可以了. 如果轉(zhuǎn)換為10進制,那么就是:"99 58 92 98 111 111 116 46 105 110 105".你需要使用char()來轉(zhuǎn)換,轉(zhuǎn)換之前,你需要在TXT里做個批量替換,把空格都轉(zhuǎn)為","號.
即:load_file(char(99,58,92,98,111,111,116,46,105,110,105)).注意不要少了擴號,都是對稱的。
只要把load_file()放到頁面出現(xiàn)的字段上,最好保證有足夠位置能顯示完你要顯示的文件.實在沒有足夠位置也不緊張,下面我再教你幾招.
1: 有時候,你明明確認自己擁有讀和寫文件的權(quán)利,卻硬是讀不出來文件,或者一片空白.為什么?原因可能是對方的系統(tǒng)在權(quán)限配置上做的好,你的USER權(quán)限, 讀不到他ADMINISTRATOR里的文件.NTFS和LINUX都能做到這點.如果你排除以上情況,你就要考慮,是不是你讀出來的內(nèi)容,被瀏覽器當作 HTML,ASP,PHP,ASPX,JSP等等的腳本語言給執(zhí)行了?
譬如你讀出來的內(nèi)容如果含有
怎么代替?我們有replace(load_file(A),char(B),char(C))函數(shù)在!當你讀A文件出來的時候,如果里面有B字母或者符 號,那么MYSQL會用C字母或者符號去代替B,然后再顯示出來.OK.
我們這么一換 上:str_replace(load_file(A)),char(60),char(32)).這里一樣用的CHAR()函數(shù)轉(zhuǎn)換為字母即一旦出 現(xiàn)"
2:所有的字段位置都不夠位置回顯,讀到的文件不完整哦,又不是 上面的原因,那么怎么辦呢?這里我們用Substring(str,pos,len)函數(shù)解決問題.意思是從字符串str的pos位位置起返回len 個字符的子串.
譬如Substring(load_file(A),50,100)就是把A的內(nèi)容的第50個字母開始回顯100個給你.那么就能逐段逐段的回顯啦.
into outfile的高級運用!
OK.load_file()我們就說那么多了.接下來,我們還有許多的重頭戲要來呢!這里,我要說下一個很重要的運用方法,也正是我著重參考劍心幾部作品的技術(shù)的部分.當我們確定如下幾個條件以后:
1獲得物理路徑(into outfile '物理路徑') 這樣才能寫對目錄
2能夠使用union (也就是說需要MYSQL3以上的版本)
3對方?jīng)]有對’進行過濾(因為outfile 后面的 '' 不可以用其他函數(shù)代替轉(zhuǎn)換)
4就是MYSQL用戶擁有file_priv權(quán)限(不然就不能寫文件 或者把文件內(nèi)容讀出)
5對web目錄有寫權(quán)限MS的系統(tǒng)一般都有權(quán)限,但是LINUX通常都是rwxr-xr-x 也就是說組跟其他用戶都沒有權(quán)限寫操作.
這里的1,我們一般可以靠數(shù)據(jù)庫出錯信息來爆出來,不行的話,也可以通過load_file()來得到.2那是一般都可以的了...3也不多見對'''過濾 的.4有沒有權(quán)限,我們前面已經(jīng)測試過的了.5如果不能備份到網(wǎng)站的路徑上來,我們也還有別的辦法,譬如到starup,run里面去等等社工的辦法.而 且一般多試試上傳目錄,圖片目錄,還是大部分都有讀寫權(quán)限的.
OK.需要的條件確定了,那怎么用呢?我們分開兩部來說用法.
用法1:這是中規(guī)中矩的用法,大家都知道.就是采用網(wǎng)站有的留言,上傳等功能,把你的一句話馬弄上去,然后使用
用法2,也是重點要說的.上面的方法,局限性還是比較大的,如果網(wǎng)站不給你上傳,或者網(wǎng)站過濾上傳的內(nèi)容,那怎么辦?不用怕,劍心早在幾年前就給我們想到了個好辦法.我們只需要直接這么執(zhí)行URL:
譬如
或者
或者
3,4,5,6為假設存在字段,/www/home/html/為假設的WEB路徑
以上是以前的php,PHP5.6以下的版本,目前的php已經(jīng)規(guī)避了很多問題。
文章來源:騰訊,如涉及到版權(quán)問題,請聯(lián)系網(wǎng)站管理員刪除!
- 上一篇:RocketMQ 客戶端負載均衡機制詳解及最佳實踐 2023/1/7
- 下一篇:5個常用的大數(shù)據(jù)可視化分析工具 2023/1/7