mepwn 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
mepwn-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,7 @@
1
+ Metadata-Version: 2.4
2
+ Name: mepwn
3
+ Version: 0.1.0
4
+ Summary: Pwn tools for aipno
5
+ Author-email: aipno <aipno@iswxl.cn>
6
+ Requires-Python: >=3.8
7
+ Requires-Dist: pwntools>=4.12.0
mepwn-0.1.0/README.md ADDED
File without changes
@@ -0,0 +1,17 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "mepwn"
7
+ version = "0.1.0"
8
+ description = "Pwn tools for aipno"
9
+ authors = [{ name = "aipno", email = "aipno@iswxl.cn" }]
10
+ requires-python = ">=3.8"
11
+ dependencies = [
12
+ "pwntools>=4.12.0"
13
+ ]
14
+
15
+ [tool.setuptools.packages.find]
16
+ where = ["src"]
17
+ include = ["mepwn", "mepwn.*"]
mepwn-0.1.0/setup.cfg ADDED
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,6 @@
1
+ # func
2
+ from .core import *
3
+ from .ret2csu import *
4
+
5
+ # dep
6
+ from pwn import *
File without changes
@@ -0,0 +1,71 @@
1
+ from pwn import *
2
+
3
+
4
+ def csu_payload(pop_addr, call_addr, func_ptr, rdi=0, rsi=0, rdx=0):
5
+ """
6
+ 构造 CSU gadget 的 payload
7
+
8
+ 参数说明:
9
+ pop_addr : pop rbx,rbp,r12,r13,r14,r15 gadget 的地址 (如 0x4005f6)
10
+ call_addr : mov + call gadget 的地址 (如 0x4005e0)
11
+ func_ptr : 要调用的函数地址 (放入 r12)
12
+ rdi : 第一个参数 (放入 r13d)
13
+ rsi : 第二个参数 (放入 r14)
14
+ rdx : 第三个参数 (放入 r15)
15
+
16
+ 返回:
17
+ 构造好的 payload 字节串
18
+ """
19
+ payload = p64(pop_addr)
20
+ payload += p64(0)
21
+ payload += p64(1)
22
+ payload += p64(func_ptr)
23
+ payload += p64(rdi)
24
+ payload += p64(rsi)
25
+ payload += p64(rdx)
26
+ payload += p64(call_addr)
27
+ payload += p64(0) * 6
28
+ return payload
29
+
30
+
31
+ def csu_payload_with_ret(
32
+ pop_addr, call_addr, func_ptr, rdi=0, rsi=0, rdx=0, ret_addr=None
33
+ ):
34
+ """
35
+ CSU payload + 返回地址控制
36
+
37
+ 用于需要在 CSU 调用后继续控制执行流的场景
38
+ """
39
+ payload = p64(pop_addr)
40
+ payload += p64(0) # rbx
41
+ payload += p64(1) # rbp
42
+ payload += p64(func_ptr) # r12
43
+ payload += p64(rdi) # r13 (edi)
44
+ payload += p64(rsi) # r14 (rsi)
45
+ payload += p64(rdx) # r15 (rdx)
46
+ payload += p64(call_addr) # 执行 gadget
47
+ payload += p64(0) * 7 # padding
48
+ if ret_addr:
49
+ payload += p64(ret_addr)
50
+ return payload
51
+
52
+
53
+ def csu_stack_pivot(pop_addr, call_addr, func_ptr, rdi=0, rsi=0, rdx=0, new_stack=None):
54
+ """
55
+ 堆栈迁移版本的 CSU
56
+
57
+ 通过 add rsp, 8 后的 pop 来控制返回地址,实现栈迁移
58
+ """
59
+ payload = p64(pop_addr)
60
+ payload += p64(0) # rbx
61
+ payload += p64(1) # rbp
62
+ payload += p64(func_ptr) # r12
63
+ payload += p64(rdi) # r13 (edi)
64
+ payload += p64(rsi) # r14 (rsi)
65
+ payload += p64(rdx) # r15 (rdx)
66
+ payload += p64(call_addr) # call gadget
67
+ payload += p64(0) # add rsp, 8 的位置
68
+ payload += p64(0) * 6 # pop ×6
69
+ if new_stack:
70
+ payload += p64(new_stack)
71
+ return payload
@@ -0,0 +1,7 @@
1
+ Metadata-Version: 2.4
2
+ Name: mepwn
3
+ Version: 0.1.0
4
+ Summary: Pwn tools for aipno
5
+ Author-email: aipno <aipno@iswxl.cn>
6
+ Requires-Python: >=3.8
7
+ Requires-Dist: pwntools>=4.12.0
@@ -0,0 +1,10 @@
1
+ README.md
2
+ pyproject.toml
3
+ src/mepwn/__init__.py
4
+ src/mepwn/core.py
5
+ src/mepwn/ret2csu.py
6
+ src/mepwn.egg-info/PKG-INFO
7
+ src/mepwn.egg-info/SOURCES.txt
8
+ src/mepwn.egg-info/dependency_links.txt
9
+ src/mepwn.egg-info/requires.txt
10
+ src/mepwn.egg-info/top_level.txt
@@ -0,0 +1 @@
1
+ pwntools>=4.12.0
@@ -0,0 +1 @@
1
+ mepwn