Advertisement

TU-ctf-2016 PwnOW 分析报告

阅读量:

小动物很可爱的说?

将IDA作为分析工具使用时,在代码中发现了已存在的用于获取flag的函数,并非需要自行寻找系统漏洞;下一步需要探索如何控制程序执行流程

首先对程序功能作基本的分析:

在创建新动物的过程中,在内存中分配出一个结构体来存储该动物的相关信息。如果这种新创建的动物是一只熊类,则将该结构体的内存区域从字节偏移量为\texttt{0}\texttt{8}的部分赋值为十六进制\texttt{deadbeef};接着从字节偏移量\texttt{8}\texttt{14}的部分存储该动物的名字;然后将从字节偏移量\texttt{14}\texttt{20}的部分用来记录该动物的类型信息。

如果是其他动物,则会遇到这种情况。
系统管理了一个全局指针变量pointers,并将其用作目录表来记录所有结构体的内存位置。

使用uaf的姿势,关键在于delete功能:

复制代码
 void deleteAnimal()

    
 {
    
   int v0; // [sp+Ch] [bp-4h]@1
    
  
    
   puts("Choose your friends wisely..");
    
   puts("Which element do you want to delete?");
    
   fflus

全部评论 (0)

还没有任何评论哟~