ctf-wiki / comment

4 stars 0 forks source link

基本 ROP - CTF Wiki #141

Open iromise opened 5 years ago

iromise commented 5 years ago

https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/basic-rop/

CTF Wiki

Chr1s-T commented 5 years ago

很给力,希望继续更新!

niedabao1 commented 5 years ago

ret2libc3貌似不管用啊

bulletforkiller commented 5 years ago

ret2libc3 第二个payload中填充的A为什么是104个而不是112个,求大佬解答

iromise commented 5 years ago

@niedabao1 管用的。 @bulletforkiller 想想栈的结构。

bulletforkiller commented 5 years ago

@iromise @niedabao1 管用的。 @bulletforkiller 想想栈的结构。

是因为and esp, 0FFFFFFF0h这行代码吗,如果因为这个我大概明白了。

iromise commented 5 years ago

这个你想想,至少这条指令对 esp 进行了操作。

Chr1s-T commented 5 years ago

@bulletforkiller ret2libc3 第二个payload中填充的A为什么是104个而不是112个,求大佬解答

可以用112,此时payload的结构为: payload = '\x90'*112 + system_addr + exit_addr + bin_sh_addr

xcfxzero commented 5 years ago

exp质量堪忧

iromise commented 5 years ago

@xcfxzero 如果觉得不好,请 pr。

niedabao1 commented 5 years ago

找到原因了😁ret2libc3里的LibcSearcher对有的系统貌似不管用

chkfail commented 5 years ago

@iromise 这个你想想,至少这条指令对 esp 进行了操作。

可以请您再解释一下吗,还是不太明白

iromise commented 5 years ago

@AndrieYean 可以查一下这条汇编指令的意思?

GongCun commented 5 years ago

为什么可以以第一次根据 GOT 偏移计算出的 system 函数地址,可以用在第二次执行的 payload 中?ASLR 不是会更改吗?除非在第一次计算出的 system 地址可以直接写在一块连续的内存中,组成一个链式的 return 调用?

HenryLeno commented 5 years ago

@bulletforkiller ret2libc3 第二个payload中填充的A为什么是104个而不是112个,求大佬解答 第一次执行main后直接跳转到puts函数,所以可能存在栈平衡的问题,可以动态调试看下第二次main调用,就清楚了。个人理解。

f1ndr commented 5 years ago

为什么ret2libc3中puts我得到的低12位就是fd0,怎么查也没查到fd0,puts对应的lib库,现在是凌晨0:54,很头痛

iromise commented 5 years ago

@clopen 如果你是在本地调试的话,请直接使用 ldd 看自己本地使用的 libc。

f1ndr commented 5 years ago

@clopen 如果你是在本地调试的话,请直接使用 ldd 看自己本地使用的 libc。

我之后换了虚拟机,然后好了,可能是我原来kali虚拟机libc太偏了?

iromise commented 5 years ago

可能是的。网站有个 libc 数据库,应该是你的 kali 的 libc 不在网站搜集的数据库里。

doom-man commented 5 years ago

有大神解释一下libc 的动态延迟绑定是什么吗

iromise commented 5 years ago

参考 https://ctf-wiki.github.io/ctf-wiki/executable/elf/elf-structure-zh/#procedure-linkage-table @doom-man