-
-
[原创]关于setuid提权问题以及调试栈偏移解决方法
-
发表于:
2024-3-18 11:07
3094
-
[原创]关于setuid提权问题以及调试栈偏移解决方法
讲两个方面:一个是setuid与root权限关系;另一个是在调试过程中栈的位置与实际运行存在偏移。
setuid
平常的CTF-PWN问题只是讲ELF文件打通,即可获得shell,但是本文的情况是一个被标记了s位的vulnerable文件,这个文件只是教学用,不开启任何保护,我们的最终目的是获得root权限的shell,其实就是提权。首先,setuid是Linux系统为了让进程能够暂时获得root权限而设置的,我们先找好偏移,通过这个,我们在网上找一段包含了setuid的shellcode,然后放进缓冲区进行溢出,在eip,即返回地址上填入shellcode的地址(先这样,后面会改),即可打通提权。
偏移问题
这个问题是在gdb调试过程与实际运行过程中,栈的地址会存在偏移,大小不定,之前过程中是0x40的偏移,所以当尝试搞任意代码执行(ret2shellcode)时,不能把eip(ret_addr)填为shellcode的起始地址,最保险的方法是在shellcode前填充大量的NOP(空指令),形成NOP雪橇,当程序读取返回地址为NOP时,指针指向NOP,向下执行指令直至shellcode,即可打通。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)