Shellcode は、Hello, World! と出力するものです。
私の環境では実行することができました
実行出来たとしても悪用しないでくださいね!!
###ソース
python
1import ctypes
2
3# Say Hello, World!
4shellcode_data = "\xeb\x19\x31\xc0\x31\xdb\x31\xd2\x31\xc9\xb0\x04"\
5 "\xb3\x01\x59\xb2\x0f\xcd\x80\x31\xc0\xb0\x01\x31"\
6 "\xdb\xcd\x80\xe8\xe2\xff\xff\xff\x48\x65\x6c\x6c"\
7 "\x6f\x2c\x20\x77\x6f\x72\x6c\x64\x21\x0a\x0d"
8
9
10# Load library
11libc = ctypes.CDLL('libc.so.6')
12
13# define
14PROT_NONE = 0x0
15PROT_READ = 0x1
16PROT_WRITE = 0x2
17PROT_EXEC = 0x4
18PAGE_SIZE = libc.getpagesize()
19
20def run():
21 shellcode = ctypes.create_string_buffer(shellcode_data, len(shellcode_data))
22 shellcode_addr = ctypes.addressof(shellcode)
23 protect_memory(shellcode_addr)
24
25 function = ctypes.cast(shellcode, ctypes.CFUNCTYPE(None))
26 function()
27
28def protect_memory(shellcode_addr):
29 start = (shellcode_addr // PAGE_SIZE) * PAGE_SIZE
30 end = shellcode_addr + len(shellcode_data)
31 step = PAGE_SIZE
32
33 for page in range(start, end, step):
34 assert libc.mprotect(page, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC) == 0
35 return 0
36
37if __name__ == '__main__':
38 run()
39
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/11/23 08:37
2016/11/23 08:51