自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 gyctf_2020_borrowstack 1

在read buf处存在栈溢出漏洞,但只能溢出8字节,而后面有向bss段bank处读入数据,我们就可以通过栈迁移,借用bank处的bss段构建栈,但因为该bss段距离.got.plt段非常近,所以要通过在bank处构建的payload时先填充20个ret指令的地址从而实现抬高栈,这样就不会覆盖到got表处了,抬高20个可能是因为后面又要回到main函数,而main函数中要执行sub esp 60h这样如果没有抬栈就会由于主函数中的操作将got段覆盖掉。该题还有一个就是用了一个工具one_gadget。

2024-03-27 20:56:58 348 1

原创 pwnable_start 1

好像不能编译,只能看汇编了。该程序主要有2个系统调用,先是使用write函数输出的write的系统调用,然后是使用read函数输入的read的系统调用。而read函数这只能读入0x3c的数据,根据后面的代码可知读入处距离返回地址只有0x14,故可以造成栈溢出。然后这题也没有什么libc,有没有开NX,故可以向栈中写入shellcode然后想办法跳转到shellcode处执行。

2024-03-25 23:15:35 423

原创 picoctf_2018_shellcode 1

发现main函数不能编译,只能看汇编了,在main中还调用了vuln函数,然后我们查看一下可疑的vuln函数然后我们就要知道参数a1是从哪传进来的,回到main函数vuln处发现参数a1应是ebp+var_A0处的内容,也就是我们会在这个位置写入任意东西。再往后看发现它会直接call这个位置,而且该程序没有开NX,故我们可以直接发送shellcode,这样程序就会直接执行shellcode从而拿到shell。

2024-03-25 15:55:19 300

原创 ciscn_2019_s_9 1

fgets处能栈溢出,然后我们发现可疑函数hint()这个函数会直接跳转到esp处执行,我们可以在栈溢出时将返回地址溢出到该函数处,到时候函数执行返回指令ret(pop eip)时esp会-4,跳转到hint函数时会jmp到esp(返回地址的下一个位置),我们可以在这个位置随意构造汇编指令。所以首先我们可以在s开始的位置就将shellcode写入,手搓shellcode的长度也就32,然后通过上面的思路,构造汇编指令时可以构造sub esp,40;

2024-03-25 15:40:00 150

原创 buu axb_2019_fmt32 1

程序大概的逻辑是先使用read函数向s读入最多0x100个字节,然后将s拼接在Repeater:后面再加一个\n后将其存入format里,然后输出format,s的大小为0x239,故不能栈溢出。而printf(format)这存在格式化字符串漏洞。而且该程序开启的只是Partial RELRO保护,所以每个libc函数对应的GOT表项是可以被修改的。

2024-03-24 14:23:41 317 1

原创 others_babystack 1

输入1向s输入,输入2输出s,输入3后return 0。首先该程序可以通过向s输入数据进行栈溢出,但有canary保护,就需要考虑如何绕过它。然后看到puts(s),可以想到使用puts函数来打印canary,所以就需要找到canary在栈中的位置。

2024-03-21 22:49:44 1370

原创 buu [Black Watch 入群题]PWN 1

程序的逻辑是先输出一段话m1:Hello good Ctfer!再向s中输入0x200的数据,再输出一段话m2:What do you want to say?然后再向buf中读入0x20的数据。

2024-03-13 21:28:03 805

原创 picoctf_2018_buffer overflow 2 1

主要漏洞在vuln()里面,gets函数有栈溢出漏洞,s距离ebp为0x6C又发现可疑函数win(),点进去看发现只要该函数的两个参数a1和a2满足相应的条件(a1 == -559038737 && a2 == -559038242)就可以直接打印flag。将条件中的数字转换为16进制为a1 == 0xDEADBEEF && a2 == 0xDEADC0DE。故该题思路为利用栈溢出溢出返回地址到win函数然后传递正确的参数a1与a2使其输出flag,先上exp。

2024-03-12 18:44:45 344

原创 inndy_rop 1

main中只有一个overflow函数,里面只有一个gets函数,可以栈溢出,但没有打印类函数,不能leak libc,所以只能利用rop构造系统调用,使用下面命令一键生成rop片段组合。

2024-03-10 21:38:56 385

原创 bjdctf_2020_router 1

逻辑很简单,一直打印菜单,但仔细看来只有1有用,别的都是迷惑的,1中的功能先是读入一个0x10大小的字符串buf,然后使用strcat函数将buf拼接在dest后面,那这个dest是什么呢,我们先随便输入一个字符串跟据后面的提示想到dest应该是ping,因为ping命令后面什么也不跟会报错。还有一种方法就是上面已经有了dest的值了。

2024-03-10 21:26:57 394

原创 mrctf2020_shellcode 1

关键代码从lea那开始到call _read是调用了read函数,从rbp+buf处输入0x400的数据,然后将返回值(read读取的字符数)存在eax中,后面会将eax中的值与0比较,如果大于0,就会跳到loc_11D6处执行,跳转到rbp+buf处执行,所以思路很简单,就是直接使用pwntools中的工具shellcraft.sh()生成shellcode,然后直接将其读入就可以夺权了。

2024-03-10 20:57:47 323

原创 bjdctf_2020_babyrop2 1

64位,开了canary保护。

2024-03-09 19:13:28 1338

原创 buuctf30 picoctf_2018_rop chain 1

只开启了NX保护。

2023-11-23 10:38:58 74

原创 buuctf27 [HarekazeCTF2019]baby_rop2 1

只开启了NX保护。

2023-11-20 14:10:40 227 2

原创 buuctf25 ciscn_2019_es_2 1

在上图中的Payload中, vuln 函数正常执行到leave指令时, ebp 寄存器将被赋予 ebp0 -0x38,而之后执行 ret(即第二个 leave ret)时, esp 将随之被覆盖为该值,因此该payload已然能实现将 esp 劫持至 ebp0 -0x38处的栈迁移效果了。上图中,栈迁移的最后一个 pop eip 执行结束后, esp 将指向 aaaa 后的内容开始执行,故此处要填上 system 函数地址,那么后面则应为一个 fake ebp 来维持栈操作的完整性。

2023-11-14 21:30:05 76 1

原创 buuctf pwn20

该题逻辑为先输入admin password,如果admin passaord为administrator,则从下面选一个数执行对应的程序0.Exit通过分析可知4中的GetFlag中strcpy(dest, src);存在栈溢出漏洞,而dest距离栈底有0x48个单位长度,而src可以通过进入1,就可以输入src的值,而且执行完1后(即输入完src的值后)会自动返回到puts(“Input your operation:”);处来,然后继续输入v4的值。

2023-11-08 17:18:55 52 1

原创 buuctf pwn17

什么都没有开,意味着可以通过shellcode进行攻击。

2023-11-05 13:45:27 41

原创 buuctf pwn16

系统调用号,nc即可获得shell。系统调用可参考下面文章。

2023-11-05 11:27:28 47

原创 buuctf pwn15

点进sub_80486BB()查看:这行代码用于设置标准输入流(stdin)的缓冲区行为。setvbuf()函数用于设置文件流的缓冲方式。这里将stdin的缓冲区设置为无缓冲(参数2),这意味着输入的数据将立即被处理,而不是先缓存在内存中。再看看sub_804871F(buf)将数组buf的所有元素设置为0。read(0, buf, 0x20u)的作用是:1.0表示从标准输入设备(stdin)读取数据。2.buf是一个指向存储读取数据的缓冲区的指针。

2023-11-05 10:56:19 60

原创 buuctf pwn10

Stack:No canary found表示可以通过栈溢出来进行攻击。

2023-11-02 19:49:46 40

原创 buuctf pwn14

使用命令ROPgadget --binary pwn14 --only 'pop|ret’找到pop rdi指令的地址。首先需要使用命令find -name flag找到flag所在文件的位置./home/babyrop/flag。要想触发后门函数必须要调用system函数,故找到call system的指令的地址。溢出点在 __isoc99_scanf(“%s”, v4);然后cd ./home/babyrop,再cat flag。shif+f12找到bin/sh。但只有bin/sh的字符串。

2023-11-01 19:36:50 58 1

原创 buuctf pwn12

这里context.log_level='debug’别删,不然看不到flag,或者将recv()改为print(recv())也可以直接输出接收到的flag。发现只要满足条件a1 == 814536271 && a2 == 425138641就能启用后门函数,记住后门函数的地址0x80489A0。a1和a2是函数参数,我们可以进行传入,同时为了让get_flag正常结束,我们要使其返回函数为exit()在紧挨着main函数上面发现疑似后门函数,点进去查看。gets(v4)存在栈溢出漏洞,可以利用。

2023-10-28 11:27:06 35 1

原创 buuctf pwn11

read处read(0, buf, (unsigned int)nbytes);存在栈溢出漏洞,可以先输入一个很大的数nbytes,使nybtes大小超过buf本身的大小就可以实现栈溢出,但也要注意输入的nbytes不要太小,不然不够容纳payload,当然也可以输入-1,使得nbytes为一个很大的数。点进去发现是一个后门函数,记住该函数的起始地址0x4006e6。shift+f12查看字符串发现bin/sh。最后cat flag。

2023-10-28 09:49:57 41 1

原创 buuctf pwn09

可以看出利用的是格式化字符串的漏洞,需要我们修改var地址往下数第十四个,类似是数组的结构到var[13]为17,就可以cat flag。var数组可以看做是一个int型的数组,先用aaaa填充前面的数据,最后写入64位形式的17。

2023-10-26 11:48:00 32

原创 pwn07

开启了NX保护和Canary保护也就意味着不能用栈溢出来攻击了。

2023-10-26 11:23:55 39

原创 buuctf pwn08

shift+f12, 果然有bin/sh,找到具体地址: binsh_addr = 0804A024。buf的大小是0x88,读入的数据大小是0x100,多余空间足以构造rop。点进去vulnerable_function()找到溢出点read函数。函数自身直接调用了system函数, 我们试着找下bin/sh。在该函数里反汇编找到调用system函数的指令的地址。

2023-10-24 23:01:46 40

原创 buuctf pwn06

发现 buf输入是0x80(136) 而read能输入最大字数是0x200(512),可能存在栈溢出漏洞,shift+f12发现后门函数system(“/bin/sh”),记住这个地址40059a。进入函数vulnerable_function()

2023-10-24 23:01:26 35

原创 buuctf pwn05

转成汇编后发现s距离ebp为0x3c,但fgets()只读32个字符,不能直接输入0x3c个字符溢出到ebp,但后面会把读出的字符中的"I"转换为"you",所以可以向s输入20个"I",然后20个"I"会转换为20个"you",也就是0x3c(60)个字符,之后输入随便4个字符覆盖ebp溢出到返回地址0x就可以得到flag。2.ida后shift+f12发现敏感字符串cat flag,说明这里是调用了system的。点进去记住这个地址8048F13(或者该函数的起始地址0x8048F0D也行)

2023-10-22 10:42:09 37 1

原创 buuctf pwn03

从汇编代码中可看到v5到rbp的距离为0x40h因为是64位程序还得加8才到返回地址。shift+f12找到可疑文件catflag.text点进去。从上面汇编代码中可以看出后门函数的地址为0x40060d。按f5或tab反汇编发现后门函数。点command再enter。1.checksec一下。发现漏洞函数gets()运行脚本得到flag。

2023-10-21 00:03:41 42

原创 buuctf pwn04

v1在rbp-30h的位置,v2在rbp-4h的位置,溢出以后我们就可以用自己的数据覆盖v2。2.ida后进入main函数发现可疑函数func(),点进去查看。11.28125在内存中的16进制表示为0x41348000。v1定义为44个字节,gets(v1)存在栈溢出,可以利用。如果 v2 等于 11.28125 就可以拿到flag。运行脚本如下,得到flag。

2023-10-21 00:03:00 52 1

原创 安装kali及其配置pwn环境

在终端命令框中输入sudo passwd root后会让你输入kali的默认密码kali,然后会提示你输入一个新的密码,在输入过程中输入的密码不会像一般的设置密码一样显示,再按照提示输入一遍就可以了,完成后可以输入su root切换成root用户了。输入命令:wget https://pypi.python.org/packages/source/s/setuptools/setuptools-18.5.tar.gz。你可以在pip的配置文件中更改下载源,或者使用-i参数指定一个临时的下载源。

2023-09-23 21:02:47 3289

空空如也

空空如也

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

TA关注的人

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