
pwn
文章平均质量分 61
仅仅个人垃圾做题笔记而已,不建议阅读。
y6y6y666
这个作者很懒,什么都没留下…
展开
-
kali 装pwngdb报错版本不兼容
pwndbg是gdb的一个插件,而pythono会影响gdb的安装,gdb安装后会将python的绝对路径写入到配置中,然后安装pwndbg插件的时候就会找python的路径。这个具体不知道啥原因,但是还好有师傅,其实这样装好后是可以用的,只是不兼容,可能有些功能会受限制。而这种报错其实并不是不能用,也不是上边说的那种情况。这个时候用gdb pwndbg插件是有效的。第198行 requirements.txt。注意的是我这里的pip对应的是python3。安装pwndbg的时候报的错。原创 2023-05-11 14:34:38 · 1472 阅读 · 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 评论 -
关于gdb简单的动态调试
就是会打通,和刚才的不一样刚才是继续向下执行,也就是说没有跳转到int0x80,会发现int 0x80没有跳转,那么就可能是shellcode的问题了。那么可以在启动这里添加一行代码,然后他会打印出当前进程的pid。还是以上一题为例子吧,在换shellcode前是打不通的。其实好像是可以让他自己新建一个终端的,但是我比较笨。这个时候好像是已经打进去了,让我们在gdb跟踪下。换一个shell是可以打通的,来看下执行过程。在这里回车一次就进入到栈栈中了,和刚才一样。在这里,回车,会调用到int 0x80。原创 2023-03-14 10:34:56 · 358 阅读 · 0 评论 -
gdb p指令看地址内容
原创 2023-03-30 22:30:18 · 839 阅读 · 0 评论 -
小白入门pwn笔记--elf文件概述
用于攻击的脚本与方案。cpu可以执行的文件。里边好像都是机器码。原创 2023-02-01 20:52:09 · 567 阅读 · 0 评论 -
PWN入门程序装载与虚拟内存 小白笔记
CPU和硬件最终访问的都是物理内存,但是由于物理内存的一些机制,所以对于程序员不太友好。不同的功能区域被划分为不同的节。不同的功能区域根据读写权限划分为一个一个段,然后在虚拟内存中发挥作用。节根据读写权限不同被划分为不同的段,然后不同的段由系统完成映射。节视图是在磁盘中划分功能的,段试图是程序装载在内存中划分不同的读写执行权限的。整个4GB是这样一个结构,最上边的kernel(内核空间)是共享的。执行的时候,是将磁盘中的可执行文件(a.out)映像到内存中。这里的右边的图片中内存地址的单位是bits。原创 2023-02-02 21:51:07 · 413 阅读 · 0 评论 -
小白入门pwn笔记 CPU与进程的执行
内存把一条一条的代码和数据给cpu,cpu把指令执行完后把所需要的数据返回给内存。CPU与内存沟通的渠道是地址总线,数据总线,指令。PC:(amd64 - rip)保存当前内存中的代码段正在执行的代码地址。不可写的数据一般会被放在代码段、可读的被放在数据段。距离cpu最近的存储器速度越快,容量越小,价格越贵,其中,r开头的寄存器,表示64位,8比特。直接嵌套在cpu中的存储器:寄存器reg。它所指向的指令会被传送到cpu中执行。根据读写执行的权限不同在内存中。上储存时的文件结构的组织。原创 2023-02-03 13:24:59 · 368 阅读 · 0 评论 -
pwn小白入门 装载 笔记
由于动态链接是由动态链接器在程序加载的时候进行的,当需要时定位的符号(函数库)多了之后,势必会影响性能。弊端是链接的文件过多时输出的可执行文件会非常零散。段的装载地址和空间以页为单位,不足一页的也会占用一页,这样会造成内存空间的浪费。延时绑定:当函数第一次被调用的时候动态链接器才会进行符号查找、重定位等操作,如果没有被调用就不绑定。讲不同的目标文件相同的属性合并成一个节。动态链接是链接的时间是在程序运行或加载的时候,动态链接只载入目标文件,所调用的库被共享。在内存中完成链接的过程。链接的时间是运行之前。原创 2023-02-03 21:16:16 · 538 阅读 · 0 评论 -
gdb的简单练习
但是set $rbp-0x8改的是它所指向的地址,并不是地址所指向的内容。首先用生成目标文件、gcc后边是源文件名字、-o后边的是目标文件名字。如果不运行下断点到下边那个地址的话到某个地址的话可能会出错。然后会有一个文件,就叫做gdbshouxi。红色的是cmp比较函数,就是刚刚写的if。比较的是dword嘛双字节所以就是w了。发现要比较的是eax和rbp-0x4。就可以执行到shellcode了。断点下错了可以用d 标号删除。或者改rbp-0x8也可以。箭头所指就是即将要运行的。原创 2023-02-22 21:37:17 · 416 阅读 · 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 评论 -
第一道pwn栈溢出题
代码和解题思路来自启明星辰的《ctf安全竞赛入门》,当然还有好多热心的师傅们的指导。原创 2023-03-03 19:05:33 · 990 阅读 · 0 评论 -
第二道pwn题:shellcode
rbp:保存的是栈中当前执行函数的基本地址。当前执行函数所有存储在。这里使用了视频说这里用了 call rax所以不能用F5。查看文件类型和保护,虽然现在的我·还没有明白太多的保护。那么如果我们输入shellcode不久获取到了权限了吗。最重要的是最后,call rax,[rbp+buf]栈上的数据都要靠rbp指针加上偏移量来读取。rsp:栈指针,永远指向栈顶。他的意思就是执行输入的内容。64位,放到ida里边。原创 2023-03-08 21:29:02 · 783 阅读 · 0 评论 -
第三道pwn题 whellcode
这样这道题差不多就就解决了,但是我比较笨,抄答案没有抄写对,视频给的答案是远程连接的,我不会,我就改成本地的了,视频中的shellcode在本地不知道为啥打不通,还好师教我动态调试,我才知道是shellcode的问题。这个回车是我们输入的,但是在写脚本的时候是没有回车的,所以0x24个字节可以覆盖到ebp再往后就是返回地址了。打印24个字母,四个b用来覆盖ebp,回车后可以查看ebp发现是4个b还有一个\n(回车)唔翻车了,是因为python2没有安装pwntools 没有办法,我比较笨,只能安装了。原创 2023-03-13 21:50:46 · 255 阅读 · 0 评论 -
pwn栈溢出基础笔记
压入栈内的数据包括调用参数,返回地址,调用函数的基地址,以及局部变量,其中调用参数以外的数据共同构成了被调用函数(callee)的状态。称之为“栈”是因为发生函数调用的时候,调用函数(caller)的状态保存在栈内,被调用函数(callee)的状态被压入调用栈的栈顶。函数调用的时候,栈的变化核心任务是将调用函数(caller)的状态保存起来,同时创建被调用函数(callee)的状态。在函数调用结束时,栈顶的函数(callee)状态被弹出,栈顶恢复到调用函数(caller)的状态,恢复寄存器的值。原创 2023-03-17 21:31:06 · 818 阅读 · 0 评论 -
一些基础1
哈希值: BuildID[sha1]=0c87b9c78dfb45f9f4883860d647923d3635497。interpreter /lib64/ld-linux-x86-64.so.2:连接器的位置。7.objdump -d 文件名 | less(反汇编)2.readelf -a 文件名 | less。dynamically linked:动态链接。4.hexdump 文件名 | less。3.nm 文件名 | less。x86-64:64位。查看用到的库函数的位置。:设置反汇编语言类型。原创 2023-03-14 21:04:35 · 240 阅读 · 0 评论 -
栈溢出进阶 小白笔记
具有canary保护的程序在canary检查不同时,回报错,然后打印出文件名,文件名好像是在运行的时候保存进去的。当canary被改后程序会调用 _stack_chk_fail@plt然后调用__fortify__fail源代码__stack_chk_fail函数,它会调用__fortify_fail函数,__fortify_fail函数有一个参数,这个参数就是我们程序崩溃的时候打印出来的数据。下边是__fortify_fail 函数的源代码。原创 2023-04-05 23:02:14 · 1008 阅读 · 0 评论 -
PWN ret2xxx 小白笔记
绕过NX,Return Oriented Programming主要思想是:在栈缓冲溢出的基础上,利用程序中已有的小片段gadgets,来改变某些寄存器或者变量的值,从而控制程序的执行流程。所谓gadgets就是以ret结尾的指令序列,通过这些指令序列,我们可以修改某些地址的内容,方便控制程序的执行流程。之所以称之为ROP,是因为核心在于利用了指令集中的ret指令,改变了1指令流的执行顺序。ROP攻击一般得满足如下条件:1.程序存在栈溢出,并且可以控制返回地址。原创 2023-03-30 15:31:37 · 226 阅读 · 0 评论