自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux系统调用

linux系统调用。

2023-01-18 01:07:17 872 1

原创 ctfshow[七夕杯]sweetheart

限制了申请数量(10个)和申请的大小(0x400),将申请的堆指针放在heap_list + 3 * i 的地址里,程序会在申请一个0x10大小的堆块,用来存放名字,也就是堆块的index,这里读取字符用的是自己写的一个函数readn(),​ 下班回到酒店看到ctfshow七夕杯的比赛,就来玩一玩,只有一道pwn,dreamcat师傅出的2.27的一道堆题,题目还是很有趣的,题目结合真实情景,疯狂星期四v我50!bk(),show()都是常规的释放操作和显示操作,重点看new_one()和buy()函数,.

2022-08-06 16:31:48 514 2

原创 【buuctf】gyctf_2020_some_thing_exceting

主函数开始时,调用函数,将flag文件打开,注意是在根目录下的flag,然后将flag读到全局变量s处,这个0x60很有帮助,构成了一个堆头;程序申请的0x10的堆块起到了存放指针的作用,很正常的堆布局,直接doublefree,去改指针;64位程序,关闭了pie保护,直接放到ida分析;这里注意要劫持的堆地址为s-0x10,此时;连续申请两次,再show,即可读出flag.将堆块释放后,未将指针置空,存在uaf;先申请2个查看堆布局;漏洞点在删除功能处,...

2022-07-22 00:56:36 323

原创 【CISCN2022】东北赛区pwn

题目附件大家自取例行检查:amd架构的保护机制全开,放到ida分析;ida分析:首先是开了一个沙箱:这里我用的我的ubuntu16检测的,因为我的21没安装这个工具:然后就是一个菜单:功能齐全;漏洞点在del函数中,释放堆块后未将链表中的指针清空,存在uaf漏洞;漏洞利用:uaf泄露出地址,可以算出environ环境变量在libc中的地址,根据environ环境变量的特性(指向一个栈地址),从而得到栈地址,算出具体偏移,得到ret地址,在通过uaf将堆块申请到返回地址上,写orw读出flagexp:拿到f

2022-06-20 15:52:08 332

原创 CISCN2022_login

例行检查上来就是保护机制全开,直接到IDA中分析;逆向分析main函数:程序主逻辑在sub_FFD函数中,要正确输入进入程序的菜单确实需要逆向好一会儿(大牛轻点儿喷),下边就是对菜单的三个函数的分析了,sub_DA8():这里就是很明显的一个写shellcode的地方,但存在检查机制;sub_EFE():将以上两个全局变量赋值为0的操作是通不过刚才的检查机制的,sub_CBD():这里选项1的话,就会进入到这个函数里,将unk_202028,unk_202024的值赋值为1,可以通过检查机制,思路我

2022-06-03 16:32:06 846 1

原创 【kernel学习】内核下载与编译

内核下载与编译文章目录内核下载与编译1.内核下载2.验证kernel签名3.编译选项配置总结1.内核下载可以直接在官网下载:https://www.kernel.org~/Desktop/kernel_pwn_environment$ curl -O -L <https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.4.98.tar.xz> % Total % Received % Xferd Average Speed

2022-05-14 17:12:27 4286

原创 BUUCTF【hwb2018_gettingstart】

想找一道高分题来做一做,想着会很难,但分析了IDA,才发现如此简单.检查保护:基本上全开了,IDA分析:主函数中,满足这个条件就会直接get shell,直接覆盖即可,exp:from pwn import *elf = ELF('./task_gettingStart_ktQeERc')io = remote('node4.buuoj.cn',27594)#io = process('./task_gettingStart_ktQeERc')libc = elf.libccont

2022-04-30 19:36:51 1045

原创 BUUCTF【GUSESS】(利用canary报错信息ssp攻击)

文章目录通过canary报错信息来解题(ssp攻击)前言:背景知识:检查保护:IDA分析:exp分析:通过canary报错信息来解题(ssp攻击)前言:​ 我们知道栈溢出的基本原理是通过发送大量数据,溢出导致覆盖返回地址,劫持程序执行流,针对开启canary保护的题目,程序中存在gets()或类似这样的危险溢出函数,却又没其他洞的情况下,我们可以利用ssp攻击达到get flag,或get shell的目的.背景知识:​ 我们输入过多数据,导致栈溢出时,程序puts出来的报错信息同样是调用了__

2022-04-29 18:44:33 324

原创 打开IDA报错Unexcepted fatal error

这几天在搞自己博客搭建,估计把IDA环境搞坏了,今天打开IDA时,突然出现:把我吓一跳,这是怎么回事,这才几天没用,冷静分析一波,我准备打开了与Ida在同一目录下的,看看什么报错:结果打不开,然后我直接打开idat64.exe,应该是python路径出了问题,打开环境变量,在用户环境变量中加入:PYTHONHOME #环境变量名C:/Program File/python #路径然后保存,打开IDA就可以用啦!!...

2022-04-28 18:30:27 1643

原创 BUUCTF【PicoCTF_2018_echo_back】(格式化字符串)

文章目录PicoCTF_2018_echo_back例行检查:IDA分析:exp:PicoCTF_2018_echo_back例行检查:开了部分relro,没开pie,IDA分析:函数主逻辑在vul()函数中:先打印出一句话,然后让我们输入,大小控制在0x7f,然后很明显一个格式化字符串,然后下边直接puts完后,程序结束.程序中存在system,并且没开pie,这里我们考虑直接改got表,我选择的是改printf()_got为system_plt,下边程序直接结束了,这里我们没办法去输入

2022-04-26 16:54:24 338

原创 BUUCTF【axb_2019_fmt32】

例行检查是开 了部分relro,可以改写got表,然后栈不可执行不,IDA分析很简单的一个程序,会先初始化一些后续要用到的栈空间,然后让我们输入,字节数大小会有限制,然后再对我们的输入做一个长度判断,长度符合的话就会调用printf()函数,存在格式化字符串漏洞,程序里没有system,binsh字符串,我们这里就要先leak出地址,然后返回system即可,观察程序不难发现,我们无法溢出去控制返回地址,然而我们可以去改 某一函数的got表地址为system,从而去get shell,通过分析,s

2022-04-25 13:27:29 2154

原创 pwnable.tw【start】

检查程序任何保护都没开,放到IDA中分析:逆向分析很简单的一个程序,只有start和exit两个函数,通过分析汇编,我们知道,程序先write出欢迎的语句,然后系统调用read(),来让我们输入,我们输入的栈上是可读可写可执行的,所以我们leak出stack地址,然后控制程序返回到我们构造好的shellcode即可,思路1.通过构造write()来leak出栈地址2.通过控制返回地址,来执行我们的shellcode,从而达到getshell的目的.exp分析:io.recvuntil(

2022-04-22 14:06:10 347

原创 【PicoCTF】guess number 1

例行检查:分析64位程序,一道静态编译的题目,ida中分析:主要要绕过的函数为do_stuff(),双击进去查看:我们这要猜对数字,就会返回v5=1,然后就会在主函数执行win()函数,win()函数中存在栈溢出:大小为0x168,思路就很清晰了,接下来就开始exp的编写,exp分析:猜数字直接调试就可以看到是0x54,也就是84刚开始我就直接用:root@ubuntu:/home/giantbranch/Desktop/pico# ROPgadget --binary vuln

2022-04-16 19:01:15 356

原创 【一个脚本轻松构建Docker文件】

前言大家在构建Dockerfile时,会要写很多的一些设置和许多的命令,如果要构建一个docker的话,还能自己写一写,但大量的话写起来工作量就有点大了,我的大佬室友RenCvn也遇到了这种问题,于是RenCvn便编写了此脚本,意在节约构建docker的时间,经过RenCvn师傅的创作,有了以下docker构建的一个自动化脚本,亲测非常的实用,因此想写下来方便同样有困扰的师傅们.RenCvn师傅博客RenCvn脚本import sysimport osimport shutilimport ti

2022-03-26 20:40:49 1068

原创 srop学习:【rootersctf_2019_srop】

最近学习了一些srop的一些知识,这里通过一道题目来加深一下对srop的运用。文章目录1.srop的简单介绍2.rootersctf_2019_srop题目例行检查漏洞分析1.srop的简单介绍这里推荐大家一篇文章sropSROP全称为Sigreturn Oriented Programming,其攻击核心为通过伪造一个‘Signal Frame’(以下简称sigFrame)在栈上,同时触发sigreturn系统调用,让内核为我们恢复一个sigFrame所描述的进程,如一个shell、一个wrtie

2022-03-24 20:17:06 5534

原创 一篇文章彻底清楚shellcode(精品)

shellcode 类题目文章目录shellcode 类题目1.没开沙箱(此时我们可以系统调用get shell)picoctf_2018_shellcodemrctf2020_shellcode2.开启沙箱(orw读flag)gwctf_2019_shellcode1.没开沙箱(此时我们可以系统调用get shell)(一)32位程序系统调用32位程序有别于64位程序,32位通过栈传参,我们常用的寄存器有4个数据寄存器(eax,ebx,ecx,edx),2个变址寄存器(esi,edi),2个指针寄

2022-03-08 21:01:57 8956

转载 PWN【gcc编译时几种保护的开与关】

这里借鉴参考lonyliu师傅的博客,记录学习一下.NX:-z execstack / -z noexecstack (关闭 / 开启) 不让执行栈上的数据,于是JMP ESP就不能用了Canary:-fno-stack-protector /-fstack-protector / -fstack-protector-all (关闭 / 开启 / 全开启) 栈里插入cookie信息PIE:-no-pie / -pie (关闭 / 开启) 地址随机化,另外打开后会有get_pc_thunk

2022-03-08 11:18:07 998

原创 BUUCTF【rctf2018_babyheap】

BUUCTF 【rctf2018_babyheap】今天下午干了一下午,估计是我太菜了呜呜呜拿到附件,先检查程序例行检查:保护机制全开,这很‘堆题’程序和漏洞分析程序又add,show,del三个功能,漏洞点在add()中;存在off by null漏洞,可以溢出一个’\x00’字节,show(),del()函数功能正常,而程序add堆块时,调用的是calloc,即限制了我们申请tcachebin,我们不能申请tcachebin,也就不可以来打free_hook来get shell

2022-03-06 21:31:10 3168

原创 【ubuntu20pwn环境搭建】

一 镜像下载这里我给大家总结几个比较常用的网站:ubuntu官网下载:https://cn.ubuntu.com/download/desktop清华源:https://mirror.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/阿里云开源镜像站:http://mirrors.aliyun.com/ubuntu-releases/20.04/推荐使用清华源或者阿里云二 ubuntu20安装镜像下载好后,打开虚拟机,点击文件,选择新建虚拟机:选择自定义

2022-02-23 15:45:24 1515 4

原创 【buuctf】cscctf_2019_qual_babyheap

buuctf【cscctf_2019_qual_babyheap】今天找了一道100分题目,题目本身并没有那么难例行检查64位的程序,保护机制全开,放到IDA中分析漏洞分析函数功能很简单,功能基本齐全,漏洞点在creat()中,当我们申请堆块,写入内容时,会在最后多写入一个’\x00’字节,存在off by null 溢出,但程序只允许我们申请15个堆块,因此要合理利用堆块。利用思路1.通过for循环申请足够多的堆块,在将其释放,构造出unsorted bin2.堆风水,利用off

2022-02-15 12:30:23 1865

原创 BUUCTF【ez_pz_hackover_2016】

BUUCTF【ez_pz_hackover_2016】例行检查开了relro,其他保护机制都没开,扔到IDA中分析漏洞分析chall()函数中,有fgets(),但长度不够覆盖到返回地址,没法溢出,接着会获取s的长度,然后字符串检索,在这里我给出memchr()的定义:*C 库函数 void *memchr(const void str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。然后程序会有一个if检查,

2022-02-14 12:53:00 1258

原创 BUUCTF【hitcontraining_magicheap】

BUUCTF【hitcontraining_magicheap】刷题例行检查:程序为64位,除了pie,其他保护机制都开了。放到IDA中分析漏洞分析:首先看到一个菜单,发现程序是没有输出功能的,这里我们想到了去打stdout结构体来leak出地址,这里是有一个后门的,我设置了满足的条件发现没出flag,应该比赛的环境下flag路径是对的,但buuctf路径是不对的,所以我们就去get shell拿flag。漏洞点在edit()函数中,creat_heap()函数获取我们的大小后,在ed

2022-02-13 18:41:08 1669

原创 BUUCTF【roarctf_2019_easy_pwn】(off by one)

BUUCTF【roarctf_2019_easy_pwn】检查程序:保护机制全开分析:add(),show(),free()函数都正常,漏洞点在edit()中a2-a1=10时,我们可以多写入一个字节,存在by one溢出思路:1.堆风水泄露libc地址2.堆块重叠劫持malloc_hook为one_gadget3.申请触发one_gadgetexp:leak地址:add(0x90)add(0x18)add(0x90)add(0x90)free(0)edit(1,0

2022-02-03 01:53:36 1112

原创 BUUCTF【gyctf_2020_force】(house of force)

一道题学习 House of force首先说明一下House of force的利用条件:1.能够通过堆溢出等方法控制到topchunk的size2.分配的大小没有限制,即可以申请任意大小的堆块3.能够泄露出堆地址(topchunk)House of force 产生的原因: 在于 glibc 对 top chunk 的处理,进行堆分配时,如果所有空闲的块都无法满足需求,那么就会从 top chunk 中分割出相应的大小作为堆块的空间。若 top chunk 的 size 值是由用户控制的任意的

2022-01-29 15:35:33 634

原创 Buuctf :【ciscn_2019_es_4】

Buuctf :【ciscn_2019_es_4】检查程序:64位程序,没有开pie保护漏洞分析:edit()中存在of by null利用思路:1.堆风水构造overlap,指针残留,泄露出libc地址2.再次堆布局,劫持free_hook,覆写为system3.free掉’/bin/sh’的堆块,get shell分析:1.由于add()中限制了我们申请堆的大小,没法通过直接申请0x420的堆块泄露地址,所以要填满tcache bin,释放后进入unsorted bin中,有32

2022-01-21 00:31:01 1835

原创 Buuctf:【axb_2019_heap】(格式化字符串,of by null,unlink)

Buuctf:【axb_2019_heap】(格式化字符串,of by null,unlink)例行检查64位,保护机制全开,IDA中分析漏洞分析此处edit()函数中会多写入\x00字节,导致溢出一个\x00字节,存在of by null 漏洞,add()中限制了我们申请堆块的大小,只能申请大于0x80的堆块利用思路1.利用格式化字符串漏洞泄露出程序基地址和libc基地址2.利用unlink,通过unlink修改chunk0的内存地址为free_hook地址,再次edit0号堆块,覆写为s

2022-01-18 00:50:27 1263

原创 长安“战疫“网络安全卫士守护赛--PWN

今天早上定了闹钟起来干题,还没怎么睡醒这里我把前两道pwn题给分析一下pwn1例行检查:32位,没有开canary保护,没有pie,扔到IDA中buf大小0x38,判断为栈溢出,还有后门,心中正在窃喜,长安这道签到题是真简单呀,但做了之后发现这里main函数最后的返回还应注意一下调用完read之后,不是leave retn,而是多了一行lea esp ,[ecx-4],这里应注意一下,将ecx-4的地址给了esp,相当于返回到了ecx-4的地址,(注意lea 区别于mov,mov传送的是地址

2022-01-09 00:22:15 344

原创 BUUCTF:0ctf_2017_babyheap

一天一道buu今天做了这道堆题没有想象的难,毕竟是道1分的题例行检查64位程序,保护机制全开的,放到IDA漏洞分析漏洞在edit()函数中,我们add()之后,在edit()时,能再次控制size的大小,存在堆溢出。分析好漏洞后,就开始利用利用思路和分析1.我们先利用堆溢出泄露出libc地址2.劫持fd指针到malloc_hook,覆盖malloc_hook为one_gadget,当再次申请堆块时调用one_gadget,从而get shell分析首先堆布局,申请0x100的堆,释放

2022-01-07 14:40:47 1598

原创 BUUCTF:【x_nuca_2018_offbyone2】(off by null)

在buu里挑了一道heap的题,是一道off by null 的题,比较容易,经典一些例行检查:

2022-01-06 15:39:02 1248 2

原创 BUUCTF:PicoCTF_2018_buffer_overflow_2

例行检查程序:还是32位程序,没有canary,很可能是溢出类的。放到IDA中:主函数没什么特别,进入vuln()函数看一下:果然存在溢出漏洞,两次溢出,直接去get shell第一次溢出去泄露libc地址,第二次溢出get shell这里我选怎printf()函数作为泄露的函数,同样也可以选择puts()函数,构造payload :io.recvuntil(':')payload = 'A'*0x6cpayload += p32(0)payload += p32(

2022-01-05 18:27:58 901

原创 BUUCTF:PicoCTF_2018_buffer_overflow_1

先放进虚拟机中检查:任何保护机制都没开,放到32位IDA中:主函数很简单,进入vuln()函数看一下:很明显有溢出,进入栈中看偏移:这里偏移为0x28,我们思路是第一次溢出,去泄露libc地址,再次进行溢出get shell。第一次溢出:io.recvuntil(':')payload = 'A'*0X28payload += p32(0)payload += p32(printf)payload += p32(main)payload += p32(elf.got.

2022-01-05 18:13:46 1350

原创 BUUCTF:sctf_2019_easy_heap

例行检查一下程序:64位的一道堆题,放到IDA中看下:首先看到一个菜单:

2022-01-04 23:07:27 1289 1

空空如也

空空如也

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

TA关注的人

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