CubeMadness1:直接修改内存 dw 目标是获取20个cubes,但是场地总共就6个,所以就是CE改数值即可 搜到三个值,直接改成20,出现flag: HTB{CU83_M4DN355_UNM4DD3N3D} CubeMadness2:修改加密内存 <
analysis: shellcode题: .text:00000000000012ED ; int __fastcall main(int argc, const char **argv, const char **envp) .text:00000000000012ED
analysis 分析的时候先别陷入细节,先看整体逻辑: __int64 __fastcall main(int a1, char **a2, char **a3) { int i; // [rsp+0h] [rbp-20h] int j; // [rsp+4h] [rbp-1Ch] i
analysis: int __fastcall main(int argc, const char **argv, const char **envp) { char v3; // al char tmp_byte; // [rsp+7h] [rbp-39h] unsigned int
前言 比赛总共4个pwn,做了2个,剩下1个没看,1个没懂 pwn - betterthanu 题目分析 给出了源码: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdint.h> FILE *flag
简介 对IO_FILE的一种利用方法是,不修改虚表,修改IO_FILE结构中的数据指针,可以实现任意地址读和任意地址写 IO_FILE 结构 pwndbg> dt FILE FILE +0x0000 _flags : int +0x0008 _IO_rea
源码分析 IO_validate_vtable 位于:libio/libioP.h /* Perform vtable pointer validation. If validation fails, terminate the process. */ // 确保vtable指针合法,不然
简介&前言 FILE 在 Linux 系统的标准 IO 库中是用于描述文件的结构,称为文件流。 FILE 结构在程序执行 fopen 等函数时会进行创建,并分配在堆中。我们常定义一个指向 FILE 结构的指针来接收这个返回值。 libioP.h 的定义:_IO_list_all 全局变量 #incl
简介&前言 这是IO_FILE篇的第四个函数分析:fclose,文件流的关闭操作,一览文件流的关闭流程:先刷新写缓冲区,再断链,关闭文件描述符,释放文件结构体 到这里IO FILE常用的4个函数分析完了,下一篇开始将进入文件流利用相关的内容 源码分析 _IO_new_fclose 位于:libio/
简介&前言 这是IO_FILE篇的第三个函数分析:fwrite,本文分析了fwrite的主要流程,fwrite如何写入文件,以及其中各缓冲区的使用: 这里主要涉及的几个缓冲区指针: // write 缓冲区指针 wchar_t *_IO_write_base; /* Start of put a