
注:信号处理都是在interrupt/exception handler返回用户空间前检查task_struct TIF_SIGPEDDING,如果为1,进入信号处理程序do_handler(先进内核,调用用户空间signal handler,再返回内核)。
从用户空间切入内核空间时,由于内核栈共享,内核栈会被清空(task_info + kernel stack),进入自定义sa_handler前,内核把kernel stack pt_regs copy入用户空间栈,以便从sa_handler返回时,kernel stack top 上pt_regs保留用户现场。
该栈被称为sig_frame

保持在用户空间栈,SROP就是利用修改sig_frame来达到代码利用。

sig_frame内容如下:

网友评论