整理一下以前搭Pwn题的笔记(

Inhaltsverzeichnis

  1. pwn题准备
  2. 挂载程序到服务器端口
  3. 远程服务器
  4. awd pwn
    1. 权限设置
    2. ssh命令
  5. 参考链接

pwn题准备

1.关闭地址空间随机化PIE(ASLR)
一般情况下NX(Windows平台上称其为DEP)和地址空间分布随机化(ASLR)会同时工作。
用下面这个命令关闭ASLR(开启是2):

1
sudo -s echo 0 > /proc/sys/kernel/randomize_va_space

但是这样关闭了所有程序的随机化还是有一定的风险的,所以可以在程序编译的时候增加参数-no-pie关闭程序的pie,只关闭此程序的随机化,而其它的程序不变

2.编译pwn程序

1
2
3
4
5
6
7
8
9
10
gcc -fno-stack-protector -z execstack -mpreferred-stack-boundary=4 -no-pie -o pwn1 pwn1.c

#Ubuntu下面的GCC默认开启了Stack Smashing Protector,
#如果想在这个系统中学习缓冲区溢出的原理,在编译时要加上fno-stack-protector选项
#否则运行时会出现*** stack smashing detected ***: xxx terminated,
#而不是期望的Segmentation fault。同时还需要加上允许栈执行的选项。

#-no-pie 关闭aslr
#-fno-stack-protector用来关闭gcc编译器gs验证码机制, 禁用栈保护
#-z execstack用来关闭ld链接器堆栈段不可执行机制,关闭NX

如果要开启NX,用下面这个编译:

1
gcc -fno-stack-protector -mpreferred-stack-boundary=4 -no-pie -o pwn1 pwn1.c

挂载程序到服务器端口

1
2
sudo apt-get install socat
socat tcp-l:端口号,fork exec:程序位置

jio本:

1
2
3
#!/bin/sh
#name:pwn1.sh
socat tcp-l:9999,fork exec:./pwn1

用nohup挂起:

1
$ nohup ./pwn.sh &

注意运行一次socat该端口就被占用了,要取消就要kill这个进程。

远程服务器

cmd用mstsc命令打开远程连接服务器,将题目部署到服务器上。注意端口设置就好。

awd pwn

几个重要的点
1、web、pwn权限是不能串的,不然就是pwn打进来直接弄web
2、gamebox需要对pwn和web都可以进行管理
3、gamebox对web目录进行文件覆盖的时候,会导致权限错乱

权限设置

权限绝对不能乱,要严格控制好,不然人家从这个目录进来打到了flag出去到另一个目录能看到另一题的flag就尴尬了= =
最好是不同题目用不同用户挂载起来(用哪个用户挂的题进来就是这个用户的权限)

  • 一些特殊的文件权限设置
    1
    2
    3
    4
    5
    6
    7
    8
    chattr +a file1 #只允许以追加方式读写文件(就是不能删除文件)
    chattr +c file1 #允许这个文件能被内核自动压缩/解压
    chattr +d file1 #在进行文件系统备份时,dump程序将忽略这个文件
    chattr +i file1 #设置成不可变的文件,不能被删除、修改、重命名或者链接
    chattr +s file1 #允许一个文件被安全地删除
    chattr +S file1 #一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
    chattr +u file1 #若文件被删除,系统会允许你在以后恢复这个被删除的文件
    lsattr #显示特殊属性

ssh命令

将文件从服务器拷贝到本地:

1
scp -P 1111 awd@xxx.xxx.xxx.xxx:/home/awd /home/edvison //注意P要大写

将文件从本地发送到服务器:

1
scp -P 1111 /home/edvison awd@xxx.xxx.xxx.xxx:/home/awd

要传整个目录就加个-r参数就好

参考链接

http://www.jianshu.com/p/a659924515f7
http://yunnigu.dropsec.xyz/2016/10/08/checksec%E5%8F%8A%E5%85%B6%E5%8C%85%E5%90%AB%E7%9A%84%E4%BF%9D%E6%8A%A4%E6%9C%BA%E5%88%B6/#checksec及其包含的保护机制
linux程序的常用保护机制:
https://introspelliam.github.io/2017/09/30/linux%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%B8%B8%E7%94%A8%E4%BF%9D%E6%8A%A4%E6%9C%BA%E5%88%B6/
ssh配置:https://github.com/hehongwei44/my-blog/issues/4