自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 2024蓝桥杯初赛决赛pwn题全解

蓝桥杯pwn全解

2024-06-04 18:31:30 1352

原创 2024 ISCC pwn wp

思路就是free一个unsorted bin堆块,在申请回来泄露libc,然后再free两个堆块,在申请0x8的堆块,就能把前俩堆块的控制堆块申请回来,将puts函数改为system,然后show原先的堆块。32位静态编译,想一把梭,但是有canary,先格式化字符串漏洞泄露canary,然后第二次栈溢出构造mprotect+read+shellcode的链子。版本2.31,largebin attack打IOlistall为堆地址,伪造IOfile,house of cat orw。

2024-05-25 23:16:56 768

原创 第七届蓝帽杯初赛和半决赛pwn的部分wp

堆菜单题审计代码第一个功能中,申请的堆块大小固定,并且只能申请五块,读入的字节也都没有溢出在2功能中,找到一个uaf漏洞在三功能中,存在打印,和修改功能因为堆块大小固定,而且只能只能申请5块,平时都是利用unsorted bin来泄露libc,这个题没法利用unsorted bin,我能想到的方法,1.利用修改堆块指针为got地址,2.修改堆块指针为bss的stdout地址这里用的是第一种方法,因为存在uaf,并且堆块的指针都存在于堆块中,如下图。

2023-09-19 18:44:21 263

原创 虚拟机卡顿(不是内存大小问题的情况下)

第一步打开设置第二步选中显示器第三步取消勾选加速3d图形第四步重启前提是,这个卡顿不是因为内存太小导致的

2023-07-09 16:23:57 599

原创 2023 ciscn国赛pwn lojin wp

第一次参加国赛,被队友带飞了,pwn只做出来了四个,1381分,第16名,总体来说还可以在所有题目中,也是拿到了pwn题login的一血话说回来,来详细说一下,这个pwn题的解法首先就是能看到这是个没附件的pwn题说明只能通过交互去得到信息,再寻找方向,连接之后应该就是这四个选项。

2023-05-29 00:40:09 2376 9

原创 buuctf (0ctf_2017_babyheap) (hitcon2014_stkof)

伪造fake_chunk然后向前和并,出发unlink,修改第一个堆块指针,为free的got表,第二块的指针改为puts的got表,然后再把free的got表改为puts的plt表,然后free堆块2,泄露出libc_base,然后计算出system函数的地址,再把free的got表改为system函数,然后释放字符串为/bin/sh的堆块,getshell。输入一个申请的大小。正常申请堆块,输入大小,然后按大小申请一个,返回堆块的序号。这个输出并不会打印堆块的内容,是个假的输出。查看程序逻辑以及保护。

2023-05-25 13:56:58 112

原创 区块链的简单了解,以及靶场题目Vault的复现

区块链,就是一个又一个区块组成的链条。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。这些服务器在区块链系统中被称为节点,它们为整个区块链系统提供存储空间和算力支持。如果要修改区块链中的信息,必须征得半数以上节点的同意并修改所有节点中的信息,而这些节点通常掌握在不同的主体手中,因此篡改区块链中的信息是一件极其困难的事。相比于传统的网络,区块链具有两大核心特点:一是数据难以篡改、二是去中心化。

2023-05-18 20:31:11 2294

原创 buuctf (pwnable_start)(babyfengshui_33c3_2016)(gyctf_2020_borrowstack)(ciscn_2019)(hitcontraining_h)

可以通过先申请几个小堆块chunnk0,1,2,3,再利用off by one漏洞用0修改1的大小,把2和一造成重叠,然后再申请回来,通过1把2的存储堆块指针的地方修改为free的got表地址,这样就能dump出来泄露libc,然后计算system,再修改free的got为system函数地址,然后free3就能getshell了。存储字符的时候,三个4字节大小的部分分别是printf的地址(相当于dump)free堆块的操作地址,存储字符的堆块的地址。

2023-05-17 21:07:20 153

原创 buuctf pwn(wustctf2020_closed)(hitcontraining_magicheap)(axb_2019_fmt32)

程序有alarm闹钟函数,并且有明显的格式化字符串漏洞,而且能无限利用格式化字符串漏洞,本来想用我之前的那种解法直接解决的,但是遇到了些问题(下面说),而且这个题目got表可写,所以还是老老实实打got表吧。2.编辑堆块,根据bss段里的指针,来找到相应的堆块,然后输入大小,再填充内容,并未检测原本输入堆块内容的大小,那么此处存在堆溢出。再通过读入,覆盖dest的指针为free的got表地址,然后strcpy将free的got表地址的地址覆盖为shllcode的地址。

2023-04-29 19:32:31 251

原创 buuctf pwn (inndy_rop)(cmcc_simplerop)([ZJCTF 2019]Login)

由于buuctf好多pwn题目都是一个类型的,所以就把不同的,学到东西的题目,记录一下。

2023-04-18 17:39:36 251

原创 buuctf hitcontraining_uaf

会把指针堆块1重新分配给我们,context堆块会把指针堆块0分配给我们(因为我们申请一个堆块实际上是申请两个堆块(一个指针堆块,一个context堆块))程序是先申请一个指针堆块,这个指针堆块的大小为8字节,前四字节存储的是puts函数的指针,后四字节存储的是要申请的堆块内容指针就是相当于这样。3.打印堆块内容,这段代码会把指针堆块的第一个指针来执行函数,如果把第一个指针修改为后门函数指针,就能getshell。2.释放堆块,这个操作,在释放堆块之后,并未把指针置零,所以存在uaf漏洞。

2023-04-12 09:12:15 236 3

原创 buuctf (babyheap_0ctf_2017)([ZJCTF 2019]EasyHeap)初学堆的两道例题

先了解一下chunk的结构size的低三位表示为:这里会用到 PREV_INUSE(P): 表示前一个chunk是否为allocated。P位为1时代表物理相邻的前一个chunk为free状态,此时prev_size代表前一个chunk的大小。非fastbin的chunk在free时会与物理相邻的空闲chunk合并。

2023-04-03 16:55:36 191

原创 关于在栈上格式化字符串漏洞的利用方法

先说一下这个思路吧,就是通过两次格式化字符串漏洞,第一次泄露libc_base,以及栈里面的一个地址(任意)第二次修改printf的返回地址为one_gadget去getshell。

2023-03-18 21:33:00 472

原创 ubuntu20.04开机界面黑屏,只有一个光标闪烁

首先开机界面就是这个东西,一直卡在这不动了,原因就是,内存被用完了,无法加载出图形化界面。

2023-03-04 00:49:17 10166 11

原创 记一次栈迁移执行system函数时,栈空间不足的题

将读入的内容写到0x601f00-0x70的地方去,再利用下面的leave ret栈迁移到前面的地方去,我们在前面的地方写入我们的rop链。按照普通栈迁移的思路应该就是,第一次read读入rop链子,第二次读入使程序迁移到rop链子上去。这里我用的是onegadget,但是满足条件的没找到,那就构造满足条件的。这个就是通过pop rbx把rbx修改成0x601f00,再去进入到。那么既然只能执行一次,那就用onegadget,试过之后,会发现。执行到了不能访问的空间,所以这个应该就是行不通的了。

2023-02-26 19:10:01 143

原创 2023西湖论剑pwn 部分wp

也就是*(&v3 + i) = v0 修改一个字节的内容,但是我们也要解一下这个方程,以免程序被exit()而且在buf的下面的变量都是能够覆盖的,也就是说,我们能通过覆盖 i 的值进行数组溢出。一个格式化字符串漏洞,一个栈溢出,但是只能副盖rbp和返回地址,所有要考虑栈迁移。我看有个大佬的解法很奇特,准备学习一下,待我学成,再来补充另外一种方法。泄露出这个函数地址,就能得到 libc——base。根据距离rbp的距离将相应的变量填入。这里的main指的是start,第二次getshell。

2023-02-18 18:38:53 629

原创 buuctf pwn (21~24)

这个可以用这个fmtstr_payload,也可以不用,首先先看一下偏移。分析之后,发现这个if判断不让我们输入的数大于10,那这直接用整数溢出。如果出现超时的情况,就换一下libc版本,多试几次就能找到。栈溢出,没有system函数,没有/bin/sh字符串。这个是格式化字符串漏洞,通过这个漏洞,可以把x覆盖为4。32位elf文件,再看一下程序逻辑。64位elf文件,看一下程序逻辑。64位elf文件,看一下程序逻辑。32位elf文件,看一下逻辑。之前写过相关的,看一下,

2022-12-26 15:29:25 381

原创 buuctf pwn (17~20)

那这直接控制程序走向这个函数,但是这个函数,并不会把flag打印出来,所以要用到了write函数。小tips:如果sys对应的是system函数的plt表地址,那么payload应该为。strcpy在复制的时候,没有限制长度,所以我们只要输入的src够长,就能完成栈溢出。意思是只要一nc,就直接执行shellcode,然后getshell了。函数存在system函数,再看一眼有没有/bin/sh字符串。挨个看了每一个函数的逻辑发现getflag函数存在栈溢出。通过看这个程序的函数发现,这个题是静态编译的。

2022-12-25 15:24:04 535

原创 buuctf pwn(13~16)

[OGeek2019]babyropjarvisoj_level2_x64[HarekazeCTF2019]baby_ropciscn_2019_en_2

2022-12-23 21:29:16 137

原创 buuctf pwn(9~12)

14但是这样是打不通的两个payload我都调试了一下发现,这个数组的每一个下表对应的区域是一个地址,所以需要借助一下这个p32打包成32位的这样发送出去。

2022-12-22 01:10:23 227

原创 buuctf pwn(5~8)

buuctf pwn (5~8)

2022-12-04 21:44:16 245

原创 buuctf pwn(1~4)

buuctf前四道题目的做法

2022-11-22 00:31:07 175 1

原创 ctf 逆向 暴力破解类的脚本

前言:在分析代码的时候常遇到不好逆向的逻辑,如求余(%)等,下面就是含有求余的两道逆向题目例题一:buuctf [ACTF新生赛2020]rome1.查壳无壳32位exe.2.ida32打开并分析main函数发现主要函数 func()int func(){ int result; // eax int v1; // [esp+14h] [ebp-44h] int v2; // [esp+18h] [ebp-40h] int v3; // [esp+1Ch] [ebp-3Ch

2022-03-15 19:32:26 1730

原创 BUUCTF(re8~re9)

re8:reverse31.下载附件并查壳32位无壳2.用ida32打开并查看字符找到关键函数,并且注意到abcd…(很有可能用到了base64加密)跟进查看伪c代码流程大概就是:输入一段字符串,然后经过sub-4110BE函数,再每位减去自己的下标值,再和str2比较。下面再带着思路去看函数内容很明显是base64加密,所以下面就剩脚本了脚本如下:import base64d='e3nifIH9b_C@n@dH'c=''for i in range(len(d)):

2022-03-02 21:17:05 312

原创 BUUCTF(re1~re6)

re1:easyre1.下载附件并查壳64位exe2.ida64打开并查看字符

2022-02-28 16:08:57 557

原创 gfsj(maze)

maze前言: 这中带maze的一般就是迷宫类题目,所以在做的时候思路就是:1.找到迷宫的地图2.找到方向3.找到迷宫路线下面开始看题:1.下载附件并查壳elf文件,64位2.用ida64打开,并通过shift+f12找有用的字符串(迷宫地图很有可能就在这里)这写**可能就是地图,先留意着3.在函数里找到中重要函数,f54.找到各个方向代表的字母这四个应该就是四个方向,找到各个字符所代表的方向(当打开时,是数字,选中数字按 r 就能显示出来)跟踪sub_400650,su

2022-02-12 20:44:27 334 1

原创 gfsj(getit)

getit1.下载附件并查壳elf文件且是64位2.用ida64打开,找到main函数f5,开始分析(/tmp是linux临时文件夹,运行完之后就被清理了。)可以看到先判断v5是否大于s存储字符串的长度,然后通过运算,最后将得到的flag写入文件两种方法,1.动态调试思路:在flag文件未被删除前,查看他。1.我们向下追踪,追踪到for循环的位置,因为,flag是在这里存入文件的,所以,我们可以在内存中找到正要存储的字符串我们将鼠标指向strlen(),在下面可以看到汇编所在的地址,

2022-02-12 20:00:04 543

原创 gfsj(csaw2013reversing2)

csaw2013reversing21.下载附件并查壳32位,无壳2.用ida打开找到main函数 (字符串无可用信息)可以明显看到这是在提示用动态调试这个sub_401000应该是属于解密函数在看其他信息有这个int 3断点,和loc_4010B9输出窗口所以大致猜测思路就是取消断点,跳转至解密函数,再跳转至输出窗口。拖入od1.让程序跳转至解密函数2.找到断点地址109A,并取消断点。3.找到输出窗口地址,即10B9,在解密函数下面进行跳转。得到flag总结:

2022-02-11 17:01:12 189

原创 gfsj (no-strings-attached)

no-strings-attached1.下载附件并查壳32位且是elf文件2.用ida32位打开(1)找到main函数,并查看字符串无可用信息3.f5生成伪c代码当跟进最后一个时发现重要信息如果s2和ws相等就—跟进成功。然而s2是dword_8048A90被decrypt加密之后的产物,法一: 分析decrypt这个函数思路:跟进decrypt然后分析它的运算逻辑,然后,自己写脚本,得到最后的flag提取这些s和dword_8048A90的数据(shift+e)

2022-02-10 20:36:27 459

原创 gfsj(insanity~re1)

insanity1.下载附件并查壳可以看到是32位2.用ida32打开3.查看字符9447{This_is_a_flag}python-trade1.下载附件发现是pyc文件2.用python反编译打开这个文件分析一下这个代码脚本如下:import base64c = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'c = base64.b64decode(c)flag = ''for i in c: flag += chr((ord(chr(i))-16

2022-01-24 15:46:40 228

原创 gfsj (logmein)

re4

2022-01-23 18:48:13 194

原创 gfsj re2~3(open-source~simple-unpack)

open-source1.下载附件发现是用记事本打开这应该就是源码,分析得出2.的脚本如下for i in range(100): if((i%5!=3) and (i%17 ==8)): print(i)print(hex(51966*31337+(25%17)*11+7-1615810207))得出 0xc0ffeeflag为 c0ffeesimple-unpack1.先下载附件查壳upx壳,2.在kali下脱壳(upx -d +文件名

2022-01-22 16:58:13 252

原创 gfsj re1

game前言:不通过游戏的方法1.打开附件2.查壳无壳3.用ida分析放入ida4.shift+f12查看字符往下拉有个sorry所以这个数据不对5.用f5跟进main拉到最下面发现是sub…所以这个里面可能是核心,跟进再跟进这个应该很重要往下拉是一堆数字这个应该那些数字的变化方式,分析发现函数进行了两次xor运算,xor的逆运算也是xor,那么我们就可以根据这个运算来写脚本得到最后的flag这里看到v2和v59这就证明了这是两个数组的运算,所以我们应该将上面的字符

2022-01-21 20:19:57 301

原创 ctfshow re2

打开附件如下勒索病毒我去上网查了一下,发现是通过加密数据,所以这个题可能和加密有关,除了勒索病毒还有一个enflag.txt打开如下先不管这个第一步查壳这个exe程序无壳。第二步用ida32位打开这个shift+f12查看字符有个充值成功,跟进可以看到这个字符串 DHmqqvqxB^||zll@Jqjkwpmvez{可以知道是异或,脚本如下s="DH~mqqvqxB^||zll@Jq~jkwpmvez{"key=""for c in s: key+=chr(ord

2022-01-19 14:06:21 2492 4

原创 云演长安战役re复盘(2)

re3:cute_doge附件打开如下查壳x64,用ida64分析base64解码flag{Ch1na_yyds_cazy}总结: 在看到x64时,想到的是用x64dbg想用x64dbg调试一下,如下但是我被没有发现什么,后来wp别人是有的,有点不懂。

2022-01-18 19:24:53 155

原创 云演长安战役re复盘(1)

前言:第二次参加比赛,而且做的题特别少,没啥经验,一天下来一个题也没拿下,但是我不灰心,我相信我一定能够学好re第一个re: lemon下载附件打开发现跟进一脸懵!不会了…第二个re: combat_slogan这个题是做出来最多的,但奈何我见识太短… …附件是.jar文件,之后才知道是需要java反编译,用jd-gui 把附件拖入之后发现和这个main函数发现所以我以为这段数字肯定就是flag的关键信息,rot13解密发现还是一堆数字,所以这个不是那么果然flag{We_w11l

2022-01-13 20:23:47 148

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除