- 博客(17)
- 收藏
- 关注
原创 nepctf-canutrytry 之 c++ 异常处理
ida里反编译出来的内容并没有体现异常处理,需要我们进入汇编查看。当程序执行过程中遇到异常,比如除零,数组越界等等,就会抛出异常。字样,我们可以在反汇编里标注出来,也就是我之前给出的代码段中。函数的重命名,按列出的顺序从上到下分别是这些名字。代码段后,会根据抛出的异常类型来选择被哪个。可以劫持异常的跳转,跳转到本不应该触发的。触发异常后的回退也依赖他们,所以攻击。函数原本没触发异常,那就会按照他的。函数中触发的异常,就得先退回到。中,其余的内容在另一个。的,所以回退到对应的。,这个地址对应的就是。
2025-07-28 15:33:52
945
原创 house of emma
于2.23版本中,我们可以通过劫持vtable的方式来攻击2.24版本开始,增加了对vtable的检查,所以我们借助但是glibc-2.28 起,上的不再调用(IO_FILE 结构体) 上的函数指针。而利用的就是vtable检查范围内的另一个函数表,适用环境glibc2.34及以下优点:跟同样的assert触发方式,但是不需要可写缺点:需要爆破后续分析会说明为什么会有这两个优缺点整个利用比较简单,只需要了解一下其中的一个加密,其余步骤都很常规#endifreturn -1。
2025-07-07 14:36:59
848
原创 litctf 2025 pwn wp
暂时onlyone和master_of_rop还没写好但是有相关的文章,有很多部分是相似的,可以参考一下。
2025-05-26 19:17:07
590
2
原创 京麒 2025 pwn OldWine wp
可以看到,调用read函数后会返回到main中,而在执行read前这个值就在栈中出现了,如果我们成功的把他的值的最后一字节改成\x45,就可以来到ida中所示的write函数的前一步,就有机会泄露栈上的关键信息了。由于我们是爆破的栈环境,我们实际上不知道具体的read的返回地址离我们的rbp多远,所以通过对每个八字节都更改最后一字节来 爆破到read的返回地址,此时的情况就是一此次爆破下来的。需要爆破,第一步的爆破差不多就是1/3的概率,后续能否成功迁移也有不稳定因素。存在沙箱,因此选择orw。
2025-05-24 23:05:00
925
原创 xyctf 2025 pwn 部分wp(更新中)
漏洞函数是一个数组越界,由于我们时往v2中读入,其中只需要关心v6的值即可,并且由于是1字节1字节读入的,所以后续我们的payload略微注意即可栈溢出。因此,这道题我们在执行时会发现,只有程序结束后才会出现主函数中输出的那句话, 是因为程序退出时exit刷新了缓冲区。但是这道题的第二行,对于stdout的初始化选用了全缓冲的初始化方式,看下图了解一下全缓冲。ps:远程和本地的缓冲区填满次数有所不同,需要另外测试。一道全缓冲+特殊gadget的ret2libc题。主函数很简单,初始化,输出,和漏洞函数。
2025-04-30 14:00:48
372
原创 ctfshow 堆利用 160-172(继续更新)
现在回看show和edit部分,都有提到编辑或输出ptr的内容,但是这个ptr的值一直用的是v3 chunck中存储的ptr的值,所以如果我们通过堆溢出漏洞,使ptr的值被改写,不就能够造成攻击了吗。现在我我们申请0x100的chunck会让ptr申请最上面的unsorted bin chunck,然后v3 chunck会在top chunck处切割出来。释放两个chunck,置零了v3的值,但是没有置零v3chunck中存储的ptr的值,可能存在漏洞,不过没有应用。
2025-04-02 22:54:57
723
原创 polarctf 2025 春季个人挑战赛PWN wp(部分)
我们可以看到ebp中存储了一个值,这个值与我们输入位置的地址的偏移是固定的,我们可以通过print泄露这个值,再在gdb中算出固定偏移,这样我们救恩那个求出输入位置的地址。可以看到我们send了0x50个a,刚好覆盖到了ebp前,记住要用send,sendline的话还会多一个换行符,就会覆盖到ebp的最低位,我们的泄露就会出错。ebp a—>b这示意图中,a是ebp的地址,b是泄露出来的ebp的值,千万不要混淆这个概念,输出的都是栈上的数据,如aaaaaaa……可以看到核心函数mom中可以分为三次读入。
2025-03-23 11:50:40
606
原创 NSSCTF Round#28 pwn wp
等等,显然,这些数据当作size太大了,我们的fastbin的范围才0x20~0x80,所以我们进行前后移位,就可以发现一些0x76(用的是两个0x76中上面的那个)这个数字,可以作为size。malloc_hook:在调用malloc函数前会调用,一般malloc_hook中都是0,如果在调用malloc_hook时,它的值是0,就不会执行,如果有内容,就执行该地址指向的内容。我们以第二张图为例,接下来申请两次chunck,第一次取出0x150da0d0,第二次取出fake chunck。
2025-03-22 18:16:45
839
3
原创 ctfshow 堆利用前置基础 pwn 141~159 wp(已完结)
2.注意我们的add和delete部分,delete部分在释放后是不会置零的,所以在add部分,我们哪怕释放了无数个chunck,他的指针都不是零,指针不是零这个位置就不会用来申请新的chunck,所以我们第三次add时其实申请在序号2,序号为0的组别始终存储着我们第一次申请时的那一组chunck1和chunck2。此时,由于tcache bin先释放后被申请的特性,下面的那个allocated chunck是此时的chunck1,上面的那个allocated chunck才是此时的chunck2。
2025-03-19 18:58:05
1385
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人