KernelPwn Basic(持续更新)
最近发现CTF Wiki上的KernelPwn更新了,正好最近重温这方面的知识,顺便结合我之前在别的平台发布的一些笔记,重新写一下博客记录。
一、资源
二、一些常用脚本
2.1文件系统的解压与重新打包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
musl-gcc -static -O2 ./exp.c -o ./exp
rm -r tmpfs mkdir -p tmpfs
cp rootfs.cpio rootfs.cpio.bak
cd tmpfs cpio -idv < ../rootfs.cpio mv ../exp ./ find . | cpio -o --format=newc > ./rootfs.cpio mv rootfs.cpio ../
|
通过py起shell传输base64的方式进行交互,打远程,exp可以用gzip打包压缩体积,传输时最好不要一次性传完,将二进制分段传输,不然容易出现base64截断的问题,导致exp不完整。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| from pwn import * import os
root = False
if root == True: cmd = '# ' else: cmd = '$ '
with open("./exp", "rb") as f: expdata = base64.b64encode(f.read()) p = process('./boot.sh', shell=True) p.sendline()
for i in range(0, len(expdata), 0x200): p.sendlineafter(cmd, "echo -n \"" + expdata[i:i + 0x200].decode() + "\" >> /home/ctf/b64_exp")
p.sendline("cat /home/ctf/b64_exp | base64 -d > /home/ctf/exp") p.sendline("chmod +x /home/ctf/exp") p.interactive()
|