關於SRC挖掘的一點小指令碼
大佬們懟網站已經懟的很凶了,實在無從下手的時候,可以從app上測測,除了平時的APP抓包,我們還可以逆向app從而找到一些沒人懟過api或者伺服器。
首先關於app的逆向方面,我推薦兩個工具
apktools和Android逆向助手
我們之間用apktools逆向app即可
apktool d app-release.apk
在逆向之後會發現資料夾裡有smali_classes資料夾,這裡存放了一些字尾為.smali檔案,
在這裡可以找到一些url,但是由於內容太多,一個個點開很麻煩,我寫了個小python指令碼,把裡面的url提取出來
!!不過注意我這個指令碼跑的挺慢的,例如smali_classes1 smali_classes2,指令碼放在這種裡面的資料夾內,不然要跑多久我也不知道!!
get_url.py python2
#coding=utf-8 import os import re result = [] def get_all(cwd): global text get_dir = os.listdir(cwd)#遍歷當前目錄,獲取檔案列表 for i in get_dir: sub_dir = os.path.join(cwd,i)# 把第一步獲取的檔案加入路徑 if os.path.isdir(sub_dir):#如果當前仍然是資料夾,遞迴呼叫 get_all(sub_dir) else: ax = os.path.basename(sub_dir)#如果當前路徑不是資料夾,則把檔名放入列表 result.append(ax) #開啟檔案疊加讀取 f=open(sub_dir,"r") text=text+f.read() def write_url(): pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') url = re.findall(pattern,text) f2 = open("url.txt","w+") f2.writelines([line+'\n' for line in url]) if __name__ == "__main__": cur_path = os.getcwd()#當前目錄 text="" get_all(cur_path) write_url()
然後會得到一個都是url的檔案,對其測試或許可以找到一些漏洞
當然在這裡測的時候,找到了一些api訪問要帶引數,關於引數可以用一款叫Android逆向助手,先點選提取dex然後再dex轉jar
然後ctrl+shift+s就可以全域性搜尋url,然後讀他原始碼來看看需要傳入什麼引數
關於目錄爆破的一點小指令碼
在查詢到一些子域名之後,不妨之間爆破一些他的目錄,有時候可能會有意外發現
我會在我的伺服器上執行一個小shell指令碼來對這些子域名進行目錄掃描,我用的是dirsearch https://github.com/maurosoria/dirsearch
dir.sh
for line in `cat url` do timeout 300s python3 dirsearch.py -u $line -e * done
目錄下有url這個檔案,他存放著一些我們的url,可以是平時的子域名,也可以是上面的逆向出來的一些url,dirsearch一般不用太長時間就可以跑完,掃崩了的情況可以用timeout來限制他跑一次的時間,這樣就不怕卡死了。
dirsearch掃描結果在reports資料夾下,可以切換進去
然後用個類似上面的指令碼來把這些掃描結果整合在一起
reports.py
#coding=utf-8 import os result = [] def get_all(cwd): global text get_dir = os.listdir(cwd)#遍歷當前目錄,獲取檔案列表 for i in get_dir: sub_dir = os.path.join(cwd,i)# 把第一步獲取的檔案加入路徑 if os.path.isdir(sub_dir):#如果當前仍然是資料夾,遞迴呼叫 get_all(sub_dir) else: ax = os.path.basename(sub_dir)#如果當前路徑不是資料夾,則把檔名放入列表 result.append(ax) #開啟檔案疊加讀取 f=open(sub_dir,"r") text=text+f.read() if __name__ == "__main__": cur_path = os.getcwd()#當前目錄 text="" get_all(cur_path) rs=open("rs.txt","w+") rs.write(text)
然後得到掃描結果rs,txt 這樣就可以直接檢視所有掃描結果了
小弟不才,不會太多自動化的東西,只能用點小指令碼來代替重複勞動,第一次發帖,大佬們多多包涵。