https://mrmoddom.github.io/ctf/walkthrough-Stack-Overflows-for-Beginners-1/#level-5-final
Level2
以提前安装了peda。Pwntools
查看文件权限
发现有可执行文件levelTwo,但是没有源码
Gdb调试一下
查看main函数,发现调用了hello和getuid函数,getuid是为了给用户一定权限加上的
查看下hello函数
发现调用了strcpy函数,这应该可以造成溢出,
再查看下还有那些函数
有一个spawn函数,查看下spawn函数的汇编指令
调用了setuid和execve,那么可以溢出到这,
构造参数,查看偏移量
发现段错误在0x4b4b4b4b
发现偏移量是36
让返回地址执行指向spawn的开始就可以了
Level3
由于没有源码,直接扔进gdb查看main的汇编代码
调用了overflow,查看该函数的汇编代码
有个strcpy函数,这个函数有漏洞,在strcpy函数处设置断点
run输入参数,ni向下走一步,查看我们输入的东西,
在main函数可以找到overrflow的返回地址为0x56556244
我们先构造了260个参数,查看地址发现偏移为268
接下开找jmp esp的地址:
Vmmap 用来分析应用程序使用虚拟和物理内存的情况
然后用asmsearch查找jmpesp的地址
然后构造shellcode即可(pwntools的shellcraft)
Level3.4都一样只是偏移量改变了,就不演示了
Level5
这关写好exp以后的到的是level4的权限
Pwn的pwntools有一个shellcaft.i386.linux.setreuid函数可以提权