
BUUCTF
文章平均质量分 52
个人垃圾做题笔记而已,不建议阅读。
y6y6y666
这个作者很懒,什么都没留下…
展开
-
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 · 983 阅读 · 1 评论 -
jarvisoj_level3
思路是通过write泄露write的地址,然后计算偏移。小白垃圾笔记,不建议阅读。拷贝到本地,感觉方便多了。原创 2023-05-24 21:27:54 · 235 阅读 · 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 · 877 阅读 · 0 评论 -
pwn2_sctf_2016
思路是泄露libc,通过printf,将printf的libc打印出来然后搜索。不幸的是,我没有搜到,在搜了一晚上加一上午后。我去交流群内讨论,结果师傅说,buu有libc。溢出点是vuln函数。因为get_n函数一次只能从缓冲区获取一个字符,它的作用好像就是把字符·放到vuln的buf中。这道题说是ubuntu16,所以下16,32位(刚刚看过)然后把libc复制到题目路径下,不是也可以,自己决定,仅仅是一个路径而已。然后利用溢出点溢出。小白垃圾做题笔记,不建议阅读。这道题,依旧做了半天。原创 2023-05-23 11:24:29 · 196 阅读 · 0 评论 -
jarvisoj_tell_me_something
我在调试的时候并没有发现ebp,我用python生成了0x88个字符后,有手动输入了8个a。还好听了师傅的话,每次打之前确定下ida是否判断的正确。这个的话,输入0x88个字符后,后边就是返回地址。查找字符串后ctrl+x找到函数所在地址。意思就是0x88个字符后就是返回地址了。小白垃圾做题笔记,不及建议阅读。原创 2023-05-22 12:04:10 · 127 阅读 · 0 评论 -
ciscn_2019_es_2
小白垃圾做题笔记,不及建议阅读。声明,exp来自网络,调试过程自己调试,对于题目的理解仅供参考。由于本人也是小白,且pwn全靠自己摸索,所以有很多理解不到位的地方。如有错误,欢迎指正。原创 2023-05-21 22:10:52 · 915 阅读 · 1 评论 -
jarvisoj_fm
fmtstr_payload(offset,writes,numbwritten=0,write_size='byte')原创 2023-05-20 16:42:27 · 839 阅读 · 0 评论 -
bjdctf_2020_babyrop
小白垃圾做题笔记,不建议阅读。64位,看来又要绕过NX了。看来要泄露libc了。原创 2023-05-19 16:42:09 · 137 阅读 · 0 评论 -
铁人三项(第五赛区)_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 · 91 阅读 · 0 评论 -
others_shellcode
这道题,好像就是nc 你的主机。小白垃圾笔记,不建议阅读。原创 2023-05-18 11:50:58 · 76 阅读 · 0 评论 -
BUUCTF ciscn_2019_en_2
脚本2和3的区别就是puts的返回地址覆盖不同而已。注意这个64位程序。所以在搜索的时候需要选择amd64那个。只有输入1的时候才会进入encrypt函数,否则会退出。前边调用最多的就是puts,那就通过puts泄露libc。脚本一是本地调试,其中的libc路径是ldd看的。有一个根据strlen函数进行加密的运算。小白垃圾做题笔记,不建议阅读。原创 2023-05-14 14:58:10 · 166 阅读 · 0 评论 -
BUUCTF jarvisoj_level2_x64
因为有栈对齐所以需要ret,因为是64位传参所以需要pop rdi。system函数的地址也可以看。小白做题笔记,不建议阅读。我们尝试找下bin/sh。函数直接调用漏洞函数。原创 2023-05-12 22:41:02 · 366 阅读 · 0 评论 -
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 · 422 阅读 · 2 评论 -
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 · 818 阅读 · 0 评论 -
BUUCTF ciscn_2019_c_1
小白垃圾做题笔记而已,不建议阅读。原创 2023-04-30 17:07:10 · 731 阅读 · 0 评论 -
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 · 680 阅读 · 0 评论 -
BUUCTF jarvisoj_level0
vulnerable函数是一个漏洞函数:(存在缓溢出),我们只需要将buf溢出到返回地址,返回地址覆盖为sys函数地址即可。在main函数中调用了vulnerable_function()函数。小白垃圾做题笔记而已,不建议阅读。这道题感觉主要就是64位程序ebp=8。题目中给出了shellcode。我们直接将返回地址覆盖就好。exp:这里用下大佬的模板。原创 2023-04-25 21:33:13 · 516 阅读 · 0 评论 -
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 · 376 阅读 · 0 评论 -
BUUCTF ciscn_2019_n_1 做题笔记
没有canary,没有nx,没有pie,只有一个relro,这个好像是堆栈地址随机化,听说是开启了partial后got表不可修改,开启full后,好吧不瞎说了,问。因为它读的时候其实还是用的gets函数,而gets函数的话其实是会将每一个字符都转换成对应的acsii然后进行存储。师傅说是输入一个字节一个自己的时候是顺着,按照dword或者dword的时候就是小端序了。是汇编,我看了半天没看懂, 我第一次自己做题,没反应过来。这道题是昨天做的,今天用了一位师父的镜像,好像挺好用的不过我用的还不熟练。原创 2023-03-31 22:11:40 · 502 阅读 · 0 评论 -
BUUCTF warmup_csaw_2016
唉,本来以为是让写shellcode的打了半天没打通,后来发现疏忽了sub_40060D函数。第一个参数是目标缓冲区的地址,第二个参数是格式化字符串。后边是需要格式化的参数。那么sprintf(s, "%p\n", sub_40060D);后来他又把写入的地址打印到屏幕上了。前两行(6,7)没啥就是把那个字符串写到屏幕上。就是将后边函数的地址以16进制形式写入到s中。上边是低地址,下边是高地址。这个函数用于将格式化的字符串写入到缓冲区。那不就是把返回地址覆盖成这个地址吗?小白垃圾做题笔记而已,不建议阅读。原创 2023-04-25 12:11:43 · 386 阅读 · 0 评论