PWN攻击方法
栈堆
笔记
gdb的使用IDA的使用堆栈平衡特殊函数mprotect函数格式:int mprotect(const void *start,size_t len,int port) 作用:能够修改内存的权限为可读可写可执行 参数:第一个参数填写的是起始地址,第二个参数填写的是起始地址后多大的长度,第三个参数填写的是赋予的权限 参数port:1、port_read:内存段可写。2、port_write:内存段可读。3、port_exec:内存段可执行。4、port_none:内存段无法访问。5、port=7:内存段可写、可读、可执行。 要求:指定的内存区间必须包含整个内存页(4K)。区间开始的地址start必须是一个内存页的起始地址, 并且区间长度len必须是页大小的整数倍。 函数调用栈pwntools
ctfshow-pwn-入门
记录一下ctfshow-pwn的做题过程 pwn35简单的栈溢出,直接输入大量垃圾数据即可。 在这记录一个笔记:strcpy(&dest, src),strcpy函数将 src 字符串复制到 dest 字符数组中,并返回指向 dest 的指针。 pwn36也是一道简单的栈溢出,并存在后门函数,且没开任何保护机制,直接打即可。 在这里记录一下gdb调试,计算距离栈底的距离的命令:cyclic -l...
BUUCTF-PWN
记录写BUUCTF的过程 test_your_nc一道简单的题目,直接nc连接并ls看有哪些文件,最后cat获得flag。(从给的二进制文件也可以看出,程序运行直接执行system(‘/bin/sh’),获取shell) rip本题是一道64位的elf,并没有开启什么保护 在IDA中发现存在明显的栈溢出以及后门函数,因此这就是一道简单的栈溢出,通过gets函数溢出修改返回地址到后面函数即可。 exp: from pwn import*ret=0x401016io=remote('node5.buuoj.cn',29603)payload=cyclic(0xF+8)+p64(ret)+p64(0x401186)io.sendline(payload)io.interactive() warmup_csaw_2016本题是一道64位的elf,并没有开启什么保护 放入IDA中发现,会输出一个含有system(‘cat flag.txt’)的函数地址,并且在main函数最后会调用gets函数,因此存在明显的栈溢出。 exp: from...
2025日常琐事
Introduction好久没更新了,之前一大堆有的没的的事,还是挺烦的。刚好这几天快弄完了,想着回来继续更新完善自己的博客,毕竟也是当年自己弄了好久辛辛苦苦搭建好的。最近自己萌发了一个念想——加入星盟,因为听包学长(就是那大名鼎鼎的baozongwi)说星盟的pwn挺强的,于是我打算先提升自己的实力,然后去投简历试试(想着在我生日前能够完成这项目标,也是作为我给自己的生日礼物吧),如果进了的话就好好磨练自己的pwn技术,不行的话就继续努力。 看着好多师傅都有记录日常的习惯,于是我也想着来弄一个,顺便还可以加上自己的一下计划,以此来督促自己吧,我觉得这挺好的。以前的话太懒散了,没有什么目标与规划,就只想着打XCTF(也只是想着),混着混着也快大二了,每次看比赛群里面那些比我小还比我厉害的师傅们,还是感慨万千。想着当年包学长给我说的,不能只是想着,得有行动。 于是乎,我决定就趁着这次我想进星盟的念想来改变一下,不能再这么混下去了。就通过写博客并在博客里加上计划来不断督促自己。 最后,希望我能在大学期间完成自己当年顶下的目标——站在CTF总决赛的舞台上捧杯。 六月
2025SQCTF
很荣幸参加了第四届SQCTF,作为新生赛,难度还可以,因为本人能力还不够,并没能够akpwn,还得再努力努力(毕竟是想打XCTF的,这点实力是肯定不行的。 浅红欺醉粉,肯信有江梅一道简单到不能再简单的nc签到题。 领取你的小猫娘这是一道64位的题,基本没开什么保护。 这里可以看到有一个后门函数,其判断条件为v5的值为真,因为我们能输入的是v4,而且观察栈上结构可以知道地址相差0x50-4。所以可以通过输入覆盖到v5并将v5的值变为真即可。 from pwn...
Polar-Ctf2025春季赛复现
Misc可老师签到这是一道比较有意思的签到题,难点在于如何理解它给的提示。 本题是一个游戏题,最后会让我们关注公众号,发送两次flag(这是关键,并非是最后提交时让flag*2),获得正确的flag。 find这依旧是一道比较有趣的杂项题,主办方给了我们一个flag.xlsx工作表。 发现全是空白,然后也没有任何与flag相关的东西,于是,我猜测其可能是被隐藏了,仔细观察发现有些表格使用的是粗体,有些什么都没有,因此就证实了我的猜测,其可能是全部被弄成白色了,于是我打算将其变为黑色。 替换后进行对行高的调整发现是一个二维码,最后使用工具扫码获得flag。 Web来个弹窗打开所给网址可以看到这是一道XSS漏洞题目,首先输入一个基础的 <script>alert(1)</script> ,发现返回空,因此我们进行双写绕过 "><scscriptript>alert(1)</scscriptript> 发现可以,获得一张图片,提示是flag就是该人物名称md5加密。 0e事件打开网站可以看到一个提示:请通过...
Polar-pwn-wp
sandbox 先将文件拖入kali中检查一下,发现是一个六十四位的elf,开启了NX保护以及Canary。 将该文件拖入IDA中发现有一个box函数,点击进入box函数,我们发现定义了一个字符buf,是用户输入的,但是其用if对字符buf进行判断,进而过滤了一些关键字,若我们输入相应的关键字,该程序就会直接结束。 我们再进行nc连接发现里面有flag,但是由于其过滤了cat、flag两个关键字,因此我们需要进行绕过,从而获取flag。 还有一种方法就是,因为若我们不输入关键字,在box函数最后会执行system函数,由于无法输入/bin/sh与sh进行提权,那么我们可以利用system(‘$0’)来提权,因此exp可以如下编写: from pwn...