ctf-wiki之ret2shellcode学习笔记

shellcode是3用于完成某个功能的汇编代码。通常用于获得目标系统的shell。

查看下程序的保护


没有开启任何保护

在IDA中看到


gets函数明显的栈溢出漏洞

gets中获取的输入还会被复制到buf2中,且buf2存在于.bss段中


buf2存在与.bss段

.bss段通常时用来存放程序中未初始化的或者初始化为0的全局变量和静态变量的一块内存区域。特点是可读写,在程序执行之前.bss段会自动清0。

因此我们需要看buf2所在的.bss段是否可执行,若可执行则可以写入shellcode然后执行shellcode从而得到系统shell。

用vmmap命令即可看.bss段是否可执行


.bss段处于0x0804a000到0x0804b000

脚本


方法str.ljust(a,'b')即字符串str不够长度a时用字符b填充。

运行结果


你可能感兴趣的:(ctf-wiki之ret2shellcode学习笔记)