[BUUCTF-pwn]——mrctf2020_shellcode_revenge(可见字符shellcode)
检查了下保护发现NX 没有开,肯定要自己写shellcode呀。
不过这道题,刷新了我的认知。众所周知,手写的shellcode里面肯定有很多不可见字符。第一次碰到可见的shellcode。
看下IDA, 不能反汇编不过问题不大,没事.
个人建议,看汇编的时候,建议看流程图,更加直观
将shellcode写入,那个buf
不过下面肯定大于0呀.rbp + var_8是我们输入字符串的长度.发生转跳

箭头的地方我们不希望发送转跳,这样我们就可以直接call rax了.rax指向的就是我们的buf.
但是eax为0, rbp + var_8是我们输入字符串的长度.肯定发送转跳

幸好接下来, 可以再次转跳回来,不过要求就是每个字符的ascii码 ,必须大于0x60, 小于0x7a或者一堆, 自己可以慢慢看.
总结就是可见字符可以重新转跳,并且eax会+ 1, 当所有的shellcode为可见字符时, 上面就不会发生转跳我们就可以执行call rax.
也就是我们的shellcode了
peak小知识
- 函数返回值,一般都会放在eax寄存器里面.
- amd64, linux可见字符shellcode 为
'Ph0666TY1131

本文详细介绍了在一道CTF题目中遇到的可见字符Shellcode的使用情况,分析了如何利用可见字符避免跳转并执行自定义代码。通过IDA查看汇编流程,发现可通过控制ASCII码范围来实现连续跳转。最终,给出了一个具体的可见字符Shellcode实例,并提供了exploit代码进行远程连接和交互。
最低0.47元/天 解锁文章
4903

被折叠的 条评论
为什么被折叠?



