分类: CTF

16 篇文章

2021蓝帽杯 PWN writeup
今年蓝帽杯举办时间太阴间了,周四我全天满课啊,我打个锤子打 和队里的队员们中午花了点时间做题,没想到pwn竟然有一道是去年线下决赛原题,怪不得这么多人做出来了: 于是我去研究了一下去年大佬的wp(算是复现了) 题目mmap出了一块可执行内存,地址位于0x10000,随后读取shellcode到这块内存上并执行,在执行前使用seccomp禁掉了除去o…
PWN刷题笔记——ciscn_2019_c_1
这题。。。我一开始被唬住了,我以为要写个绕过的代码(好好的看一下代码逻辑),其实根本不需要的。。。 还有人说因为 if ( v0 >= strlen(s) ) break; 的存在,还需要'\0'绕过。。。其实根本没必要 不过最后有个很阴间的栈对齐问题,搞得我写不出最终exp。 后面参考了一下大佬的博客https://blog.csdn.ne…
PWN刷题笔记——gwctf_2019_easy_pwn
先声明一点,我真的看不懂这是什么东西,这C++反编译的玩意太恶心了,我吐了。 不过危险函数strcpy(&s, v6);我还是知道的(虽然我就没几次遇到过) strings,crtl+x追踪 pretty找到了,在主函数里,可惜就是没找到I 追踪,好,找到了,可是我还是看不懂。 看看程序吧。。。 。。。 为什么这么做,因为老早之前做过类似的…
堆从入门到跑路
栈的生长方向是从高地址向低地址生长的, 而堆是从低地址向高地址生长的。 0x01综述 堆溢出是指程序向某个堆块中写入的字节数超过了堆块本身可使用的字节数(之所以是可使用而不是用户申请的字节数,是因为堆管理器会对用户所申请的字节数进行调整,这也导致可利用的字节数都不小于用户申请的字节数),因而导致了数据溢出,并覆盖到物理相邻的高地址的下一个堆块。 —…
PWN刷题笔记——[HarekazeCTF2019]baby_rop2
通过这题学了printf的使用方法,也学会了64位双参数类型题解法。 由于是64位程序,传参的时候需要用到寄存器printf函数的原型int printf( const char* format , [argument] … );举个例子–>print(’%s’,‘hello world’)大概就是这样的用法,这边有两个参数要设置,所以我们要…
PWN刷题笔记——ciscn_2019_n_5
先放exp吧 from pwn import * context(os='linux', arch='amd64', log_level='debug') p=remote("node3.buuoj.cn",28206) elf=ELF('./ciscn_2019_n_5') shellcode=asm(shellcraft.sh()) p.rec…
PWN刷题笔记——not_the_same_3dsctf_2016
这题学会了很多操作 shift+F12打开string后,双击跟进,再ctrl+x可以找到调用这个字符串的函数 0x80489A0,我们可以通 rop的方式,先执行下 get_secret将flag放入bss段上,然后程序中含有write函数,我们 可以再rop到 write函数上来将flag给输出出来。 得出exp: from pwn impor…
PWN刷题笔记——bjdctf_2020_babystack
这题没难度,但是为了搞清楚一些基本原理,所以水了一篇对大佬们来说没什么营养的博客qwq 有binsh,不错子,不过还是先看一下源码吧 懂了,先输入名字长度,再利用这个长度栈溢出 长度是0x18 exp如下 from pwn import * context(log_level = 'debug') elf=ELF("./bjdctf_2020_ba…