BruceFan's Blog

Stay hungry, stay foolish

0%

其实之前的Android linker文章中有提到,但是没有实际写过时间长了就忘记了。so文件是一个elf格式的文件,在so被加载之前,会执行init段的代码。在结束的时候,会执行fini段的代码。这个技术一般是用来解密加壳文件的,我遇到的场景是加沙箱,下面就介绍一下实现方法。

阅读全文 »

PID namespace用来隔离进程的PID空间,使得不同PID namespace中的进程号可以重复且互不影响。Linux下的每个进程都有一个对应的/proc/pid目录,该目录包含了进程相关的信息。对于一个PID namespace,/proc目录只包含当前namespace和它所有子孙后代namespace里的进程信息。创建一个新的PID namespace后,需要挂载/proc文件系统才能让子进程中top、ps等依赖/proc文件系统的命令正常工作。

阅读全文 »

mount namespace稍微简单点,因为PID namesapce需要用到所以就先简单介绍一下。
mount namespace是用来隔离文件系统的挂载点,这样进程就只能看到自己的文件系统挂载点。新mount namespace中的挂载点是从调用者所在的mount namespace中拷贝的,但是新mount namespace创建后和原mount namespace就没啥关系了(除了shared subtree的情况),下面通过iso文件的挂载来演示。

阅读全文 »

接下来打算逐个学习一下Linux namespace的作用和用法,顺序不一定科学,随心随性学习法。。第一个学的是User namespace,先学这个是因为在看Chrome沙箱的时候,用到的就是User namespace。
1.命令行使用

阅读全文 »

unionFS可以把文件系统上的多个目录内容联合挂载到同一个目录下,而目录的物理位置是分开的。先用一个简单的例子体会一下:
1.先创建如下的目录结构

阅读全文 »

runc命令

1.准备一个busybox容器所需文件系统

1
2
3
$ sudo docker pull busybox
$ mkdir rootfs
$ sudo docker export $(sudo docker create busybox) | sudo tar -C rootfs -xvf -
阅读全文 »

Qemu虚拟机与宿主机之间实现文件传输,大概有四类方法:
1.虚拟机与宿主机之间,使用网络来进行文件传输。这个需要先在宿主机上配置网络桥架,在qemu-kvm启动配置网卡就可以实现文件传输。

阅读全文 »

这道题是湖湘杯2019的一道QEMU pwn,题目下载(提取码: 4wag)。QEMU pwn题目一般是基于QEMU源码进行修改或者添加,在QEMU模拟的PCI设备中引入漏洞,选手需要利用漏洞读取宿主机上的flag文件。
解压文件,查看内容:

阅读全文 »

环境:
Mac: VMware Fusion
VMware: Ubuntu 18.10 x64 4G 开启Intel VT-x/EPT支持 qemu-2.3.0
qemu: Ubuntu 18.04 x64 2G

漏洞分析

阅读全文 »

这是一道Redpwn CTF 2019很简单的溢出题,主要考察ROP exp的编写。
[srnr](https://pan.baidu.com/s/174jiewXQISoHb08Aqisy7Q 提取码: yt2r)
对二进制文件进行逆向分析,可以看到程序先读入了一个数字作为文件描述符,再从文件描述符中读取100000个字符,而buf是rbp-9,只要读超过17个字符就会覆盖到ret:

阅读全文 »