自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 堆基础1_小白垃圾笔记

虚拟内存中一块连续的线性空间。用户空间随取随用的一段空间。动态申请。下图中绿色的部分。(heap)那么获取堆空间的两种方式是由什么决定的呢?两个要素吧:1:主线程都可以 过大用mmap,小用brk2.子线程仅mmap。

2023-06-02 08:55:28 343

原创 rust 环境搭建linker link.exe not found

执行下边的命令(如果不是管理员可能会有权限不够的错误)(一定是一条一条执行否则可能会有错)

2023-06-01 10:30:03 268

原创 picoctf_2018_rop chain

最后对于flag的返回地址我们已经设置成了p32(0x0BAAAAAAD)。payload+=p32(0x0BAAAAAAD) #win2的第一个参数(同时也是flag的返回地址、不过已经不重要)payload+=p32(flag_addr) #win2的返回地址设置为flag的地址。我们的目的是使得win1不为0,win2不为0,且调用flag的时候a1参数是0BAAAAAAD。然后win2是有两个参数的第一个依旧是返回地址我们写flag的地址,第二个是a1这里是比较的数据。

2023-05-26 19:28:29 925 1

原创 jarvisoj_level3

思路是通过write泄露write的地址,然后计算偏移。小白垃圾笔记,不建议阅读。拷贝到本地,感觉方便多了。

2023-05-24 21:27:54 168 1

原创 [HarekazeCTF2019]baby_rop2

本来我也是想泄露printf的got的,没打通,然后就去搜教程了。网上的脚本有两个一个是pop了两个参数,一个是pop了一个参数。我都试了下,没有问题,也就是说printf函数pop一个就可以。本来以为第10行,有坑呢。结果好像是我想多了。1.一个是有的函数泄露libc打印不写出来。2.另一个是printf函数的利用吧。3.栈对齐好像是只有system有。脚本如下区别是第一个payload。那么大概思路就是泄露libc了。小白垃圾笔记,不建议阅读。

2023-05-24 20:43:29 788

原创 pwn2_sctf_2016

思路是泄露libc,通过printf,将printf的libc打印出来然后搜索。不幸的是,我没有搜到,在搜了一晚上加一上午后。我去交流群内讨论,结果师傅说,buu有libc。溢出点是vuln函数。因为get_n函数一次只能从缓冲区获取一个字符,它的作用好像就是把字符·放到vuln的buf中。这道题说是ubuntu16,所以下16,32位(刚刚看过)然后把libc复制到题目路径下,不是也可以,自己决定,仅仅是一个路径而已。然后利用溢出点溢出。小白垃圾做题笔记,不建议阅读。这道题,依旧做了半天。

2023-05-23 11:24:29 108

原创 jarvisoj_tell_me_something

我在调试的时候并没有发现ebp,我用python生成了0x88个字符后,有手动输入了8个a。还好听了师傅的话,每次打之前确定下ida是否判断的正确。这个的话,输入0x88个字符后,后边就是返回地址。查找字符串后ctrl+x找到函数所在地址。意思就是0x88个字符后就是返回地址了。小白垃圾做题笔记,不及建议阅读。

2023-05-22 12:04:10 86

原创 ciscn_2019_es_2

小白垃圾做题笔记,不及建议阅读。声明,exp来自网络,调试过程自己调试,对于题目的理解仅供参考。由于本人也是小白,且pwn全靠自己摸索,所以有很多理解不到位的地方。如有错误,欢迎指正。

2023-05-21 22:10:52 708 1

原创 jarvisoj_fm

fmtstr_payload(offset,writes,numbwritten=0,write_size='byte')

2023-05-20 16:42:27 776

原创 bjdctf_2020_babystack2

23行是溢出点,但是前提是先绕过前边的if语句。文件中有system和/bin/sh。小白垃圾做题笔记,不建议阅读。这里我的思路是用负数。

2023-05-19 17:36:49 56

原创 bjdctf_2020_babyrop

小白垃圾做题笔记,不建议阅读。64位,看来又要绕过NX了。看来要泄露libc了。

2023-05-19 16:42:09 105

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

32位,只有NX,Partial RELRO开启,这里不是full,got表中也不是真实地址,所以需要调用一次,其实可以当次调用,当次泄露。就是第一次调用的同时打印出该函数的got中的内容。可以在这里调用write函数,然后将write函数的got表重的内容打印出来,从而获取libc版本。进而计算偏移,得到system,/bin/sh地址。本来是在kali做的,结果没有打通,后来换到ubuntu18可以打通。看来kali也不是万能的。字符串没有什么system也没有/bin/sh那就需要泄露libc了。

2023-05-19 11:16:47 61

原创 【无标题】

他会将src内容给dest。可以将payload写入·src然后复制到dest发生溢出,获取shell。溢出点是GetFlag中的strcpy函数。这道题主要是卡在了寻找/bin/sh。看了大佬的题解后才知道查找sh也可以。小白垃圾笔记,不及阅读。

2023-05-18 18:51:10 42

原创 others_shellcode

这道题,好像就是nc 你的主机。小白垃圾笔记,不建议阅读。

2023-05-18 11:50:58 56

原创 not_the_same_3dsctf_2016

看到有好多函数,我感觉是静态编译,于是我去找有没有system函数和/bin/sh(shift+f12)解题思路大概是将flag.txt读到某个地址里,然后将flag写出来。左边的函数窗口ctrl+F输入要找的函数名。那么找下有没有puts或者write函数。小白垃圾做题笔记而已,不建议阅读。双击后,ctrl+x查看调用函数。看下main函数,存在溢出。读取flag就很好。

2023-05-18 11:38:40 76

原创 ciscn_2019_n_5

那么如果name有可执行权限就把shell写道bss里。然后利用text的溢出,覆盖返回地址为name的地址。为什么不把shellcode写到text?因为,不能确定地址。这道题,刚开始用的是卡里,发现bss段没有可执行权限。后来放到了ubuntu18里才有。小白垃圾做题笔记,不建议阅读。

2023-05-18 10:24:35 59

原创 BUUCTF ciscn_2019_en_2

脚本2和3的区别就是puts的返回地址覆盖不同而已。注意这个64位程序。所以在搜索的时候需要选择amd64那个。只有输入1的时候才会进入encrypt函数,否则会退出。前边调用最多的就是puts,那就通过puts泄露libc。脚本一是本地调试,其中的libc路径是ldd看的。有一个根据strlen函数进行加密的运算。小白垃圾做题笔记,不建议阅读。

2023-05-14 14:58:10 129

原创 BUUCTF [HarekazeCTF2019]baby_rop

不过因为这是64位程序,所以我们需要找一些东西的地址。main函数里直接是漏洞 ,第6行存在栈溢出。/bin/sh (当作system的参数)小白做题垃圾笔记,不建议阅读。system(调用系统函数·)pop rdi (用来传参)一次打不通可以多打几次。ret(用来栈对齐)

2023-05-13 17:41:51 205

原创 BUUCTF jarvisoj_level2_x64

因为有栈对齐所以需要ret,因为是64位传参所以需要pop rdi。system函数的地址也可以看。小白做题笔记,不建议阅读。我们尝试找下bin/sh。函数直接调用漏洞函数。

2023-05-12 22:41:02 300

原创 [OGeek2019]babyrop

那么我们第一次溢出泄露出write的真实地址。从而用于计算system和binsh的地址,然后再次构造payload,执行system函数。所以我们还需要绕过strlen,让他比较0个字符,这样是相等的,就会返回0,if里的退出语句就不会被执行。所以要想溢出首先要绕过buf[7]这一关,将buf[7]这里设置成\xff。这一行:标准输入到buf那么我们如果要设置buf[7]=\xff。后来发现不是版本的问题,是我的脚本的问题。所以buf[7]实际对应的是第八个数据。更离谱的是还把ubuntu16给玩坏了。

2023-05-12 22:07:42 607

原创 patchelf 和 glibc-all-in-one

小白垃圾笔记。不建议阅读。为什么突然学这个呢?因为因为因为一个栈溢出题,把我的ubuntu16搞崩了。具体是什么原因呢。我很菜,我不知道pip是干啥的,之前装pwntools都是直接粘贴命令。然而这次,ubuntu16的python其实有一个高版本的带pwntools库的pyton3.10.但是呢我一不小心搞丢了。于是乎我去装python结果遇到了很多问题,现在想想,是没有ssl证书。去网上搜了下没有解决。好吧,果断下卡里。ubuntu16太老了。之前有师傅说做哪个题用哪个版本的ubuntu。

2023-05-12 21:37:45 1036

原创 kali 装pwngdb报错版本不兼容

pwndbg是gdb的一个插件,而pythono会影响gdb的安装,gdb安装后会将python的绝对路径写入到配置中,然后安装pwndbg插件的时候就会找python的路径。这个具体不知道啥原因,但是还好有师傅,其实这样装好后是可以用的,只是不兼容,可能有些功能会受限制。而这种报错其实并不是不能用,也不是上边说的那种情况。这个时候用gdb pwndbg插件是有效的。第198行 requirements.txt。注意的是我这里的pip对应的是python3。安装pwndbg的时候报的错。

2023-05-11 14:34:38 1224

原创 BUUCTF bjdctf_2020_babystack

有的,所以我们的利用思路就是将返回地址先覆盖为pop rdi;ret 的地址,将参数(/bin/sh)传入rdi。然后再将system的地址填充进去,这样pop rdi;执行ret的时候就会去执行system。那么pop rdi;ret 后边的内容就应该是/bin/sh的地址了。有system函数调用,并且存在/bin/sh。去找有没有pop rdi ret。小白做题笔记而已,不建议阅读。64为程序用rdi传参。read函数存在栈溢出。

2023-04-30 22:05:04 315 2

原创 BUUCTF jarvisoj_level2

本来我记得system的第一个参数是返回地址,但是打了没打通,我就试了这个结果打通了。思路大概就是将返回地址覆盖为system函数的地址,然后填入参数bin/sh。存在溢出,并且有系统函数的调用,那么看下又没有/bin/sh。32位程序,开了nx,放到ida里瞧瞧。小白做题笔记而已,不建议阅读观看。快捷键 shift+f12。nice,构造payload。

2023-04-30 21:30:26 77

原创 BUUCTF ciscn_2019_n_8

推断是整形数据,那么就是四个字节,我们可以覆盖到 var[13]将他设置成17。我是可以打通的,大佬说需要弄成p64啥的,或者p32(17)+p32(0)因为我并没有看到数组的定义,所以不知道存储类型。这保护全看根本无从下手嘛。我是小白,直到看到了大佬的wp,我才有有点头绪。小白垃圾做题笔记而已,不建议阅读观看。看了题解问了chat才勉强可以写exp。这里,var[13]里的不能为0。这可如何是好,数组题做的比较少。看到源程序后我依然有点迷茫。感觉好像不用考虑那么多。我都试了下,可以打通。

2023-04-30 20:34:28 801

原创 BUUCTF ciscn_2019_c_1

小白垃圾做题笔记而已,不建议阅读。

2023-04-30 17:07:10 713

原创 BUUCTF [第五空间2019 决赛]PWN5

先去atoi的plt表,然后plt表对应的got地址被我们改成system的plt表的地址了。system是第一次被执行,他首先去system的plt表,这个时候对应的got表里存放的是system的下一跳地址,他会去寻找system的地址,并且执行system。而plt表的下一跳就是got表,由于版本原因,并没有将atoi got表的地址改为system的got表,但是也是可以执行system的,因为我直接将他改为system在ida中的地址了。发现是把got表对那个的内容给改掉了。

2023-04-27 17:24:11 641

原创 BUUCTF jarvisoj_level0

vulnerable函数是一个漏洞函数:(存在缓溢出),我们只需要将buf溢出到返回地址,返回地址覆盖为sys函数地址即可。在main函数中调用了vulnerable_function()函数。小白垃圾做题笔记而已,不建议阅读。这道题感觉主要就是64位程序ebp=8。题目中给出了shellcode。我们直接将返回地址覆盖就好。exp:这里用下大佬的模板。

2023-04-25 21:33:13 462

原创 BUUCTF pwn1_sctf_2016

很懵逼,看不懂,大佬说是将I换成you。问了下chat竟然给弄反了。还有就是卡住我一下午的地方。唉,因为没有在一开始创建flag文件,导致调试了半天也没有找到问题所在。s的偏移是3c也就是60个字节,不要忘记我们还需要4个字节来填充ebp。我用的是python2,不用在字母前加b,python3需要加b。为什么是3*16呢?因为我们每输入一个I就会变成you。而我们最终是要让前边填充的是64。小白垃圾笔记而已,不建议阅读。我们可以将返回地址覆盖成它。也就是从一个字节变成三个字节。好吧,还是计算偏移把。

2023-04-25 19:32:01 360

原创 BUUCTF warmup_csaw_2016

唉,本来以为是让写shellcode的打了半天没打通,后来发现疏忽了sub_40060D函数。第一个参数是目标缓冲区的地址,第二个参数是格式化字符串。后边是需要格式化的参数。那么sprintf(s, "%p\n", sub_40060D);后来他又把写入的地址打印到屏幕上了。前两行(6,7)没啥就是把那个字符串写到屏幕上。就是将后边函数的地址以16进制形式写入到s中。上边是低地址,下边是高地址。这个函数用于将格式化的字符串写入到缓冲区。那不就是把返回地址覆盖成这个地址吗?小白垃圾做题笔记而已,不建议阅读。

2023-04-25 12:11:43 366

原创 plt got

在函数对应的plt表中第一行是跳转指令,跳转到got表对应地址(刚开始got中对应的地址是跳转指令的下一条指令也就是下边的push),第二条是push,将该函数对应的一个固定的数入栈,第三条指令是跳转:跳转到plt表前边的一个函数,这个函数会去libc中找该函数对应的地址,然后填充到对应got表的地址,并且跳转过去执行。刚开始got表中对应的并不是libc中的真实地址,而是plt表的地址,是刚刚跳转过来地址的下一跳地址。好好的为啥要跳过来呢?plt和got是如何结合实现外部函数(glibc)的调用的呢?

2023-04-23 18:43:52 533

原创 数据结构第四章串

仅仅个人笔记。

2023-04-10 22:40:08 40

原创 数据结构第三章栈和队列

个人笔记而已,不喜勿喷。

2023-04-10 22:36:20 78

原创 循环链表

【代码】循环链表。

2023-04-10 22:25:46 55

原创 Digispark与 badusb

小白笔记而已,不喜勿喷。前几天见学长玩badusb手痒了,去淘宝一搜,价格有点小贵,于是乎去bilibili搜了下,有教程,成本十几块钱,买了。其实我是买了两次的。第一次买错了,接口不是usb的。还好我机智买了运费险。

2023-04-06 21:32:56 459 2

原创 栈溢出进阶 小白笔记

具有canary保护的程序在canary检查不同时,回报错,然后打印出文件名,文件名好像是在运行的时候保存进去的。当canary被改后程序会调用 _stack_chk_fail@plt然后调用__fortify__fail源代码__stack_chk_fail函数,它会调用__fortify_fail函数,__fortify_fail函数有一个参数,这个参数就是我们程序崩溃的时候打印出来的数据。下边是__fortify_fail 函数的源代码。

2023-04-05 23:02:14 818

原创 mstp笔记

stp instance 1 priority 8192(对于该交换机,实例1中该交换机的优先级是8192)stp instance 2 priority 4096(对于该交换机,实例2中该交换机的优先级是4096)instance 1 vlan 10(创建了1个实例,名字是1,对应vlan10)instance 2 vlan 20(创建了1个实例,名字是2,对应vlan20)stp region-configration(域)revision-level 1(一样)region-name hdc(一样)

2023-03-31 22:39:53 51

原创 BUUCTF ciscn_2019_n_1 做题笔记

没有canary,没有nx,没有pie,只有一个relro,这个好像是堆栈地址随机化,听说是开启了partial后got表不可修改,开启full后,好吧不瞎说了,问。因为它读的时候其实还是用的gets函数,而gets函数的话其实是会将每一个字符都转换成对应的acsii然后进行存储。师傅说是输入一个字节一个自己的时候是顺着,按照dword或者dword的时候就是小端序了。是汇编,我看了半天没看懂, 我第一次自己做题,没反应过来。这道题是昨天做的,今天用了一位师父的镜像,好像挺好用的不过我用的还不熟练。

2023-03-31 22:11:40 471

原创 gdb p指令看地址内容

2023-03-30 22:30:18 768

原创 PWN ret2xxx 小白笔记

绕过NX,Return Oriented Programming主要思想是:在栈缓冲溢出的基础上,利用程序中已有的小片段gadgets,来改变某些寄存器或者变量的值,从而控制程序的执行流程。所谓gadgets就是以ret结尾的指令序列,通过这些指令序列,我们可以修改某些地址的内容,方便控制程序的执行流程。之所以称之为ROP,是因为核心在于利用了指令集中的ret指令,改变了1指令流的执行顺序。ROP攻击一般得满足如下条件:1.程序存在栈溢出,并且可以控制返回地址。

2023-03-30 15:31:37 200

空空如也

空空如也

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

TA关注的人

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