自定义博客皮肤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)
  • 问答 (4)
  • 收藏
  • 关注

原创 DASCTF X CBCTF 2022九月挑战赛-Pwn

buf 后面跟着一个libc的地址,可以leak libc 的基址下面跟着一个格式串漏洞,puts里面调用的strlen,改那个got为one_gadget 即可(这个题刚好有一个满足的gadget)栈溢出,但是只能覆盖返回地址,栈迁移做就行UAF 可以改fd (加或减去一个偏移)

2022-09-19 17:29:03 642 1

原创 DASCTF2022.07赋能赛 - Pwn easyheap

DASCTF 2022.07赋能赛

2022-07-25 12:31:11 1644

原创 ciscn-2022 东北赛区分区赛 RE-hana

逆向太菜了,当时没逆出来,今天复现一下,虽然出了,但是是下断点断出来的…

2022-07-20 16:28:37 580 1

原创 ciscn 2022 pwn-newest_note复现

刚开始有个溢出(太菜了,其他师傅提醒才看出来)del 函数里面 free之后指针没有清0攻击思路:如果elf里面使用了stdout,等,那么IO函数里面取到的stdout就是bss段上的stdout,否则就是libc里面的stdout。IO函数位于libc里面,libc里面有一处地方可以泄露elf基址(这段区域是只读的)考虑alloc到heap数组上,然后修改成员为图中的地址,这样就可以leak elf的地址了(leak之后是为了后面修改free count做准备)。前提是得先leak lib

2022-06-01 12:04:56 709

原创 ciscn2022 re-babycode复现

使用mruby生成字节码里面的字节码自行google正向和逆向的c代码:一些需要注意的地方:Ruby 的

2022-05-31 20:45:46 682

原创 360chunqiu2017_smallest

stack地址不好泄露,但是发现elf的入口处刚好保存了start地址,只要把rsp设置为这个位置就能再次利用溢出exp:from pwn import*#sh = process('./pwn')sh = remote('node4.buuoj.cn',29216)context.arch = 'amd64'syscall = 0x4000BEstart = 0x4000B0_context = SigreturnFrame()_context.rip = syscall_conte

2022-05-26 21:57:12 144

原创 *ctf-NaCl

不会去花就很难受,看了好久才手动还原出来C语言代码加密和解密都在这里了#include <stdio.h>#include <string.h>//unsigned int ExchangeBit(unsigned int data){ unsigned int ret = 0; ret |= (data & 0xff) << 24; ret |= ((data >> 8) & 0xff) << 16; ret

2022-05-18 23:47:13 115

原创 c语言scanf用法详解

看了一下glibc scanf的源码之后,对scanf的使用方法有了更深入的理解,下面给大家讲解一下scanf函数的用法.1.以%开头的字符串%[argpos$] [I'*] [maximum field width] [type modifiers] [arg]argpos: 指定了参数的位置I’*I:use locale’s digits': Group numbers*: 跳过这个参数maximum field width : 从输入的内容中最多读取几个字符type mod

2022-05-09 00:04:49 5834

原创 glibc-2.23 _int_malloc函数流程分析

文章目录_int_malloc流程分析1.尝试在fastbin里面寻找2.尝试在small bin里面寻找3.触发malloc_consolidate4.for()循环:5 use top其他部分:1.关于last_reminder_int_malloc流程分析1.尝试在fastbin里面寻找若needbytes 是小于fastbin最大chunk的大小,根据needbytes计算出idx,在对应的bin里面看一下有没有chunk。若对应的bin并不是空的,那么取出一个chunk 名为victim,检

2022-05-08 20:50:52 683

原创 glibc-2.23 sysmalloc函数代码分析

基础知识:   malloc_state 和 heap_info   heap 就是一块大的内存区域,若不是main_arena,heap是mmap创建的,main_arena是sbrk拓展得到的(拓展失败也会调用mmap) (由于main_arena的heap在内存开始处没有保存heap的info,所以和非main_arena的heap还有稍微有点区别的)malloc_state 结构体是用来管理bins和heap的结构体,(top chunk 指向的就是一个heap的可用区域)。当我们从一个a

2022-04-25 01:07:34 745

原创 C语言文件操作 fopen的mode参数

当我们用c语言的库函数打开一个文件的时候,fopen的第二个参数指定了打开的方式.有r,w,a,r+,w+,a+等等…这些mode具体区别是什么呢,下面我给大家说明一下参考一下glibc-2.23的fopen源码:_IO_FILE * _IO_new_file_fopen (_IO_FILE *fp, const char *filename, const char *mode, int is32not64){ int oflags = 0, omode; int read_wr

2022-04-22 02:00:54 1859

原创 glibc-2.23 puts源码分析

glibc-2.23 puts函数源码分析

2022-04-22 01:27:43 2855

原创 buuoj刷题记录 - starctf_2019_babyshell

输入shellcode ,然后检查shellcode只要shellcode第一个字节是0就可以了,但是必须是有效的指令,否则无法识别会导致程序崩掉。先填一个\x00看一下,对应的opcode 是add后面的shellcode已经无法识别了.看一下intel开发手册,找到add指令可以看到对应的opcode是00,把后面的操作数补全(随便找个可以写的地址就行)就不会影响后面shellcode的解析了.然后就可以getshell啦Volume_2_325383_NoRestrictio

2022-03-31 16:20:59 182

原创 buuoj刷题记录 - [极客大挑战 2019]Not Bad

检查一下保护:程序很简单,存在栈溢出漏洞,只能溢出16个字节。只允许orw系统调用.前八个字节用来jmp rsp ,紧接着加上5个字节近转移 call到buff的开始处执行.这样就可以往buf里面写gadget来往指定地址处读入shellcode之后跳转到shellcode把flag读出来exp:from pwn import*#sh = process('./pwn')sh = remote('node4.buuoj.cn',29515)context.arch= 'x86_6

2022-03-28 23:46:09 354

原创 buuoj刷题记录 - wdb_2018_2nd_easyfmt

程序很简单,while(1)反复利用fmt漏洞:泄露libc地址:main函数是由__libc_start_main函数调用的,所以main执行时,ebp下面那个就是__libc_start_main中的地址,而__libc_start_main函数是位于libc中的,利用printf把返回地址打出来就可以泄露libc基址了.之后便可以劫持got了,直接改printf为system得需要修改4个字节,打远程还是算了,这里提供另一种方法.把printf的got改为某个gadget,这个gadge

2022-03-26 19:48:31 264

原创 buuoj刷题记录 - npuctf_2020_easyheap

题目给了add,show,edit,del函数问题在edit函数里面,重新编辑的时候可以溢出一个字节看一下create函数,只能分配大小为 24,和56的空间思路:覆盖下一个chunk的chunksize低字节达到修改chunk的大小,free 的时候会放到更大的tcache bin里面,之后malloc的时候会造成chunk重叠.下面是我的构造方法:把利用 0 把1中chunk2的size 改掉,改成0x40, (一会malloc的时候用到,注意只能分配大小为 56 和 24 的空间,(8.

2022-03-26 14:43:53 179

原创 c++虚表

1.Base,Derived,Derived2三个类每一个类都有一个虚函数表.表里储存了需要调用的虚函数的真正地址。2.每一个对象里面都有一个指针指向了虚函数表,是哪个类的实例,指向的就是哪个类的虚函数表。这个虚函数表指针会在对象构造函数内赋值。不管类继承了多少次,实例里面只有一个指针保存了一张虚函数表。先看一开始p1 和p2 的调用.,p1 ,和p2 实际上是Derived2 的实例跳到构造函数内看一下: 先是调用 Derived 的构造函数,然后把虚函数表地址保存到了this 指向的地..

2022-03-26 00:04:52 1000

原创 buuoj刷题记录 - ciscn_2019_final_3

看了大佬们的思路才做出来的,这里只记录一下做题中踩的坑。1.add函数2.del函数free后没有把数组元素标记为0,存在UAF漏洞.思路是:1.double free 改fd 到 另一个chunk 的首地址处,然后修改chunksize ,原因是程序限制了分配大小为120字节,free到unsorted bin里面。2.free chunk 到unsorted bin里面3.double free 修改fd 到第二步中的chunk,之后便可以malloc 到unsorted bin处,然后

2022-03-25 21:48:32 457

原创 buuoj刷题记录 - pwnable_hacknote

查看程序保护:拖进IDA分析一下,Add函数正常,先创建八个字节的内存struct Node{{void* func_addr;void* content;}然后根据输入的size开辟相应大小的内存问题存在于DelNote函数中,free后没有置0看一下PrintNote函数:根据八个字节的前四个字节调用对应的函数,并把这个八个字节的首地址作为参数若Note被free后,还是可以调用Print函数的,由于不确定func_addr是什么,所以会出现问题.构造方法:先Add两

2022-03-19 22:25:11 305

原创 buuoj刷题记录 - linkctf_2018.7_babypie

检查程序保护:拖进IDA看一下,只有一小段代码,存在溢出漏洞main函数上面有个后门函数覆盖ret地址到后门函数即可,由于开启了PIE,和Canary,不能直接溢出下面这两行代码可以把canary打出来最后由于后门函数入口地址和返回地址只有低字节不同,所以覆盖掉返回地址的低字节即可.,不需要获取程序基址.exp:from pwn import*#sh = process('./pwn')sh = remote('node4.buuoj.cn',29231)payload = b'

2022-03-18 19:18:37 314

原创 vs2013 + msys2编译ffmpeg中的一些问题

./configure --toolchain=msvc --arch=x86 --enable-yasm --enable-asm --enable-shared --disable-static --disable-doc加上–disable-doc

2022-03-17 20:40:25 166

原创 buuoj刷题记录 - roarctf_2019_easy_pwn

检查一下保护:拖进IDA分析程序:问题处在write函数中,最后可以溢出一个字节.思路:溢出一个字节覆盖下一个chunk的prev in use标记位.然后向前合并,构造重叠chunk。下面是我的构造方法:create三个这样的chunkfree掉0 ,然后利用chunk1 覆盖掉chunk2的prev in use 标记位.同时在chunk1内布置好prev size.(glibc-2.23不会通过prev size 找到chunk ,然后比较前一个chunk的size,所以

2022-03-17 20:38:30 214

原创 buuoj刷题记录 - babyfengshui_33c3_2016

检查程序保护:拖进IDA看一下,add,show,edit,free有一个全局的数组,每一个元素是一个地址,执行一个User结构体。分析一下可以知道User结构体大概是这样子:struct User{ char* szUserDescription; char szUserName[124];}add函数:add函数调用了readDescription函数:其中存在问题的就位于该函数内,该函数在Update内被会被调用.add函数内需要注意的一个地方,就是readDescrip

2022-03-16 14:17:55 164

原创 buuoj刷题记录 - ciscn_2019_n_3 1

查看程序保护:IDA分析程序,可以发现程序存在UAF漏洞:只要使某一个Node的数据区域和已经free的Node的12个字节相重合,就可以修改函数地址.只需要这样构造即可:释放掉Node1,Node0,然后add一个 content为12字节的Node.就可以修改Node1的前12个字节.1.可以修改Note1的前四个字节为 ‘sh\x00\x00’,后四个改为system.plt2.可以修改Node1前四个字节为system.plt 的下一条指令地址(直接jmp由于该指令的地址低字节为

2022-03-15 13:59:18 447

原创 C语言+Win32实现俄罗斯方块

//block.h定义各种块int block1[2][2] ={ { 1, 1 }, { 1, 1 }};int block2[3][3] ={ { 0, 1, 0 }, { 1, 1, 1 }, { 0, 0, 0 }};int block3[3][3] ={ { 1, 1, 1 }, { 0, 1, 0 }, { 0, 0, 0 }};int block4[3][3] ={ { 1, 1, 0 }, { 0, 1, 1 }, { 0, 0, 0 }};i

2021-07-14 19:37:45 368

原创 C语言文件操作-fread&fwrite实现文件复制

#include <stdio.h>int main(int argc,char* argv[]){ if(argc!=3) return -1; char src_file_path[260]; char dest_file_path[260]; strcpy(src_file_path,argv[1]); strcpy(dest_file_path,argv[2]); char buff[1024]={0}; FILE* fp1

2021-07-01 20:32:49 560 1

原创 windows平台C语言实现多线程文件查找

#include <stdio.h>#include <io.h>#include <Windows.h>#define MAX_SIZE 0xFFFFLPSTR DirStack[MAX_SIZE];DWORD StackSize = 0;LPSTR* StackTop = DirStack + MAX_SIZE;inline void Push(char*pDir){ ++StackSize; --StackTop; *StackTo

2021-06-27 22:07:27 457 1

原创 C++实现算数表达式计算工具,支持加减乘除和自定义算符,自定义函数

/* Project: 算数表达式计算 计算原理:以最内层括号为一个单元,在该括号内只有各种运算符或者函数,按照优先级计算即可 若当前运算符的优先级小于等于前一个运算符的优先级,可以计算 Date: 2021/06/20*/#include <stdio.h>#include <math.h>#include <vector>#include <stack>#include <string>typedef unsign.

2021-06-22 00:06:35 544

原创 RGB24 To Yuv420 C语言 +汇编实现(windows平台)

以下代码来自libyuv#include <stdint.h>#include <stdlib.h>#include <string.h>#define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a)-1)))#define align_buffer_64(var, size) \ uint8_t* var##_mem = (

2021-06-17 12:06:58 495

原创 RGB24 To Yuv420 C语言实现

RGB24 To Yuv420 C语言实现(非SIMD版本)以下代码来自 libyuv#include <stdint.h>//下面三个函数为RGB-->>Yuv420的公式static __inline int RGBToYJ(uint8_t r, uint8_t g, uint8_t b){ return (38 * r + 75 * g + 15 * b + 64) >> 7;}static __inline int RGBToUJ(uint8_t

2021-06-16 23:02:59 916

原创 ----化学方程式配平工具----

(不知道算不算AI,反正是模拟人的思维,利用待定化学计量数法配平,先根据每种元素列出方程组,然后解方程组,就可以解出计量数之比)ChemistryEquationStringProcess.h文件:#pragma once#include <stdio.h>#include <stdlib.h>#include <string.h>#include...

2019-07-13 14:12:15 1123

空空如也

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

TA关注的人

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