- 博客(32)
- 收藏
- 关注
原创 B站pwn教程笔记-5
首先复习一下ELF文件在内存和磁盘中的不同。内存只关注读写这权限,会合并一些代码段。动态链接库只在内存中单独装在一份因为很多软件都要用动态链接库了,不可能一个个单独复制一份。但是在有的调试环境下会单独显示出来各一份。ld.so是装载器。为什么用栈来储存,因为函数都是后调用先返回,刚好符合栈的后进先出的特点。ebp指向先前EBP的字节的开头部分(默认小端序)返回地址上面紧跟的就是子函数参数,为了绕过一些保护手段,攻击手段不断升级了。
2025-03-20 21:32:55
486
原创 BUUCTF逆向刷题笔记(13-?)持续更新
随后, 看这个代码:我们可以改写为:ASCII不超过128的,对着以后还要敏感点。但是%128并不是无用,因为里面还有负数,如-1%5还余4,(在python里面)这个需要注意。
2025-03-12 20:54:46
1512
原创 B站pwn教程笔记-4
也需要ROP创造执行shellcode的环境。但通常返回的是动态链接库里面。难点:因为是动态链接,自带的gadget较少。注意,这里有个干扰函数,但是这里的system函数确实给plt表增加了一个表项(前提是动态连接的软件),相当于知道system地址了。我们就可以让她在libc执行一个system。因为是32位,我们要在栈上控制一手参数,让system函数的参数变成有用的。参数都是在父函数。最终栈帧构造如下(以后会详细讲解):最后一个知识点:C语言传递字符串参数传递的是起始指针。
2025-03-05 20:23:01
906
原创 B站pwn教程笔记-3
GDB显示的栈地址有时候并不是可靠的地址,gdb也是用特殊的进程映像来拿地址的。且gdb默认关闭栈地址随机化。但是,偏移量是没有错误的。目前还没学到咋解决第一个栈帧是main函数栈帧,之前的一些系统函数什么的没有栈帧。执行了leave之后的情况:会pop ebp,所以esp+1,然后ebp恢复原来样子了。然后会执行retn,那就是将返回地址相当于pop给eip寄存器。,在 ebp下面会有一个值,创建栈帧的时候就有了。如果销毁栈帧时检测到这个值被修改了,那么他就会崩溃退出。可以在gcc编译的时候打开。
2025-02-25 19:36:16
943
2
原创 B站pwn教程笔记-2
栈帧结构概览看上图的高地址和低地址。arguments是子函数的形参。蓝色的是上一个栈的ebp值,用于在子函数执行完毕之后,返回到正确的ebp.heap的占的内存大大的超过stack。下面看看调用栈的详细过程。一个函数都是以push ebp开始,因为这保存了主调函数的栈底,便于下一步恢复。离开一般都是leave和retn。而call自己就会将返回地址压入栈中。第一个栈溢出病毒莫里斯蠕虫 下图是一些用得到的工具。后两个工具以后会接触,one_gadget貌似牛逼点。保护措施见上图。
2025-02-24 19:05:31
692
原创 B站pwn教程笔记-1
就算只有4G内存,可能进程的虚拟内存都有三四G,这为了方便开发,真实物理地址寻址都交给操作系统来完成,不需要程序员考虑。fork()父进程拷贝分配给自己的虚拟内存,后期进行重写操作成子进程elf里面的。比如小端序的0x0233,在栈溢出里面,低地址存的是233,很容易覆盖了。注意链接(就像有的函数需要链接)这一步,有静态连接和动态连接。RAX一般存放返回值。因为没有垃圾处理机制,适合做编译,不会有堵塞 c语言市场占有率还是比较高的。在linux 给程序分配了3G虚拟内存,有1G是系统进程占用,大家共享。
2025-01-24 22:51:19
446
2
原创 攻防世界PWN刷题笔记(引导模式)1-4 持续更新!!!
观察read函数上的buf字符数组,其长度为 80.它的下面还有s和r,r肯定保存着返回地址,s应该是保存的寄存器内容。具体的解释看下图,我们填满了函数自己的栈,溢出的内容覆盖了r.我们通过read输入了大于4字节的东西,多的就会“溢出”跑到goal的地址,从而篡改goal的内容。IDA将数字转为字符是nuaa,(大于2字节,是小端序,所以我们需要将其转换为aaun才可,与我们阅读习惯相反)我们看这个函数的汇编语言。但是发现函数的地址一直在低地址,这些函数都在高地址,怎么实现高地址对低地址的控制?
2024-12-26 21:32:12
1032
2
原创 攻防世界web(新手模式)刷题笔记
逆向太难了!!!学会儿入门的web切换一下大脑,本博客只记录一部分web题目,因为有的题已经做过了,但是没留下一些笔记。
2024-12-17 23:04:58
571
原创 攻防世界杂项刷题笔记(引导模式)24-待补充
播放动图,发现每一帧都是一个区域,考虑给这几个图片拼在一起看看会发生什么.拼出来是个这个,转而看看这个gif是否存在隐藏文件,这个字母难道是某种密码?最后发现并不是,iscc是比赛平台的名字.文件末尾的 这一串数据非常可疑,直接base64解密是无法解出的.查阅writeup发现,,密钥就是ISCC!需要解密两次扩展:AES特征就是和base64有点像,有+/等字符,是一种对称密码.还没有学那么深刻,等以后强大再继续来看!!!
2024-12-13 17:35:40
621
原创 攻防世界逆向刷题笔记(新手模式6-8)
看题目名字似乎是让咱们点击1000次之后才会出flag。本来打算用CE看能不能搜索出来数值,技术不到家,最后没有搜索到,还导致永劫无间打不了了。所以还是拿出IDA老实分析。直接搜索flag字符,出来一大堆。张紫涵大佬说是Text对的这个,一看果然是。但是不能局限于此,还要分析为啥是这个。发现除了text,其他的都没有交叉引用。那就差不多可以判断这个就是flag了。而且目标字符串的引用意思是弹窗提示此消息,更落实我们的猜想。软件还有一个输入框,会根据输入的信息提示正确或者错误。
2024-12-12 19:58:11
1040
原创 攻防世界安卓刷题笔记(新手模式)1-4
进入后是这样的页面。查看源代码看看。首先要注意这个软件并没有加壳,所以我们可以直接着手分析。搜索错误提示“Failed”定位到关键代码,看样子就是检验输入的内容注意到这里有一行关键代码,cond_39对应的正是failed那个地方,我们直接采用修改跳转条件的方法,看看会不会直接提示出flag。进去是进去了,结果还有第二关,看样子貌似和图片隐写相关?这里先存疑,继续分析代码。这里并没有错误提示,不太好直接定位。那么我们就从图片入手,看看图片本身是否存在问题。并没有直接找到图片,而是找到了一个压缩包。
2024-12-10 19:19:26
1433
1
原创 攻防世界杂项刷题笔记(引导模式)13-23
经过上一次如来十三掌的磨练,这题在看到题干“十三掌”的时候我是丝毫不慌张的。附件给了压缩包,考虑是不是伪加密,改一下看看。改的步骤省略,确实是伪加密。然后给了一串疑似是base64的编码。出来的结果出乎意料,那么先偏移13位看看,结果也是错误的.使用随波逐流一把梭了,接下来就要介绍下base64隐写。原理就是base64编码会在源数据末尾+0,其实也可以+不是0的数值,因为不影响编码后的结果。我贴的博客里面有python的实现方法,本人采取了一把梭的小白做法。
2024-12-06 12:36:11
701
原创 攻防世界杂项刷题笔记(引导模式)3-12
进去之后,考虑是与佛论禅加密,首先解密。解密出来看样子有点像base64,但是base64解不出来,于是重新考虑思路,未果。看题解发现,实际上需要先经过rot13解码,再使用base64。rot13实际上就是凯撒密码的密钥为13后生成的文字。因此,可以考虑使用穷举法因为看佛曰解密后类似于base64,但是解码不出来,就可以考虑是否经过简单的移位密码加密,其实题目的13已经给了我们提示。本人技术不高,等未来会补充脚本在这里。
2024-12-04 21:36:29
701
原创 Ollydbg的入门使用
B: 即Breakpoints window,断点窗口,用来管理和查看用户的断点。L:log window,日志窗口,用来显示程序的输入输出和一些断点之类的日志信息E:Executable modules window,也就是可执行模块窗口,列出当前进程的所有可执行模块及其信息。M窗口,Memory window,也就是内存窗口。可以查看内存信息,查看其中存储的数据之类。R窗口,Registers window,寄存器窗口,显示有关寄存器的一些信息。
2024-11-23 14:57:03
1141
2
原创 吾爱破解安卓逆向学习笔记(3p)
感觉和CTF的逆向有一点出入,但是我认为基础都是差不多的。同时,假如作为开发者,也要注意做好防护,如混淆和方法名起名注意一点。要反复看Smali语法,提升相关水平。
2024-11-17 23:15:52
787
原创 吾爱破解安卓逆向学习笔记(1-2p)
(比较懒,先把原图放在这里)assets文件就是存放资源的。ib目录存放了so文件,so文件类似于windows的dll文件。META-INF目录存放的是关于应用签名一类的信息。res不仅也会存放一些资源,它内部的layout文件还决定着app的布局,相当于app的脸蛋。有的app还有kotlin文件,说明这个软件是kotlin开发的,或者部分是采取kotlin开发的。kotlin是最近几年起来的专门编写app的语言。原来都是java来干这个活。有的app还有okhttp3,说明导入了这个包开发。
2024-11-17 11:25:36
332
原创 攻防世界逆向刷题笔记(新手模式1-5)
发现是64位,直接丢IDA看看先。下代码经过分析,应该是当括号内容是false的时候,才会执行nice,估计就是正确的代码。接下来,我们点进去看看。有必要说明的是,sub_xxx一般指一个函数。以下是函数似乎实现了一个算法,我们目的是让他返回0,也就是让if不成立。那也就是让表达式里面的值等于1就行了。首先获取它们代表的整数到底是什么。这串代码用到了指针的概念,但是目前我还没咋掌握指针,参考了题解后大胆认为:它是获取减号前面表达式的字符,然后在获取减号后面的字符,估计后面的字符应该比前一个少一。
2024-11-15 20:47:50
776
原创 IDA的简单入门使用
刚刚入门逆向,对这方面知识近乎于0,因此写着一篇笔记,记载自己不懂的和搞会的,以供日后查阅使用。在下才疏学浅,虽然本文内容较为基础,但是难免有不对之处,敬请指正。
2024-11-15 17:13:16
3185
原创 sql注入学习笔记(盲注)
根据sql-lab的靶场关卡,进行盲注的注入学习。这是参考的一篇大佬的文章。盲注是指攻击者不能直接获取数据库中的信息,需要通过一些技巧来判断或推断出数据库中的数据。盲注主要分为布尔盲注和时间盲注两种。
2024-11-01 19:55:46
500
原创 BUUCTF杂项刷题笔记(1~12)
待补充待补充图片隐写解决办法:安装stegsolve工具,使用逐帧查看解决题目。要注意里面并不是hello而是he11o(是1),输错几次才发现。刚开始以为是宽高隐写,后来发现只需要查看图片信息即可。还是使用上面的工具。扫码进去没发现玄机。png基本思路:更改宽高或者看有无隐藏文件。考虑里面隐藏有文件夹。用winhex打开发现确实有一个可疑文件。binwalk扫描一波,发现了可疑文件 4number.txt可以使用foremos提取,更加精准。
2024-10-26 00:52:54
371
原创 sql注入学习笔记(基本知识和简单注入)
原因是将用户输入的数据当作代码执行,违背了数据和代码相分离的初衷。所以,sql注入需要我们有插入恶意代码的地方,而且代码可以被执行。
2024-10-24 23:30:08
610
原创 linux安装蚁剑
搜索得知估计是图形界面什么出问题了。估计是不允许其他用户的图形界面出现。切换为root用户,执行xhost +命令。(本来打算直接git克隆,但是出了连接错误问题,后期会写博客描述解决办法)我直接复制到/home/kali会提示报错,新建用户却可以避免这个问题。的帖子,挂载后才出现了共享文件夹,得以传输文件。看自己系统架构,下载对应的安装包。暂时不知道原因,多试几次发现成功了。
2024-10-22 23:56:40
381
原创 shell学习笔记*变量类型和参数传递
可以理解为终端是一个容器或环境,而 Shell 是在这个环境中运行的一个工具。命令提示符是 Windows 系统中的一种终端实现。shell本身是C开发的程序,用来方便用户和系统交互。shell脚本缀为.sh。如果用 php 写 shell 脚本,扩展名就用 php。
2024-10-20 15:34:35
295
原创 在学长的鼓励下做一道简单的web题
有俩办法,一个是禁用JS,还有一种办法用hackbar。为了装逼,我用hackbar。根据代码,火速按照以下方式配置hackbar!传入一个classname参数,要求捕获成功。控制台已经提示传入什么参数了。于是输入revealFlag("参数")即可!代码意思是某个元素不等于解封,说如何是好。把已封印改为解封就行了。第一个页面,直接看源代码就得到flag了。必须加http://才可以连上。
2024-10-16 23:06:09
164
原创 MySQL学习笔记(增删改查)
1.mysql对于大小写不敏感,select=SELECT2.基本操作:增删改查,一般只需要查,其他的有比较大的风险。跟着runoob.com的SQL基础篇学习,笔记基于它而写的。下代码表示显示website表的所有数据,部分数据库系统要求每条语句后面有“;from是查询的表名,where是查询条件,order是排列方式。select后面如果跟字段名,比如name,id之类,则只会返回那些字段。*表示显示全部字段!
2024-10-13 15:37:58
996
原创 解决mysql的ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)问题
所以,如果你不想使用 mysql -uroot -proot 这种加了两个参数(-u、 -p)方式登录 MySQL 数据库,就是想,直接 敲命令 mysql 就能进入 MySQL 控制台的话,你就需要告诉,MySQL,你不想使用 Windows 系统为你选的 ODBC 用户去连 MySQL,你想使用一个你熟悉的用户登录 MySQL,并且,在登录的时候,不想输入过多的 参数,只用一个 mysql 命令 ,就可以登录到 MySQL 控制台中。请注意,这里,账号,和密码,这两项都要填入,否则,还会报原来的错误,
2024-10-13 14:20:35
3421
原创 记录今日安装mysql遇到的问题以及解决方式
右键此电脑,属性,高级系统设置,环境变量,找到PATH,点进去之后,新建一行C:\Program Files\MySQL\MySQL Server 8.0\bin(这是我的安装路径)。一路确定,以管理员方式运行命令行(可以用win+s搜cmd),输入mysql -uroot -p,发现让输入密码,解锁了MySQl命令行,说明成了。环境变量可以指定系统如何运行,以及应用程序的运行方式和位置。进到设置--应用,输入c++,全部删除,然后重新安装操作即可。可以使用一些手段加快访问,不展开说了。
2024-10-12 19:47:34
310
1
原创 10-10日:初识linux
一般来说,如果一个命令既接受 -d 这种简短形式的参数,也接受 --dir 这种长参数形式,通常它们都是用于指定目录相关的操作。例如,在某些命令中,-d 和 --dir 都可能用来指定一个目录路径以便进行特定的处理,如创建、删除、搜索特定目录下的内容等操作。如果 “/parent” 目录存在,但 “/parent/dir” 目录不存在,那么在执行这个操作时,系统会自动创建 “/parent/dir” 这个中间目录,然后再创建“subdir” 目录。使用的时候,直接tldr+命令就有了。
2024-10-11 20:29:48
371
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人