自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【RISC-V操作系统制作学习】前瞻(一)

b站上看了汪辰老师的课,感觉这部分讲的确实特别好,尤其对之前学习二进制安全或者后面的系统级安全都是。这一部分课程主要把学习RISC-V系统的一些前瞻性知识联合在一起了,对于针对组成原理、操作系统,以及我们的C如何把他们联系在一起都起到了非常好的帮助。

2025-02-24 20:14:06 381

原创 [how2heap]fastbin_dup_into_stack.c(5)

这玩意虽然上一节讲过了,这里决定再复习一下,顺便用buu平台的一个例题来简单说一下到底怎么打(如果你熟悉我们上一节的知识点,你肯定还是会存疑,比如怎么改栈上的地址?怎么完成栈的攻击?这些,希望这里这个例题可以完成这些疑惑的解答)

2025-01-21 16:47:26 656

原创 [buu]ez_pz_hackover_2016

所以这里我们回到的地址应该是在0x0xff8c1e90这个地址上,接下来我们有的地址是0xff8c1eac,怎么表示这个地址呢?这里很可能存在溢出了,这里可以控制我们返回地址的写入(当然这个题在这里打ret2libc也是可以的,但这里libc基地址不太好算(要不传统打法返回两次,这里返回打起来有点点麻烦没shellcode快))(这里其实我们有两个程序栈,一个是chall对应的栈,另一个是vuln对应的程序栈(这个理解成代码需要的内存空间),但这个算出来最后其实不是我们实际要覆盖的返回地址)

2024-12-23 00:29:18 335

原创 [SWPUCTF 2021 新生赛]非常简单的逻辑题

并且要注意的是针对这里的result += s[(s1+i)%34]+s[-(s2+i+1)%34]这一步,其实实现的是字符上的拼接而不是直接的数值相加,相当于s1构成结果的第一位,s2构成结果的第二位。大概逻辑,就是我依次读我的flag值,s1进行除的运算操作,s2进行与运算,然后这两个结果又和我们的s进行一个迭代运算(所以这个东西最后逆的时候应该从后往前算)这里我们顺着这个逻辑来一下result第一位是v对应s中4(从0开始),也就是说(s1+i)%34=4,所以s1=4,第二位23,所以s2=10。

2024-12-23 00:26:21 211

原创 [World Wide CTF 2024]Buffer Brawl

其次就是这个版本下的system函数0x0050d70,注意这个0d70,他刚好对应的是/p,所以这里会被截断,所以上面那个脚本死活也打不通(这里我在调试的时候其实也看到了,就是这个system的地址死活写不进去,到这里就会开始抛异常,一直以为是栈没写对,长见识了)p1前半部分泄露的地址相当于在调用plt,加上后面的got就可以泄露地址了(因为程序本身就是循环的,所以不用返回)正如我们一开始分析的那样,后面就是打打我们的栈,填上我们的canary,然后ret2libc就完了。

2024-12-13 21:45:52 807

原创 [World Wide CTF 2024]All your base are belong to us

可以直接梭到这个结果(官网到这里是乱码,笑,猜猜我卡哪里了QAQ,到这里基本也就出了(脸黑),所以说要更新啊!这里其实本身也没啥难的,主要记录一下有关base65536这个东西,确实有(每天一点没什么用的小知识)(网页版好像识别有问题,搬了官网的最新版本本地一把梭)

2024-12-13 13:45:32 231

原创 [World Wide CTF 2024]WhiteRabbit

根据我们一开始说的,这个gets其实存了,(可以理解为我已经写进去了,但是还没有实现调用),所以最后一步就是实现这个rax的调用(这里其实call rax/jmp rax/甚至返回到main上面都可以实现,本质上其实是想实现这样一个ret的过程)(基于x86的调用机制决定,函数的输出结果必须存储在rax,所以get函数的输出结果(也就是我们输入的包含有地址的)也存在rax寄存器里面)第一种方法:翻你的汇编代码,有jmp rax的/call rax的,直接base加上去就可以了。超级明显的一个栈溢出漏洞。

2024-12-11 20:19:09 415

原创 [how2heap] fastbin_dup.c(4)

接下来我们的bins其实还有还留有一个虚假的a(因为实际上我们已经拿走这个堆块了,但是因为doublefree,所以bins上还有这个)我们把它的fd地址覆盖为栈地址减0x8(因为伪造的chunk要有个 size,size在&stack_var - 0x8的位置上)(请记住,我们申请的chunk fd指针会指向下一个,bk会指向前一个)(这里是针对2.34下的平台环境,其实我本地16也差不多,这里解析用他平台,调试用我本地来展示)可以看到我们这里对于chunk a申请了两次,我重新拿回了我的a。

2024-12-04 21:01:43 501 1

原创 [how2heap] calc_tcache_idx.c(3)

这个东西你要理解成一个链表数组和多个链表组成的,在上文中我们讲到的索引号就可以和这里的链表数组对应起来,每个tcache bin对应7个chunk。这里的代码主要用来了解一下tache机制的分配情况,也不存在攻击,主要是了解为主:(简单做了下代码的翻译,没啥攻击点)这里我们已经提及了tcache机制中一个比较核心的部分:按照分散管理的形式实现了对不同大小的chunk的管理。然后结合我们给出的原理,现在可以轻松地计算我们所需要的索引号啦~可以看一下这篇文章,讲的也挺好的。

2024-12-04 12:26:14 250

原创 [how2heap] first_fit.c (2)

至此,就是最最直观的UAF,说白了还是函数指针没有清的原因,这里最直观的就是我p1指向对应内存空间的函数指针没有清除,所以当我实现p2指向我们新的内存空间(其实也就是原来的内存),p1和p2指向了同一个地址。现在,给p2赋值为我们的后门函数(有点像我p1的缓存没清干净,所以我申请的p2也就是我的p1,但是他们又是不一样的两个东西,所以这个时候就会出问题)(3)、我们重新申请一个比这个堆块小的堆块,我们会惊讶地发现,我们申请到了之前我们释放的堆块。可以看到原来的echo还存在的,这里的依旧会执行。

2024-12-04 12:24:47 901

原创 [how2heap] 前置说明(1)

快速存储小块,无需合并。临时进入,稍后转移到合适的small bin。临时进入,然后按大小排序插入到large bin。所有释放块的中转站,优先满足后续分配请求。这里本质上要对应free的块大小来的,这个在后面我们会重点说一下,以及针对他们的攻击手段,这里就先简单地放个介绍。

2024-12-04 12:22:48 741 1

原创 Ubuntu 20.04找不到eth0接口问题

这个时候再看ifconfig就会发现显示了eth0,而且比较关键的一个点在于这样不会影响网络的使用,需要用原来的名字同样在那个配置文件里面恢复注释就可以了。这里可以直接给他注释掉,加上:GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"如题,在进行iot模拟固件的过程中发现程序刚需eth0接口,但是ifconfig本地只有ens33.在这个配置文件里面,找到:GRUB_CMDLINE_LINUX。主要还是版本高了所以命名发生了改变,老版本沿用,新版本就变了。

2024-08-27 22:30:01 597

原创 铁人三项(第五赛区)_2018_rop

大概就是,0x88+0x04进行栈溢出覆盖返回地址,然后重新载入main函数,接下来利用write函数的三个参数传入信息(这里建议查看一下write函数的三个参数意义,最后一位因为是32位,所以大小是4)看到开了有一个可以写入的函数,然后会输出一些东西,同时在f12之后也没有看到和system以及bin/sh有关的东西。p1过程为了获得write_addr的过程,这里涉及到了延迟绑定机制,注意,这里是32位的程序,和64位先读入寄存器的方式有一点区别。(主要还是针对新手在写,尽量写的详细一点吧)

2023-08-25 21:15:01 188 1

原创 [SWPUCTF 2022 新生赛]InfoPrinter

所以我们大概的思路就是泄露libc地址算出system地址,强改为system,#用的libcsearcher,远端多试几个就完事。利用puts(xx),强改为bin/sh。输入可以得到我们输入字符串的位置在。可以看到data中位于这个位置。就可以获得偏移量是6。

2023-08-22 16:46:49 245 1

原创 [CISCN 2022 初赛]login_normal

CISCN 的一道(对我而言不)简单的pwn题。。。

2023-05-21 22:28:21 545 3

原创 很好的一道复习题(1)

形状的继承、动物的继承、....,代表的对象不一样,但描述形式都是差不多的。System.out.println("我是一只狗,我的名字是"+getName()+",今年"+getAge()+"岁");,直接用animal.getName()不行,需要把animal进行转型,即((Dog或Cat)animal).getName(),【我在课堂上解析一道关于“计算并返回传入的形状数组中所有对象的面积和”的实验题时专门说过如何转型的问题】例如,最后给出这一道题目的代码:(仅供参考,肯定是可以优化的)

2023-05-03 23:02:31 211 1

原创 【无标题】

线程安全的集合对象:线程不安全的集合对象:

2023-04-12 20:51:17 150 1

原创 PTA-2023面向对象程序设计(练习3)部分判断选择题

写在前面,实在是能力有限,写这个主要是因为自己的基础太差了,方便在期末的时候进行复习......所以说,可能还是有错误。2、缺省构造方法:没有定义,这个时候会默认一个(也就是已经定义过了就不会有),同时,仅仅对于这个类而言。类Teacher和Student是类Person的子类,下面的代码中最后一句语句的运行结果是( ).一般是先父类的默认构造方法,然后子类的构造方法,最后父类的构造方法。3、一个类只能有一个父类,但一个接口可以有一个以上的父接口。答案:C,表达式有误,两个类是无关的,无法相互转化。

2023-04-01 15:49:53 720 1

空空如也

空空如也

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

TA关注的人

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