hangman,离pwn大佬越来越远了

VSole2021-10-15 14:38:32

每周五固定节目又来了!今天给大家带来的是第四题,本题为PWN题型

仅一周过去,我们从夏天跨到了冬天,没有过渡,已经在找秋裤了。为了防止脑子被冻住,赶紧找一道题来做做。

首先来了解一下格式化字符串,格式化字符串函数可以接受可变数量的参数,并将第一个参数作为格式化字符串,根据它来解析之后的参数。通俗来说,格式化字符串函数就是将计算机内存中表示的数据,转化为我们人类可读的字符串格式。

本题就需要我们利用格式化字符串漏洞泄露和修改栈上的数据。拿到题先查看基本信息,可知本题是一道64位的程序,并且是动态链接的,保护全开。所以解题思路大致如下:先用IDA静态分析理出代码逻辑,程序中没有后门函数,虽然有点难受,但题目给了我们一个libc,所以可以用工具查找one_gadget基于libc基地址的偏移,然后计算出one_gadget的真实地址,从而利用格式化字符串漏洞将返回地址修改为one_gadget的地址,达到getshell的目的。

解题过程中涉及到多次地址计算,各位做实验的时候一定要配合视频食用,理解会更清晰。最后还是建议大家平时不要跳跃式学习,基础知识的堆砌是对未来拓宽知识面打下的前阵,就像学会一门编程语言之后学习其他语言也会变得更容易上手,同一领域的知识都是共通的,所以听君一句劝“学海无涯,回头是岸”。

字符串函数地址
本作品采用《CC 协议》,转载必须注明作者和本文链接
写一个android中so文件反混淆的系列文章,目前这是第三篇。根据其他人的分析可知,libDexHelper.so是指令抽取的实现,libdexjni.so是VMP的实现。在android so文件攻防实战-百度加固免费版libbaiduprotect.so反混淆中我们是交叉引用拿到加密后的字符串和它对应的解密函数的表然后frida主动调用得到的解密后的字符串,但是在这里这个方法就不太好用了。
bang加固简单分析
2022-07-31 16:59:14
dex加固,可以使用frida-dexdump可以直接dump下来。
二进制程序分析
2021-09-25 17:18:46
分析恶意软件的第一步是收集二进制程序在主机上执行的行为事件,研究人员根据这些行为大体形成一个思路来描述恶意软件的功能。 这包含应用释放或者从互联网下下载的文件,写入什么样的注册表、访问了什么网络地址,修改读写本地的什么文件等等。那么研究人员通过行为会确定恶意样本的类型。通常类型如下:
几乎所有Win32程序都会加载ntdll.dll和kernel32.dll这两个基础的动态链接库。64位系统首先通过选择字GS在内存中找到当前存放着指向当前线程环境块TEB。进程环境块中偏移位置为0x18的地方存放着指向PEB_LDR_DATA结构体的指针,其中,存放着已经被进程装载的动态链接库的信息。模块初始化链表 InInitializationOrderModuleList中按顺序存放着 PE 装入运行时初始化模块的信息,第一个链表结点是 ntdll.dll,第二个链表结点就是 kernel32.dll。从kernel32.dll的加载基址算起,偏移0x3C的地方就是其PE头。
MRCTF2022 stuuuuub 题解
2023-02-07 10:15:04
Overview学了这么一段时间的Android,难得见到的一道比较对口的逆向题。e.c()通过执行which su命令后读取输出来检查是否有su文件。读取res.dat文件后调用了decodeSo函数进行解密存放在应用的数据目录下的libnative.so,而decodeSo是libstub.so里的native函数。但是在libstub.so里却没有直接找到decodeSo函数,因此应该是JNI_OnLoad里动态注册的。decode String另外libstub.so使用了Ollvm的字符串加密和控制流平坦化。这里参考官方给的WP中使用了AndroidNativeEmu框架。
这似乎又是一个0 day漏洞,这个漏洞与pif文件有关,是我在研究pif文件的时候发现的。
赛时有考虑过ret to dl_resolve的做法,在网上查了下也没发现有相关的文章,当时也没有详细研究,这次趁着期末考前有空,仔细琢磨了一下。
C和C++向来以“let the programmer do what he wants to do”的贴近底层而为广大开发者所喜爱。
Pandora勒索软件针对Windows用户发起攻击,且会对受感染设备上的大多数文件加密。
如何调包Win32API函数?其实就是HookPE文件自己的IAT表。
VSole
网络安全专家