祥云杯2022-protocol赛后复现
祥云杯2022-protocol赛后复现前言离离原上谱的一道题,开始完全没有任何思路,又是protocol协议,又是静态编译去除符号表的,头都大了,没分析出来。还是赛后看着wp复现的。确实是自己菜狗了
但确实也提醒我去多了解了解网络方面的知识了,pwn终究还是个大杂烩,只会一些二进制漏洞的利用还是不够的,还得和其他方向结合一下。
知识点protocol协议其实就是一个文件传输协议,在你要传输的信息前面加点东西,然后再传输过去,那边再根据协议解包就行了,网上都有现成的资料可以看看
protocol协议的提取在做题的时候我们需要知道protocol协议的一个.proto文件,但是要是让我们去一点点看结构体什么的来提取会很麻烦,还好github上有现成的提取项目可以直接用
https://github.com/marin-m/pbtk
记得安装的时候一定要用python3和pip3,否则会有不知名的错误,一直修不好,血泪教训,如果你python2能用的话,那就没事
用下面的命令来提取文件
1./extractors/from_binary.py protocol ./
就能得到一个 ...
由endbr64指令而获取到的CET知识
由endbr64指令而获取到的CET知识控制流完整性针对于漏洞利用,最终的效果和目的就是劫持控制流,控制目标程序做一些他本来做不了的事情。可以达到这一目的的方式有很多,比如ROP、劫持函数指针等等。而这些都来自于软件中一些漏洞,如缓冲区溢出、释放后利用等等。最初防御的方式就是头疼医头,脚疼医脚,哪里出现了漏洞比如缓冲区溢出,我们就检查一下内存边界,或者在边界处设置一个cookie(canary)。
或许是漏洞多的补不过来,之前的防御方式不能很好的完成防御计算机被破坏的工作,原本的防御方式经过几轮较量后衍生出了很多绕过方式,这些攻击手法就是现代漏洞利用技术的核心,比如ROP。如果攻击者通过层层阻挠,到达了执行ROP这一步,那么后续的路基本就畅通无阻了,因为之前并没有防御ROP的有效方式。
CFI即Control Flow Integrity控制流完整性就是指程序运行时控制流的合法性。这一步概念被提出来主要就是为了针对ROP的防御。可以将程序运行看作是一辆车在路上跑,开发者遵循的安全开发准则,比如说严格控制好边界等可以看作是司机在路上遵守交通规则;而之前的防御如canary等内存边界检查机 ...
用patchelf改程序后在exp中用gdb.attach()调试堆栈
用patchelf改程序后在exp中用gdb.attach()调试堆栈问题来源在做pwn题时,经常遇到题目的libc版本与自己虚拟机的版本不同,而用patchelf改链接后,gdb堆栈指令看不了,困扰了我很久,查阅了很多师傅的博客找到了一种解决办法
实现方法:我这边拿2020纵横杯 wind_farm_panel这道pwn题做演示它的靶机是Ubuntu 16.04,libc2.23而我自己的虚拟机为kali 2022.3,libc2.36
首先patchelf改链接:ld可以在glibc-all-in-one中找到
12patchelf --replace-needed libc.so.6 你要换的libc的硬路径 ./pwnpatchelf --set-interpreter ld的硬路径 ./pwn
我这里改为
成功改完之后发现gdb堆栈的指令实现不了出现报错这里面的下载了也没用
12345678heap: This command only works with libc debug symbols. They canprobably be installed vi ...
物联网漏洞挖掘思路
物联网漏洞挖掘思路攻击面分析在做攻击面分析前我们首先要知道,对于一个常规的物联网设备而言,可以分为设备端、手机端和云端。而这三个不同的端都会存在自己一些特殊的攻击面。比如设备端我们往往会先想办法获取固件然后分析核心服务,而APP端则会有注入蓝牙等一系列操作。
硬件分析针对硬件的分析主要停留在电路板上使用的芯片以及配套的解决方案,一般重点关注MCU型号以及外挂Flash闪存。其次便是寻找各类接口,如UART、ADB、JTAG等。
对于UART口一般可以直接找并排或相距不远的多个焊点和通孔,然后借助万用表来识别每个串口对应的功能。也可以直接使用JTAGulator来直接进行识别,当然他更强大的功能是识别JTAG接口。
信息收集做完硬件层面的分析接下来就是要正式开始,一般会在未获取固件前就对端口开放信息进行扫描,了解其对外开放的一些服务并进行黑盒测试。
过第一步说的接口进入shell后可以用ps查看设备开启了哪些服务,这些服务都是后期重点的挖掘方向。其次便是分析固件文件系统,查看固件使用了哪些中间件,如果有中间件,查看中间件的配置文件,获取中间件配置信息,当没思路的时候可以查看中间件是 ...
爆破Canary
爆破CanaryCanary 爆破的原理Canary爆破是除Canary泄露外的另一个针对canary保护的利用方法。
对Canary而言,虽然每次进程重启后的Canary不同,但是同一个进程中的不同线程的Canary是相同的,并且通过fork函数创建的子进程的Canary也是相同的。我们可以利用这个特点,逐个字节将Canary爆破出来。不管是32位,还是64位的Canary,最低的一个字节均为0x00,从这个字节开始,依次破解每个字节:每次填入的值与Canary不匹配,则程序崩溃;每次填入的值与Canary匹配,则继续破解下一个字节。填入最高字节时,Canary匹配,就成功破解出了Canary。
爆破Canary的exp123456789101112131415161718192021222324252627from pwn import *context.log_level = 'debug'context.terminal = ['gnome-terminal','-x','bash','- ...
熊猫杯-PWN题复现
熊猫杯-PWN题复现safestring一个格式化字符串的利用,但是不能需要先进行加密再进行传输,其实也就是一个凯撒加密,逆向出来的解密函数如下
1234567891011121314151617181920def decode_s(data): result = bytearray() data=bytearray(data) for byte in data: if 32 <= byte <= 126: # 可见字符范围 if 65 <= byte <= 90: # 大写字母 A-Z base = 65 elif 97 <= byte <= 122: # 小写字母 a-z base = 97 else: result.append(byte) continue # 凯撒密码解密,向前移动23个位置 ...
漏洞利用开发--shellcode开发
漏洞利用开发–shellcode开发shellcode 的基本原理shellcode 通常使用机器语言编写,是一段用于利用软件漏洞而执行的代码。
shellcode根据它是让攻击者控制它所运行的机器,还是用过网络控制另一台机器,可以分为本地和远程两种类型。本地shellcode常用于提权,攻击者利用高权限程序中的漏洞(例如缓存区溢出),获得与目标进程相同的权限。远程shellcode则用于攻击网络上的另一台机器,通过TCP/IP套接字为攻击者提供shell访问。根据连接的方式不同,可以分为反向shell(由shellcode建立与攻击者机器的连接),绑定shell(shellcode绑定到端口,由攻击者发起连接)和套接字重用shell(重用exploit所建立的连接,从而绕过防火墙)。
有时候,攻击者注入目标进程中的字节数是被限制的,因此可以将shellcode分阶段执行,有前一段比较简短的shellcode将一阶段复杂的shellcode(或者可执行文件)下载并执行,这是恶意程序常见的一种操作。但有时候攻击者并不能确切的知道后一阶段的shellcode被加载到内存的哪个位置 ...
渗透测试-木马免杀的几种方式
渗透测试-木马免杀的几种方式0x01前言免杀就是反病毒技术,,它指的是一种能使病毒木马免于被杀毒软件查杀的技术。由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术,所以难度很高,一般人不会或没能力接触这技术的深层内容。其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。
它除了使病毒木马免于被查杀外,还可以扩增病毒木马的功能,改变病毒木马的行为。免杀的基本特征是破坏特征,有可能是行为特征,只要破坏了病毒与木马所固有的特征,并保证其原有功能没有改变,一次免杀就能完成了。
免杀技术也并不是十恶不赦的,例如,在软件保护所用的加密产品(比如壳)中,有一些会被杀毒软件认为是木马病毒;一些安全领域中的部分安全检测产品,也会被杀毒软件误杀,这时就需要免杀技术来应对这些不稳定因素。
0x02查杀方式及原理杀毒软件基本原理1. 无害没有任何可疑行为,没有任何特征符合病毒。
2. 可疑存在可疑行为:操作注册表,打开powershell,修改用户,操作敏感文件等。
3. 病毒特征符合病毒。
杀毒软件常用识别方式1. 静态:从病毒体中提取的病毒特征码,逐个与程序文件 ...
深度学习(DLML)学习路径
深度学习(DL/ML)学习路径前言最近几年,尤其是自从2016年Alpha Go打败李世石事件后,人工智能技术受到了各行业极大关注。其中以机器学习技术中深度学习最受瞩目。主要原因是这些技术在科研领域和工业界的应用效果非常好,大幅提升了算法效率、降低了成本。因而市场对相关技术有了如此大的需求。
我在思考传统行业与这些新兴技术结合并转型的过程中,亦系统的回顾了深度学习及其相关技术。本文正是我在学习过程中所作的总结。我将按照我所理解的学习路径来呈现各部分内容,希望对你亦有帮助。欢迎一起交流。
主要分为如下几个部分:
数学基础:包括微积分、线性代数、概率论等对理解机器学习算法有帮助的基本数学。
Python:Python提供了非常丰富的工具包,非常适合学习者实现算法,也可以作为工业环境完成项目。主流的深度学习框架,例如当前最流行的两个AI框架TensorFlow、PyTorch都以Python作为首选语言。此外,主流的在线课程(比如Andrew Ng在Coursera的深度学习系列课程)用Python作为练习项目的语言。在这部分,我将介绍包括Python语言基础和机器学习常用的几个 ...
深入浅出低功耗蓝牙(BLE)协议栈
深入浅出低功耗蓝牙(BLE)协议栈BLE协议栈为什么要分层?怎么理解BLE“连接”?如果BLE协议只有ATT层没有GATT层会发生什么?
协议栈框架一般而言,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝牙协议的代码,理解和掌握BLE协议是实现BLE协议栈的前提。在深入BLE协议栈各个组成部分之前,我们先看一下BLE协议栈整体架构。
如上图所述,要实现一个BLE应用,首先需要一个支持BLE射频的芯片,然后还需要提供一个与此芯片配套的BLE协议栈,最后在协议栈上开发自己的应用。可以看出BLE协议栈是连接芯片和应用的桥梁,是实现整个BLE应用的关键。那BLE协议栈具体包含哪些功能呢?简单来说,BLE协议栈主要用来对你的应用数据进行层层封包,以生成一个满足BLE协议的空中数据包,也就是说,把应用数据包裹在一系列的帧头(header)和帧尾(tail)中。具体来说,BLE协议栈主要由如下几部分组成:
PHY层(Physical layer物理层)。PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。PHY层做得好不好,直接决定整个 ...



