2024geekgame
2024geekgame
技术分享|2024-10-23|Last edited: 2024-10-24
type
status
date
slug
summary
tags
category
icon
password
AI summary

fast or clever

并发与并行

并发是指一个处理器同时处理多个任务。 并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。 并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行
notion image
并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
notion image

线程

pthread_create()创建线程
函数原型
pthread_join()函数阻塞当前线程,等待被等待的线程执行完成
函数原型
线程程序
notion image
所有子线程都执行完毕,打印了对应的“Hello world ”,但是线程执行的顺序是不固定的,也就是说,我们无法预知打印的顺序。根据代码判断程序的输出就是不可行的,我们只知道输出的内容,但是不知道输出的顺序。

逻辑

简单条件竞争,read(0, &p, 0x104uLL)可以写至usleep_time
int usleep(useconds_t usec);//睡眠微秒
1秒 (s)= 1000毫秒(ms)1毫秒 = 1000微秒(us)
使pthread_create(&newthread, 0LL, do_output, 0LL);阻塞,运行pthread_create(th, 0LL, get_thread2_input, &p);改size即可

生活在树上

level1

主要逻辑
insert函数
  • (unsigned int *)(v6 + 16)存在整数溢出,第三次输-25导致无限制栈溢出

level2

主要逻辑
(*(void (__fastcall **)(_QWORD, _QWORD))(k + 24))(*(_QWORD *)(k + 8), *(unsigned int *)(k + 16))调用edit函数,*(_QWORD *)(k + 8)为a1,*(unsigned int *)(k + 16)为a2
read(0, (void *)(v3 + a1), 8uLL);存在任意地址写
2024强网拟态CVE-2018-17066复现
Loading...