安卓逆向
大佬們懟網(wǎng)站已經(jīng)懟的很兇了,實(shí)在無(wú)從下手的時(shí)候,可以從app上測(cè)測(cè),除了平時(shí)的APP抓包,我們還可以逆向app從而找到一些沒(méi)人懟過(guò)api或者服務(wù)器。
首先關(guān)于app的逆向方面,我推薦兩個(gè)工具
apktools和Android逆向助手
我們之間用apktools逆向app即可
apktool d app-release.apk
在逆向之后會(huì)發(fā)現(xiàn)文件夾里有smali_classes文件夾,這里存放了一些后綴為.smali文件,
在這里可以找到一些url,但是由于內(nèi)容太多,一個(gè)個(gè)點(diǎn)開(kāi)很麻煩,我寫(xiě)了個(gè)小python腳本,把里面的url提取出來(lái)
!!不過(guò)注意我這個(gè)腳本跑的挺慢的,例如smali_classes1 smali_classes2,腳本放在這種里面的文件夾內(nèi),不然要跑多久我也不知道!!
get_url.py python2
然后會(huì)得到一個(gè)都是url的文件,對(duì)其測(cè)試或許可以找到一些漏洞#coding=utf-8
import os
import re
result = []
def get_all(cwd):
global text
get_dir = os.listdir(cwd) #遍歷當(dāng)前目錄,獲取文件列表
for i in get_dir:
sub_dir = os.path.join(cwd,i) # 把第一步獲取的文件加入路徑
if os.path.isdir(sub_dir): #如果當(dāng)前仍然是文件夾,遞歸調(diào)用
get_all(sub_dir)
else:
ax = os.path.basename(sub_dir) #如果當(dāng)前路徑不是文件夾,則把文件名放入列表
result.append(ax)
#打開(kāi)文件疊加讀取
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+' ' for line in url])
if __name__ == "__main__":
cur_path = os.getcwd() #當(dāng)前目錄
text=""
get_all(cur_path)
write_url()
當(dāng)然在這里測(cè)的時(shí)候,找到了一些api訪問(wèn)要帶參數(shù),關(guān)于參數(shù)可以用一款叫Android逆向助手,先點(diǎn)擊提取dex然后再dex轉(zhuǎn)jar
然后ctrl+shift+s就可以全局搜索url,然后讀他源碼來(lái)看看需要傳入什么參數(shù)
關(guān)于目錄爆破的一點(diǎn)小腳本
在查找到一些子域名之后,不妨之間爆破一些他的目錄,有時(shí)候可能會(huì)有意外發(fā)現(xiàn)
我會(huì)在我的服務(wù)器上運(yùn)行一個(gè)小shell腳本來(lái)對(duì)這些子域名進(jìn)行目錄掃描,我用的是dirsearchhttps://github.com/maurosoria/dirsearch
dir.sh
for line in `cat url`
do
timeout 300s python3 dirsearch.py -u $line -e *
done
目錄下有url這個(gè)文件,他存放著一些我們的url,可以是平時(shí)的子域名,也可以是上面的逆向出來(lái)的一些url,dirsearch一般不用太長(zhǎng)時(shí)間就可以跑完,掃崩了的情況可以用timeout來(lái)限制他跑一次的時(shí)間,這樣就不怕卡死了。
dirsearch掃描結(jié)果在reports文件夾下,可以切換進(jìn)去
然后用個(gè)類似上面的腳本來(lái)把這些掃描結(jié)果整合在一起
reports.py
#coding=utf-8
import os
result = []
def get_all(cwd):
global text
get_dir = os.listdir(cwd) #遍歷當(dāng)前目錄,獲取文件列表
for i in get_dir:
sub_dir = os.path.join(cwd,i) # 把第一步獲取的文件加入路徑
if os.path.isdir(sub_dir): #如果當(dāng)前仍然是文件夾,遞歸調(diào)用
get_all(sub_dir)
else:
ax = os.path.basename(sub_dir) #如果當(dāng)前路徑不是文件夾,則把文件名放入列表
result.append(ax)
#打開(kāi)文件疊加讀取
f=open(sub_dir,"r")
text=text+f.read()
if __name__ == "__main__":
cur_path = os.getcwd() #當(dāng)前目錄
text=""
get_all(cur_path)
rs=open("rs.txt","w+")
rs.write(text)
然后得到掃描結(jié)果rs,txt 這樣就可以直接查看所有掃描結(jié)果了
小弟不才,不會(huì)太多自動(dòng)化的東西,只能用點(diǎn)小腳本來(lái)代替重復(fù)勞動(dòng),第一次發(fā)帖,大佬們多多包涵。
審核編輯 :李倩
-
Android
+關(guān)注
關(guān)注
12文章
3935瀏覽量
127350 -
SRC
+關(guān)注
關(guān)注
0文章
60瀏覽量
17983 -
腳本
+關(guān)注
關(guān)注
1文章
389瀏覽量
14858
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論