前言:腳本和文檔都是老早就寫好的,這周發現fofa新版出來了,就把舊版的薅羊毛完整腳本分享給大家。文章主要是介紹這種腳本的編寫思路,給編程新手提供一個思路參考,比起 requests+re 我更推薦大家使用 requests+bs4 獲取信息。

腳本語言:python2.7

白嫖與付費

付費肯定有更好的服務,但是就是喜歡薅羊毛的快樂。能付費盡量付費吧,如果你付費了這個腳本使用起來更安逸。

非api原因

根據網站vip功能介紹,可以看到“註冊用戶”和“普通會員”使用api都是虧本買賣,如果想用api就開svip才最安逸

Fofa與BeautifulSoup

Fofa 的搜索語法

返回頭              header=”200″

國家                   country=”CN”

頁面內容         body=”phpweb”

網頁頭              title=”公司”

端口                   port=”443″

網站年份         after=”2020-01-01″

BeautifulSoup

注:一般搭建好網站不會輕易更改網頁標籤類型,所以使用標籤提取比正則匹配能讓腳本“活得更久”

定位網頁標籤

soup.find(name="input", attrs={"id": "total_entries"})
soup.find_all(name="div", attrs={"class": "list_mod"})

獲取標籤值

yourdiv.attrs['value']

獲取ul內的li值

執行搜索操作

打開fofa官網 https://fofa.so/ ,搜索熱門關鍵字,可以看到url請求爲

https://fofa.so/result?qbase64= xxx

其中qbase64的值就是搜索字符串“base64編碼+url編碼”的結果,這裏需要注意中文問題,需要將中文先gbk解碼,再用base64庫編碼(我本機是gbk編碼,所以輸入的中文也是gbk編碼,如果你的機器是utf-8編碼就改爲utf-8,沒測)

code = key.decode()
 code = urllib.quote(base64.b64encode(code))

這裏遇到個問題一直沒整明白,上面那種方式可以成功,但是下面這種使用方式卻失敗了,如果有人知道原因請留言或私信給我。

code = urllib.quote(base64.b64encode(key.decode('gbk')))

代碼

獲取頁面搜索結果

使用瀏覽器自帶調試功能查看html框架,可以看到我們搜索結果都在“<div>”標籤下,每一個“<divclass=”list_mod”>”標籤是一條信息

一個list_mod標籤包含一個目標的全部信息

代碼,其中divs就是全部目標列表

定位單條目標信息

選取單個目標的標籤點開分析,可以看到標籤有list_mod_t和list_mod_c兩個子標籤

而元素a就是可以直接跳轉的鏈接,從這裏提取到目標的url或者IP

而目標下面的介紹其實是一個ul列表,這部分信息也比較重要,所以我也提取了

代碼

其中列表信息沒做詳細分類提取,也沒有把他寫入到文件,內存里長這樣

關於URL存活狀態

在單個目標的右邊有他的響應碼,我是根據這個來確定的存活,當然你也可以自己請求一下提取的URL來判斷存活,如果只需要200的網站就在查詢時使用header=”200″;代碼中獲取的是右側整個字符串,大家根據需要自行修改代碼就行

代碼

翻頁問題

我們知道目標總數除以10後加1就是頁數,所以要提取目標總數,依舊是根據網頁標籤定位提取數據

代碼如下

知道總頁數怎麼翻頁呢?

通過api規則知道請求中的page參數決定當前頁面(或者看網頁【下一頁】的鏈接),測試中發現有請求頻率限制,做下防封延時就行

代碼如下

網站cookie

Fofa現在登陸需要進行驗證了,無法直接用戶名密碼登陸,所以我使用的cookie驗證身份。

自定義數據輸出

在按頁獲取函數中修改數據處理方式,解除註冊會員限制

腳本中是將鏈接追加到指定txt文件中,其它信息只是獲取了,並沒有輸出

腳本使用

使用命令參數輸入關鍵字和cookie,會輸出總數,提示每頁有多少條存活,其他信息輸出自行修改腳本

注意titile 、app 等使用方法,如果網頁搜索欄是這樣的

app=”BEA-WebLogic-Server”

那麼命令行這樣輸入

“app=\”BEA-WebLogic-Server\”"

輸出總數和網頁搜索總數一致(沒有帶國家參數)

Hreffile.txt內容

完整代碼

代碼已上傳 aHR0cHM6Ly9naXRodWIuY29tL21veXV3YS9mb2ZhLXNlYXJjaC1yZXN1bHQtcmVx

註冊會員,通過城市枚舉和搜索條件定義,能薅200~400條數據吧,足夠大家學習完漏洞後做實踐了,相關漏洞差不多能有1/15的存在比例。

其實有想過獲取頁面左側的城市信息,但是太麻煩了就無腦枚舉了,後續大家可以做做”url去重“和”自定義存活確認(有的url訪問過去就是網站自定義404頁面)“。

*本文作者:難再見,轉載請註明來自FreeBuf.COM 

相關文章