- 博客(15)
- 收藏
- 关注
原创 AFLnet对于输入文件的处理
为了研究AFLnet对于输入文件的处理,我们进行调试。首先需要知道,AFLnet读取输入文件是通过read_testcases读取的。所以我们下断点需要下在这个函数处(2276行)。我们运行一次,发现程序会尝试将fn定义为..../in-rtsp/queue:但是由于我们的输入目录里面没有queue这个文件夹,所以在下面这行代码中,程序在尝试给访问queue文件后,发现无法访问,因此free掉fn,只留下in_dir=...../live555/in-rtsp.
2023-04-02 23:28:43
360
1
原创 【CTF】【PWN】【胎教向】ciscn_2019_n_3
拖进IDA反编译。程序有三个功能:创建NOTE,删除NOTE,print NOTE创建NOTE的时候会先malloc一个固定大小为0xC的chunk。然后再malloc一个大小自己设置的chunk。不难发现,第一个申请的chunk起到控制作用,用来存放每一个NOTE都会有的功能。两个chunk之间的关系应该如下图。我们把第一个chunk命名为control,第二个chunk命名为content。controlcontrol块有三个部分,print和free,还有ptr。ptr指向conte
2021-10-28 23:29:55
194
1
转载 孟加拉央行SWIFT攻击事件恶意木马分析
孟加拉央行SWIFT攻击事件恶意木马分析 前言:刚拿到这个样本,然后花了些时间看了看,弄了个报告交差了。很多的细节分析纯是猜测,因为我对SWIFT具体业务逻辑也不了解。当参考吧。第一章 分析概述 该恶意木马样本为运行于winodws平台上的PE文件(名称:evtdiag.exe)。文件大小为64KB,编译时间是2016年2月5日。 经分析,该样本为定制的攻击SWIFT客户端程序的恶意木马程序,未做加壳和代码混淆处理,主要功能是与本...
2021-10-20 23:04:47
928
1
原创 【CTF】【PWN】胎教向babyfengshui_33c3_2016题解
跳过checksec,我们直接分析程序。我这里把这些函数命名为add,delete,display,edit。先看add。就是创建两个chunk,一个的地址存放在s里,一个的地址存放在v2里。然后把s存在v2指向的地址里,用一个名为ptr的数组存放v2。可以看出来,我们创建了两个chunk。按顺序命名为chunk1和chunk2.我们把这两个chunk看作是一个user的两部分。显然,chunk1存放了user的内容,chunk2存放了user的内容的地址和user的名字。其中name
2021-10-12 19:42:24
293
3
原创 【CTF】【PWN】orw
这是沙盒机制,就是限制你能使用的syscall。seccomp-tools这个工具能快速地查出你能使用地syscall。我们能使用的常用的构造攻击链的只有open,read,write。但是因为限制了syscall,所以我们不能用特殊的系统调用getshell。有两种方法,一种直接写汇编,一种利用shellcraft构造。下面是汇编:...
2021-10-09 11:13:17
1343
1
原创 【CTF】【PWN】【UAF】【萌新友好向wp】hitcontraining_uaf
这题的反编译有点阴间。这是add函数,add一次会malloc两个chunk。同时要注意,这里的notelist是一个二维数组。notelist[i]表示的其实是notelist[i][0].后面还有一个notelist[i][1]。我们看notelist[i],他被赋值为print_note_content这个地址的函数。notelist[i][1]才是真正存放chunk的content的地方。为什么要把notelist[i]赋值为print_note_content这个地址的函数呢?下面这
2021-10-08 00:10:59
388
3
原创 [CTF]bjdctf_2020_babyrop2
格式化字符串漏洞+金丝雀绕过。出现这种形式的,v2就是canary。查看他在栈里的位置。var_8就是canary。利用格式化字符串漏洞。%6$p表示输出第六个参数。发现我们输入的东西在第六个参数的位置。调试之后发现有一串随机的十六进制数字。这就是canary。由此可见,这个canary在第七个参数的位置。于是我们先用格式话字符串泄露第七个参数位置上的内容,每一次进行栈溢出的时候把泄露出来的值填入即可。代码如下:from pwn import *from LibcSearche
2021-10-07 19:40:32
420
原创 【CTF】【PWN】【BJDctf】bjd_2020_babyheap
一道比较简单的堆题。经典列菜单。create , edit, delete 。可以发现edit存在一个堆溢出漏洞,那么利用方法就很明显了。先创建4个chunk。再删除chunk2,然后对chunk1进行edit,利用堆溢出将chunk2的fd填充为一个fake_chunk.再次malloc就会申请回chunk2的位置,由于fd连接了fake_chunk,所以再申请一次会申请会fake_chunk.fake_chunk+0x23的位置是heaparrary。所以,执行如上代码之后,h
2021-10-06 23:07:08
171
原创 [DynELF]jarvisoj_level4
这题没给libc,所以用DynELF。记录一下仅供自己使用,以免以后忘了他的用法。from pwn import *from LibcSearcher import *r=remote('node4.buuoj.cn','26626')#r=process('./a')elf=ELF('./a')context.log_level = 'debug'#libc_base = ELF("./libc-2.23.so")#context.terminal = ['tmux','splitw'
2021-09-30 21:19:01
96
原创 [堆漏洞][Fastbin attck][0ctf][pwn]看不懂可以顺着网线来打我,极其详细的babyheap_0ctf_2017
一道典型的菜单题,攻击方式是堆溢出。进入main函数查看发现结构如下图:分析allocate函数可以发现这里能通过调用calloc函数,分配一块最大为4096的chunk(通过calloc分配的chunk会被清空内容)分析fill函数fill函数可以对一块内存进行任意大小的填充,为堆溢出提供了条件。我们的攻击链大概是这样的:首先创建5个chunk,idx分别为0,1,2,3,4,大小均为0x10。然后free掉chunk1,于是chunk1被加入到fastbin里。再free掉chunk
2021-09-30 00:52:16
302
5
原创 [栈迁移][BUUCTF][PWN] ciscn_2019_es_2
前置知识:栈迁移概念:当存在栈溢出且可溢出长度不足以容纳 payload 时,可采用栈迁移。一般这种情况下,溢出仅能覆盖 ebp 、 eip 。因为原来的栈空间不足,所以要构建一个新的栈空间放下 payload ,因此称为栈迁移。栈迁移原理:栈执行命令是从esp指向的位置想ebp指向的位置执行。正常情况退栈的操作是:esp指向ebp指向位置,ebp指向ebp里的内容所指向的位置。当遇见leave|ret命令的时候,相当于执行mov esp ebp; pop ebp; ret;作用就是将ebp指向的位置给
2021-09-25 20:57:37
401
2
原创 [BUUCTF]PWN [HarekazeCTF2019]baby_rop2
惯例checksec发现开了,但也没开。打开IDA进行分析main函数很简洁,也没有内套其他函数。有一个很明显的溢出漏洞,可以通过read函数来把♂栈♂填♂满。那么如果我们把ret地址填写成我们想要的函数,就可以对他进行调用。看看本题题目,名副其实了属于是。很明显,我们可以使用printf函数泄露libc基址。printf函数的形式大概像这样:printf(“%s“,Moriarty),其中格式化字符串是第一个参数,放在rdi中,第二个参数放在rsi中。很明显的,我们应该想办法把rdi覆盖成一个.
2021-09-25 01:10:00
202
原创 【CTF】【PWN】ciscn_s_3题解
前置知识:64位系统:传参方式:首先将系统调用号 传入 rax,然后将参数从左到右依次存入 rdi,rsi,rdx寄存器中,返回值存在rax寄存器调用号:sys_read 的调用号为0,sys_write 的调用号 为1stub_execve 的调用号为59,stub_rt_sigreturn 的调用号为15调用方式: 使用 syscall 进行系统调用首先惯例checksec一下。发现NX保护开了。用IDA打开文件之后返现main函数里面套了一个vuln函数。跟进去查看如下tab转汇编
2021-09-23 00:29:54
759
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人