awd

前言

这周都在出awd的题目,记录一下遇到的问题

SSH

在awd中需要通过ssh连接到靶机上,因此需要在dockerfile里配置好ssh的服务

1
2
3
4
5
6
7
8
9
10
11
12
...
RUN apt-get update -y && apt-get install -y openssh-server\

#新建一个用户,做好权限维持
RUN useradd -m ctf

#设置ssh的账号密码
RUN echo "ctf:ctf" | chpasswd
#直接使用写好的ssh的配置文件
COPY ./sshd_config /etc/ssh/sshd_config
RUN chmod 644 /etc/ssh/sshd_config
...

同时需要设置时区,否则安装openssh-server时会卡在选择时区的选项

1
2
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone

在sshd_config中配置好了ssh的端口为2222,因此在dockerfile中将2222的端口暴露出来

1
EXPOSE 2222

在运行docker的时候需要将2222端口映射出来

1
sudo docker run --name pwn -p 2222:2222 -p 9999:9999 -d pwn

在awd中,可以释放文件进行文件的替换,因此需要将部署的文件设置为ctf的权限

1
chown -R ctf:ctf /home/ctf/pwn

libc

有时候会遇到本地的libc与docker搭建的ubuntu的libc版本不一致,那么只需要将本地的libc拷贝到docker中即可

1
2
COPY ./lib/ /lib/
COPY ./lib64/ /lib64/
  • lib存放的就是本地的libc,需要注意的是libc是放在x86_64-linux-gnu下的,因此存放libc的路径为./lib/x86_64-linux-gnu/libc.so.6
  • lib64则是链接文件,即存放ld-linux-x86-64.so.2

在docker部署之前需要修改这两个文件的权限

1
2
chmod 777 ./lib/x86_64-linux-gnu/libc.so.6
chmod 777 ./lib64/ld-linux-x86-64.so.2

否则会出现/bin/sh权限不足的情况

docker_debug

有时候需要在docker部署的靶机上进行调试,在安装时将gdb,tmux,python3以及pwntools装好

1
2
3
4
5
6
7
8
9
10
11
FROM ubuntu:20.04

RUN sed -i "s/http:\/\/archive.ubuntu.com/http:\/\/mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
RUN apt-get update -y && apt-get install -y \
lib32z1 xinetd openssh-server python3-dev python3-pip tmux git wget gdb\
&& rm -rf /var/lib/apt/lists/*

RUN python3 -m pip install --no-cache-dir pwntools -i https://pypi.tuna.tsinghua.edu.cn/simple
...

在docker内安装gef即可,因为gef没pwndbg那么大,因此安装起来比较方便

tmux

由于在docker内使用的是命令行进行调试,因此需要进入tmux进行多窗口。记录一下用到的命令

  • CRTL+B+空格:将上下屏切换到左右屏
  • CRTL+B+方向键:切换上下左右的屏幕

patch

现在通常给pwn题打patch都会将patch的代码写在.eh_frame上,这个段在旧版本的ubuntu上是有可执行权限的,但是现在的ubuntu上可执行权限已经没有了,需要手动修改一下权限

使用010的模板可以快速找到ELF文件的段节之类的信息

image-20230812215029360

找到.eh_frame所属的段上,修改为可执行权限,那么这个段就有可执行权限了

image-20230812215113367

接着修改一下.eh_frame的节为可执行权限,那么在ida就会以代码的结果显示

image-20230812215200945

待更新。。。


awd
https://h0pe-ay.github.io/awd/
作者
hope
发布于
2023年8月12日
许可协议