kernel的保护机制
kernel的保护机制前言我们从隔离、访问控制、异常检测、随机化这四种方式来介绍内核中的防御机制。
隔离在内核的防御机制中,根据隔离的主体,我们将隔离分为两种
内核态和用户态的隔离
内核自身内部不同对象间的隔离
内核态和用户态的隔离这里主要有
默认:用户态不可直接访问内核态的数据、执行内核态的代码
SMEP:内核态不可执行用户态的代码
SMAP:内核态不可访问用户态的数据
KPTI:用户态不可看到内核态的页表;内核态不可执行用户态的代码(模拟)
用户代码不可执行起初,在内核态执行代码时,可以直接执行用户态的代码。那如果攻击者控制了内核中的执行流,就可以执行处于用户态的代码。由于用户态的代码是攻击者可控的,所以更容易实施攻击。为了防范这种攻击,研究者提出当位于内核态时,不能执行用户态的代码。在 Linux 内核中,这个防御措施的实现是与指令集架构相关的。
x86 - SMEP - Supervisor Mode Execution Protectionx86 下对应的保护机制的名字为 SMEP。CR4 寄存器中的第 20 位用来标记是否开启 SMEP 保护。
开启
默认情况下, ...
kali更换环境变量失败的解决办法
kali更换环境变量失败的解决办法起因搭建arm的交叉编译环境,需要配置环境变量,但是根据教程来做还是不行,后来查阅相关资料才发现,kali的默认shell是zsh。我们需要去更改.zshrc
更换环境变量的方法下载之后,就是设置环境变量,总不能每次指定绝对路径。
12vim /etc/profileexport PATH=/usr/local/volatility:$PATH
更新一下
1source /etc/profile
发现压根没有生效.经过一番百度.
发现还需要更新一个地方. 就是/root/.zshrc
因为kali 2021.4的shell换成了 zsh .
123vim /root/.zshrcexport PATH=/usr/local/volatility:$PATHsource /root/.zshrc
然后再重启就大功告成了.
如果默认的shell是bash的话,就更改对应的.bashrc。和上面是一样的。
kali换源
kali换源官方源deb http://http.kali.org/kali kali-rolling main non-free contribdeb-src http://http.kali.org/kali kali-rolling main non-free contrib中科大源deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contribdeb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib阿里云源deb http://mirrors.aliyun.com/kali kali-rolling main non-free contribdeb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib清华大学源deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling ma ...
kali安装ropr
kali安装ropr前言在做NKCTF的题的时候,刚开始不知道为什么一直找不到gadget,就想到安装ropr来找,因为种种原因安装不成功,后来发现ROPgadget是可以用的,emmmm就很烦
关于ROPRROPR是一款速度极快且功能强大的ROPGadget查找工具,该工具支持多线程运行,可以帮助广大研究人员快速寻找和定位目标ROPGadget。
ROP(Return OrientedProgramming),即返回导向编程,而ROPGadget是一些包含汇编指令的代码段,通常以ret指令结尾,这些指令已经作为可执行代码存在于每个源码文件或代码库中,而这些小工具可用于二进制攻击,并破坏易受攻击的可执行文件。
当许多ROPGadget的地址写入缓冲区时,就形成了ROP链。如果攻击者可以将堆栈指针移动到此ROP链中,则控制权将会完全转移给攻击者。
大多数可执行文件包含足够的小工具来编写ROP链一旦我们知道了地址,就可以使用包含在同一地址空间(如libc)中的动态库。
而使用ROPGadget的好处在于,无需在任何地方编写新的可执行代码,攻击者可以仅使用程序中已经存在的代码来实现其目标。
...
kali安装pwndbg
kali安装pwndbg
根据网上的通用教程来实现
123git clone https://github.com/pwndbg/pwndbgcd pwndbgsudo ./setup.sh
发现下载不了,可能是因为是github上面的项目,被伟大的墙给屏蔽了
于是我直接去github下载平pwndbg的压缩包,直接甩进虚拟机。
然后执行setup.sh就可以了
如果没有装过其他插件的话应该就直接可以用了,shell中输入gdb能够看到pwndbg>,如果装过其他的插件,要修改一下配置文件,默认在home中:
1sudo vim ./.gdbinit
看一下有没有这一行
source /home/yourname/pwndbg/gdbinit.py(这里填pwndbg的路径就可以了) 没有的话加上,把其他的注释掉,保存启动GDB,完活。
kali安装peda
kali安装peda12git clone https://github.com/longld/peda.git ~/pedaecho "source ~/peda/peda.py" >> ~/.gdbinit
kali2020安装pwntools
kali2020安装pwntools
Kali 2020可直接安装 pwntools(基于 python3),不会报错,但是要注意,python3 对字符串和字节数组的处理,在使用 pwntools 的时候可能需要额外进行编码和解码工作。
pip3 install pwntools -i https://pypi.mirrors.ustc.edu.cn/simple————————————————版权声明:本文为CSDN博主「江下枫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/song_lee/article/details/107286686
ISCC比赛复盘
ISCC比赛复盘ISCC分为理论题和CTF题还有内网环境的AWD环境
CTF首先是CTF,因为这次CTF是将web和pwn单独摘到AWD里面去了,所以只有安卓,逆向,杂向,密码这几个方向,这让我深刻体会到了全方面发展的重要性,有时候不能只会一个方向
比如学pwn的,对于逆向也得有一定的了解,无论是WINDOWS逆向还是安卓逆向,对于学pwn的人来说,逆向的入门还是没有那么难的,起码在比赛的压力下,学了半天安卓还是有一定突破
AWD对于这次的AWD,其实我个人是比较难受的,因为off_by_one学过一点点,但是没有仔细去研究过,所以对于这个题做了很久,大概有三个多小时左右,其他大哥对于这个题出的比较快,基本上就是卡到了内网的流量转发去了,我提前有过相关的准备,导致我在这个题打出来后,不到半个小时就能实现打全网了,所以最后和大哥们进度差不多
内网流量转发socat和ncat实现socat tcp-l:888,reuseaddr,fork TCP:目标:目标端口
nc --sh-exec "nc 127.0.0.1 1000" -l 888 --keep-open
nc ...
ISCC数据思维赛
ISCC数据思维赛前言任务说明本赛题需要参赛队伍根据给出的训练数据,包含86178条具有数据包标识符、网络协议类型、网络服务类型等信息训练一个判别物联网设备网络行为的模型,使用模型判别测试集中的数据属于哪种行为(共12类)。
数据说明该数据集中每行都有数据包标识符、网络协议类型、网络服务类型等信息。
训练数据集含有86178条有关物联网设备的网络信息。
测试数据集含有36939条有关物联网设备的网络信息。
数据字段说明:
1.[训练集]包含流量特征与标签信息:train_data.csv
2.[测试集]包含流量特征信息:test_data.csv
提交要求提交csv文件,使用UTF-8编码格式,提交的字段格式样例如下,csv 文件应包含两列:id 和 Attack_type,该文件应包含标头,并具有以下格式:
id
Attack_type
1
DOS_SYN_Hping
2
NMAP_OS_DETECTION
3
ARP_poisioning
etc.
代码说明就是需要实现一个大模型分类的代码
1234567891011121314151617181920 ...
ISCC-regis复现
ISCC-regis复现register
可以改got表
存在off_by_one漏洞
存在结构体
1234struct { int size; char * heapaddr; }user;
尝试修改heapaddr的值,便可以实现任意地址写
通过那个off-by-one漏洞来将一个块给扩大到那个0x20的那个大小,便可以构造堆重叠,然后edit那个chunk即可edit那个0x20的chunk,于是可以达到任意写的功能,将free_hook改为system即可,
exp如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243# --------------------------exploit--------------------------def exploit(): li('exploit...') for i in range(0,2): add(0x10,"1") ...