自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 资源 (2)
  • 收藏
  • 关注

原创 BYOVD(2)

这几天通过自动化手动,大批量挖掘了一些0day,但是都是一些垃圾的洞,比如空指针解引用之类的,还没有好一些的漏洞就分享一下挖掘过程,以及再来学习学习利用手法(说实话,感觉AI库库替代我,不如换个赛道搞AI,(;´༎ຶД༎ຶ`)

2026-06-15 14:38:27 176 1

原创 在AI时代构建独属于自己的工作流

现在这个时代,智力已不再是稀缺资源。工业革命稀释了体力价值,而AI的到来,正在不断抹平传统智力的溢价。这不禁让我思考,未来一个人的核心价值是什么?学习还有用吗?第一想法当然有用,但现在却又说不出来用在哪里。这种矛盾,像是生产力的极大提升,但生产关系却毫无动静,不知道该走向何处。我们处于时代的浪口,却不知身向何处,心往何向。

2026-05-10 17:27:20 413

原创 安全Agent从0到1

小小的demo,提供一些学习路径

2026-04-19 21:37:34 465

原创 BYOVD(Bring Your Own Vulnerable Driver)

(Bring Your Own Vulnerable Driver,自带易受攻击驱动)是攻击者利用的一种提权与绕过防御的技术手段,核心逻辑是攻击者将存在漏洞的Windows内核驱动文件上传至目标系统,通过加载该驱动并触发其漏洞,突破用户态权限限制获取内核级权限,进而绕过EDR、防病毒软件等安全防护,执行后续恶意操作;这类技术常被用于高级持续性攻击,且因合法驱动签名机制可被滥用,成为Windows系统安全防御的重点难点。

2026-03-25 11:34:46 674

原创 从零开始训练一个大模型

自从大模型LLM问世以来,我就对其特别好奇,拜读过Attention Is All You Need论文,也从工程角度上去分析(靠自己的理解其中的原理),但常看常新,就比如QQQ、KKK、VVV这三个数值,每次看都会有一些不一样的理解,从最初的感到新奇,慢慢的理解这是核心中的核心。为什么LLM会有记忆,就是因为注意力的出现,让最后一个词向量也能找到最开始的那个词向量。那么LLM中智能的涌现则很有可能是AttentionAttentionAttention发挥着关键作用。Attention(Q,K,V)=so

2026-03-15 22:28:12 437

原创 Linux内核内存管理-kmalloc and kfree

本文分析了Linux内核中kmalloc和kfree内存管理函数的源码实现。主要基于Linux v5.5-rc2版本,重点研究了slab分配器的核心流程。当分配大内存时,kmalloc会直接调用伙伴系统;对于小内存则通过kmalloc_index查找对应的slab缓存索引,再调用kmem_cache_alloc_trace从预定义的"大小桶"中分配内存。文章详细解析了kmem_cache结构体的关键字段,并比较了三种slab分配器(slab、slub、slob)的特点,其中slub是默认

2026-01-28 17:00:10 727

原创 实用强化学习(极速入门)

记得去年差不多这个时候记录了一篇实用机器学习,现在过了一年,没想到进入到了强化学习这个领域当中,强化学习感觉比机器学习简单多了。第一感觉好像强化学习很难,实际上原理是很简单(它的难点并不在原理上,更多的是在应用问题的训练上)通俗讲原理,存在一台多臂老虎机,问如何抽到大奖?问题给出,如何解决问题,这值得我们深思。嗯~~,好吧想不到。既然如此,不妨设置一台机器人,让它帮助我们做出决策。好的,到这里,我们思考上述语境,都有什么?其实还潜藏着两点,这两点较为抽象共六点内容,便组成了强化学习,好多,六个概念都解释完

2025-07-03 16:51:40 816

原创 入门pytorch-联邦学习

本文联邦学习的代码引用于本篇文章相当于带大家读一遍联邦学习的代码,同时加深了大家对和的理解。这里想简单介绍一下联邦学习。联邦学习说白了,就是假如有N个数据拥有者F1​...FN​,他们希望使用这些数据来训练机器学习模型,但是又各自想隐藏自己的数据不被别人所知道(隐私保护),这个过程每个用户传递本地模型参数到中心服务器训练模型MFED​,该过程中任何数据拥有者Fi​都不会暴露其数据Di​给其他人。而传统的方法将所有的数据放到一起(中心服务器)并使用DD1​∪。

2025-06-30 20:51:43 1236

原创 pwn手记录题(思)——24-12-15长城杯

最近这几天不是很忙(其实不是,而是做几道题目放松下),抽了时间看了几道题目(大都是复现的。

2024-12-22 11:28:37 637

原创 入门pytorch-Transformer

虽然是2017年由Google推出,如果按照的思路看,那它无疑是过时的,但可惜的是,目前很多论文的核心依然是,或者由其进行改进的,故本文使用pytorch来搭建一下这个模型。

2024-12-10 17:14:33 1732

原创 pwn手记录题3

研究生的生活很充实(忙,大概三年我再也没有时间去认真做题了以下是最近比赛的遇到的题目。仅记录脚本,细节不会再核实了(没时间(;´༎ຶД༎ຶ`))可能以后不太会触碰CTF比赛了。

2024-11-08 23:24:27 328 2

原创 fuzz(AFLpp)

此时我们再来思考一个问题,那便是libfuzz的缺点,便是进程间;这导致了如果目标程序崩溃了则整个模糊测试都将崩溃;此时我们可以利用AFL来自定义变异,此时便不再害怕目标程序崩溃了,但可能损失了些性能;而目标程序如下:(极其简单、vuln.c*ptr = 123;return 0;首先我们要AFL++之中的API和protobuf结构来编写代码,故首先可以编写一个.h代码结合该两部分;

2024-10-27 18:59:39 1043

原创 入门pytorch

这个就比较简单了,最简单的感知机(最简单的两层神经网络),这里只不过是多层的感知机。它的思想还是比较好理解的,主要是如何针对不同的应用来实现它。它最明显的特征就是具有三个层次,卷积层,池化层,全连接层。借用一张图,下图很好的表示了什么是卷积(提取特征),什么是池化(减少数据量),而全连接层就是一个简单普通的神经网络。如下代码,该代码定义了一个卷积神经网络。其中仅有一个简单的函数前向传播。所准备是数据如下图,是一种手写数字,通过识别图片分析来得到答案。,这个函数的功能其实就是输入数据,给出预测,并不复杂。

2024-09-08 18:16:10 753

原创 实用机器学习(快速入门)

因为需要机器学习的助力,所以(浅浅)进修了一下。现在什么东西和AI结合一下感觉就好发文章了;我看了好多学习视频,发现机器学习实际上是数学,并不是常规的去学习代码什么的(虽然代码也很简单),而是去学习原理。这其实并不合我的学习方法,所以我歪门邪道了一下,先实用,再搞原理(这样就比原先快了许多)这里我比较推荐的唯一的一本书籍是统计学习方法(因为这本书我大概可以看懂,其他方面的书籍都不太适合纯新手)

2024-07-13 13:00:18 1292 1

原创 复现随记~

比较简单的越界漏洞,堆本身并没有什么漏洞,而且保护并没全开,所以逆向思维。必然是ROP类而非指针类,故我们着重注意等无符号数前后是否不一致这里其实存在两个越界,一个是输入负数存在二级指针,进而ROP获取权限;第二个越界则为输入16则获取到一个悬空指针(但是没有什么用,测试U20).

2023-02-12 21:47:25 709

原创 pwn手记录题2

本题所使用的libc版本为2.34;(最新版libc2.34版本已经没有了所谓的hook函数,甚至exit_hook(实际为某个函数指针)也已经不能够使用;能够利用的手法已经很少了;可以看到Free释放函数总共可以使用11次,而Allocate申请函数可以使用0x2e次;如果按照fastbin_reverse_into_tcache的节奏来说,那么布局是如何的呢?

2023-02-12 15:27:48 878

原创 pwn手记录题1

将fake_chunk链入到了unsortedbin之中了,并且伪造了fake_chunk的fd指针指向unsortedbin;不过发现了几遍文章,其中存在着解析,将其引向了retfq该指令,该指令意思是64位与32位之间进行跳转,而syscall_fstat的rax为5,32位之中的open的syscall_number同样为5;我们发现了一个函数change_addr函数,其实就是PIE,本题开启了PIE保护,但是却又多此一举改变了地址,不懂;不过编写shellcode的时候废了好大劲,调试了好久;

2023-02-12 15:27:23 785

原创 工业线上赛(2022省赛)

发现存在upx壳通过工具发现无法脱upx壳(版本4.00),而通过ida分析发现需要通过upx3.96版本进行解压。然后分析加密流程:故我们进入B::cmp函数查看函数是如何进行比较的:(发现以索引为线索进行比较的。

2022-11-02 20:26:26 1569

原创 kernel简单学习(CTF-wiki)

就从CTF WIKI的例题开始吧,此具有由易到难的特性,适合上手;

2022-10-31 22:54:47 1920

原创 house系2

这里我们续接上回,接着分析高版本的Glibc利用手法,而高版本的利用手法,大都涉及到了io_file以及虚表这类函数指针等。

2022-09-18 17:52:44 581

原创 ciscoRV110W(强网杯2020)

这里的错误信息很简单,必然是nvram系列函数,通过调试,发现错误信息位于nvram_get函数出现的,而退出则是由exit函数进行错误退出的,故我们可以定位到错误流程必然出现于第三个nvram_get函数与exit函数之间;而valid_user仅仅是简单的判断,我们可以动态调试至此处位置,我们先位于页面之中输入123456(密码),发现此处的pwd进行了加密,如果我们hook掉http_user0其中的内容与此一致,曾将会登录成功;,这能通过硬编码进行修改,但是我并不想去查找mipsel的硬编码了;..

2022-08-29 16:34:06 1074

原创 house系1

参考:https://bbs.pediy.com/thread-273895.htm#msg_header_h1_0(提出了这种新的方式)该文章虽然提出了新的手法,但是有些地方省略过多,故进行了调试分析,总结出完整的一个流程,分享给大家:位于==/malloc/malloc.c之中可以发现__malloc_assert的定义,并且__assert_fail等同于__malloc_assert==,而==__assert宏定义调用了__assert_fail==:可以发现首先执行==__fxprintf

2022-08-09 11:01:49 510

原创 BUUCTF-pwn(18)

360chunqiu2017_smallest整体较为简单;先放个exo;较为简单;from pwn import *context(arch='amd64', os='linux', log_level='debug')binary = './smallest'#r = remote('node4.buuoj.cn',26277)r = process(binary)elf = ELF(binary)main_addr = 0x4000B0mov_edx_400 = 0x4000

2022-07-10 15:15:10 1054

原创 ISCC 2022

sim_treasure简单的32位循环格式化字符串漏洞,位于栈上,无过滤\x00;from pwn import *context(log_level='debug',os='linux',arch='i386')binary = './sp1'r = remote('123.57.69.203',7010)#r = process(binary)elf = ELF(binary)#libc = elf.libclibc = ELF('./libc-2.27.so')offset

2022-06-13 11:42:23 6042 3

原创 BUUCTF-pwn(17)

happytree(SUSCTF)分析主要函数!主要三步操作,Insert、Delete、Show函数!可以看到其为二叉树结构体!因为全保护开启,故具体思路为泄露地址(heap、libc),然后利用libc2.27版本tcache的double free来修改__free_hook函数为system函数,此时首先设置基准为0x50,此时分为两部分,左子树用来泄露heap地址并造成double free的效果,右子树来泄露libc地址并申请造成攻击效果!首先发现可以从0x?0申请到0x?8

2022-04-17 17:49:12 878

原创 IOT初尝试(PLC NOE-771)

过binwalk -A指令来对固件的CPU架构进行分析,此外也可以用binwalk -Y指令来调用capstone反汇编引擎来进行辅助判断,不过我实际测试下来存在一些误报的情况会把NOE 711的固件识别成arm架构的。

2022-03-22 19:59:05 4703

转载 UE使用及TQLCTF ezvm复现

什么是Unicorn Engine?Unicore Engine是一个模拟器,并不太常见(通过比赛发现了该引擎)。通过该模拟器,可以模仿整一段程序。但是该模拟器不支持系统调用,必须先映射内存,并手动将数据写入到内存中,然后才能从指定的地址开始模拟程序!怎么使用Unicorn Engine呢?该引擎可以基于C/C++进行开发,也可以使用Python调用Unicorn Engine(相对简单,故我们采用Python来使用Unicorn),使用以下命令来下载Python库函数pip install un

2022-03-07 17:21:07 498

转载 SUSCTF2022 复现

1. happytree2. rain3. nemu(TQLCTF2022)解答如下地址:新博客地址

2022-03-07 17:18:29 364

原创 BUUCTF-pwn(16)

强网杯2019 拟态 STKOF本题目两个二进制文件,64位与32位该题目加入了拟态的检查机制,题目会fork32位程序和64位程序,而我们的输入会分别传入这个两个进程,每个程序一份,然后题目会检测两个程序的输出,若两个程序的输出不一致或任一程序或者异常退出,则会被判断为check down,直接断开链接。只有两个程序的输入一致时,才能通过检查本题难度经过合理拆分难度不大,首先本地通过64位、32位脚本,然后利用0x8字节差距,使用32位add esp,0x7c;pop;ret来进行错误,并输入

2022-03-02 16:00:01 751

原创 BUUCTF-pwn(15)

gyctf_2020_some_thing_interesting经典UAF漏洞!Allocate申请函数!Free释放函数!全保护开启,故我们利用格式化字符串漏洞泄露libc地址,从而得到malloc_hook地址。然后利用UAF漏洞修改malloc_hook为one_gadget,此时进行申请操作便可获取权限!from pwn import *context(log_level='debug',os='linux',arch='amd64')binary = './gyctf_2

2022-02-13 12:38:43 2855

原创 BUUCTF-pwn(14)

gwctf_2019_jiandan_pwn1简单ret2libc,唯一需要注意的便是注意修改索引值,防止索引被覆盖!从而无法进行栈溢出!from pwn import *from LibcSearcher import LibcSearchercontext(os='linux',arch='amd64',log_level='debug')binary = './pwn'r = remote('node4.buuoj.cn',25586)#r = process(binary)elf

2022-01-23 16:23:13 3693

原创 BUUCTF-pwn(13)

wustctf2020_number_game此时运用我们的计算机底层的知识,可知,计算机底层储存形式为补码!-2147483648的补码形式为0x80000000,它取反加一之后仍然是0x80000000,因此这边输入-2147483648护网杯_2018_gettingstart此时又要用到我们的数学知识!转换浮点数工具from pwn import *context(log_level='debug',os='linux',arch='amd64')binary = './2

2022-01-17 20:51:29 749

原创 BUUCTF-pwn(12)

[极客大挑战 2019]Not Badorw类型,打开文件,读入内容,输出内容!但需要注意gadget!from pwn import *context(log_level='debug',os='linux',arch='amd64')binary = './bad'r = remote('node4.buuoj.cn',29934)#r = process(binary)elf = ELF(binary)mnap = 0x123000jmp_rsp = 0x0400a01r.r

2022-01-13 09:35:26 3045

原创 BUUCTF-pwn(11)

mrctf2020_easy_equation简单的栈溢出漏洞,格式化字符串漏洞!此处采用栈溢出漏洞!axb_2019_fmt64经典循环格式化字符串64位漏洞!唯一注意的地方pwntools的FmtStr_payload无法成功获取权限!需要手动计算字节进行攻击!from elftools.construct.macros import Paddingfrom pwn import *from LibcSearcher import *context(log_level='debu

2022-01-09 17:49:59 2886

原创 BUUCTF-pwn(10)

picoctf_2018_shellcode题目很很简单!from pwn import *context(log_level='debug',os='linux',arch='i386')binary = './PicoCTF_2018_shellcode'r = remote('node4.buuoj.cn',25585)#r = process(binary)elf = ELF(binary)shellcode = asm(shellcraft.sh())r.recvunti

2022-01-08 09:44:09 490

原创 BUUCTF-pwn(9)

gyctf_2020_borrowstack使用栈迁移,将rsp迁移到bss段上,而bss段上处于可控位置。但是注意bss段低处处于不可写状态,如果rsp移动到该处,则程序无法进行下去!尝试使用system函数,但是往往会涉及到bss段低处地址,而one_gadget则不需要过多占用栈地址,故采用one_gadget获取权限!from pwn import *from LibcSearcher import LibcSearchercontext(log_level='debug',os='l

2022-01-05 18:29:31 923

原创 PWNABLE.TW(1)

Startfrom pwn import *context(log_level='debug',os='linux',arch='i386')binary = './start'r = remote('chall.pwnable.tw', 10000)#r = process(binary)elf = ELF(binary)def db(): gdb.attach(r)leak_esp = 0x08048087shellcode = asm("xor ecx,ecx;\

2021-12-30 22:07:13 468

原创 BUUCTF-pwn(8)

2021-12-29 13:33:26 668

原创 glibc2.23堆源码解读

libc2.23采用glibc2.23的源码,故没有libc2.32的Tcache。主要从_int_malloc以及_int_free两个函数进行解读。Mallocstatic void *_int_malloc (mstate av, size_t bytes){//参数为指针av,与申请空间bytes INTERNAL_SIZE_T nb; /* normalized request size */ unsigned int idx;

2021-12-25 15:12:20 865

原创 BUUCTF-pwn(7)

ret2dl_resolve_dl_runtime_resolve()通过两个参数在libc中寻找函数地址,而我们更加关注的是第二个参数也就是上面write的0x20,0x20将_dl_runtime_resolve()带到了reloc的位置,reloc中有2个重要信息,一个是函数的got表地址,另一个是r_info。r_info的高位是.dynsym中的条目,.dynsym的地址加上0x10*Num,得到函数对应的符号信息,而修改其中的st_name偏移,就可以伪造函数名称,从而实现漏洞利用,我们将其

2021-12-19 11:28:14 1958

pwntools4.5

这里补充一个pwn题目所用工具BUG! 据多方大佬所说,以及本人踩坑实测! 发现了pwntools4.6版本以上有两个BUG,一个为进程堵塞,另一个为所有交互数据强制为byte类型。 所以我们还是使用pwntools4.5版本的吧!

2021-10-31

部分网络安全word文档21.7~8

部分网络安全word文档21.7~8

2021-08-31

空空如也

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

TA关注的人

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