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填充。
运行结果