软件系统安全赛pwn - MailSystem的wp
软件系统安全赛 - MailSystem前言:本来不想写wp的,因为第一次参加软件赛,不熟悉pwn题连接远端需要代理问题而交不上flag,但毕竟做了好久本地才打通,题也是挺好,还是写一下。 解题思路这道题首先是代码比较多,也定义了很多函数,审计比较慢。 附件保护全开,且开启了沙箱禁用了execve,execveat,简单审计后猜测栈溢出是很难了,开始估计是要打堆 (结果是打IO),所以看一下远端libc版本为glibc-2.35,无hook函数。 123456789101112131415161718192021222324252627┌─[icyice@icyice-virtual-machine] - [~/Desktop/刷的上一道题] - [10004]└─[$] checksec pwn ...
2025年终讲
2025年终讲2025.12.31,想想还是给自己写一份年度总结,回忆一下今年自己都干了那些好事坏事,大学读了一年半了,想想自己似乎完成了一些目标,但也有些逐渐遗忘了放弃的想法,仔细想想今年最好的事或许就是加入了NSS,最坏的事也许就是……体测不及格qwq 一月二月干过些啥已经忘了,有印象的好像是做题准备NSS的春招,其他都Forgetting….. 三月打完春招,当时记得高兴的是打Web成功进了,迷茫的是因为面试时说自己以后想了解一下“神秘”而“强大”的pwn,结果就坐在了C0师父的傍边专修pwn了,虽然但是还是很高兴收到 lyy...
ISCTF2025-PWN方向wp
ISCTF2025-pwn方向wp来签个到吧按小端序发送出去就行。 exp: 1234567891011121314151617181920212223from pwn import *context(os="linux", arch="amd64", log_level="debug")#io = process("./sign")io = remote("challenge.bluesharkinfo.com", 20884)s = lambda data :io.send(data)sa = lambda delim,data :io.sendafter(delim, data)sl = lambda data :io.sendline(data)sla = lambda delim,data :io.sendlineafter(delim,...
DASCTF2025下半年赛-PWN方向复现
DASCTF 2025 下半年赛-PWN方向赛后复现rcms解题思路这道题增删查改四大功能都有,存在UAF 和 后门函数gift(),虽然题目没给libc,但我试出来远端靶机是ubuntu18的环境,用libc6_2.27-3ubuntu1.6_amd64可以打通。 利用UAF打free_hook劫持到gift(),输入shellcode就行,注意程序开启了沙箱。 1234567891011icyice@icyice-virtual-machine:~/Desktop/刷的上一道题/DAS/rcm$ seccomp-tools dump ./pwn line CODE JT JF K================================= 0000: 0x20 0x00 0x00 0x00000004 A = arch 0001: 0x15 0x00 0x02 0xc000003e if (A != ARCH_X86_64) goto 0004 0002: 0x20 0x00 0x00...
MoeCTF2025-PWN方向做题笔记
MoeCTF2025-PWN方向做题笔记0 二进制漏洞审计入门指北解题思路签到题,脚本都给我们写好了,运行一下就能得flag EXP1234567891011121314151617from pwn import * # 导入 pwntools。context(arch='amd64', os='linux', log_level='debug') # 一些基本的配置。# 有时我们需要在本地调试运行程序,需要配置 context.terminal。详见入门指北。# io = process('./pwn') # 在本地运行程序。# gdb.attach(io) # 启动 GDBio = connect("192.168.???.??", 51192) #...
LitCTF-PWN方向做题笔记
LitCTF(2023 - 2025)-PWN方向做题笔记前言:突然发现自己做过好多LitCTF的题,简单整理一下WP吧。 [LitCTF 2023]只需要nc一下~解题思路nc连接,获得shell,cat Dockerfile会发现flag被写进了环境变量$FLAG中,,echo $FLAG即可 [LitCTF 2023]口算题卡解题思路eval函数 eval() 是 Python 中的一个内置函数,用于执行一个字符串表达式,并返回表达式的值。 pwntools 中的 recvuntil 在 pwntools 库中,recvuntil 用于从 目标 接收数据,直到遇到指定的分隔符。 EXP12345678910111213141516from pwn import *io = remote("node4.anna.nssctf.cn", 28411)for _ in range(100): io.recvuntil(b"What is ") io.sendline( str( eval( ...
NepCTF2025-PWN方向做题笔记
NepCTF2025-PWN方向做题笔记Time解题思路题目存在一个非栈上的格式化字符串漏洞,并利用pthread_create()开启一个子线程。 以下是 IDA 中题目main()源码(重命名了一些函数) 12345678910111213141516void __fastcall __noreturn main(int a1, char **a2, char **a3){ pthread_t newthread[2]; // [rsp+0h] [rbp-10h] BYREF newthread[1] = __readfsqword(0x28u); setbuf(stdin, 0LL); setbuf(stdout, 0LL); setbuf(stderr, 0LL); input_name(); while ( 1 ) { while ( !(unsigned int)input_file_name() ) ; pthread_create(newthread, 0LL, (void *(*)(void...
Ubuntu22.04的环境配置(CTF-PWN)
Ubuntu22.04的环境配置(CTF-PWN)前言:如果是小伙伴是和笔者当初刚上大一时,连windows命令行怎么打开都不知道一样的情况的话,建议先安装 VMware Workstation,再下载 ubuntu-22.04的镜像[ ubuntu-22.04.5-desktop-amd64.iso](下载地址:Ubuntu 22.04.5 LTS (Jammy Jellyfish)),安装好Ubuntu22.04虚拟机。 首先我们拿到一个刚安装好的ubuntu22.04,非常干净。 更新、安装vim gedit123sudo apt upgradesudo apt install vimsudo apt install gedit 接下来我们就会频繁地使用vim编辑器(ubuntu系统自带了一个 vi 编辑器) 而你现在需要知道的有:按I进入编辑,esc退出编辑,:wq保存 更换镜像源12345678910111213141516cd /etc/apt # 进入 apt 目录下sudo cp sources.list sources.list.backup #...
BaseCTF2024新生赛-PWN方向做题笔记
BaseCTF2024新生赛-PWN方向做题笔记复现平台:BaseCTF2024新生赛 - GZ::CTF 签个到吧解题思路nc连接即可getshell 没有 canary 我要死了!解题思路程序保护机制全开,用ida逆向分析后可知程序存在以当前时间为随机数种子的伪随机数验证和一个创建子进程的循环,且存在后门函数shell() 。 由于创建了子进程,我们就可以在子进程进行Canary和PIE的爆破,因为当我们将Canary错误修改后,程序会退出当前进程(子进程),回到父进程,而不会直接结束程序运行,这就允许我们重复尝试(PIE同理) (PS:我的脚本就是跑不出来,照着WP改都不行qwq) EXP我的脚本: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152from pwn import *from ctypes import cdllcontext(os="linux", arch="amd64",...
学习 StackSmash
StackSmash前言: StackSmash是一个在 ubuntu16 版本以下的漏洞 ,高版本的ubuntu 已不存在此漏洞。 在libc2.23版本之后就不可利用了,所以简单了解即可 StackSmash,顾名思义,就是要破环栈堆,但有什么用呢? 其实 StackSmash就是利用 Canary保护 的报错机制,如果在栈溢出时修改了 Canary,程序就会抛出错误,执行 __stack_chk_fail 函数来打印出 argv[0] 指针所指向的字符串,即 报错信息 StackSmash 这个漏洞无法让我们 getshell,只能通过 用目标信息覆盖 argv[0] ,来帮助我们 打印出想要的信息。 正常而言 当Canary被修改后,函数返回时,检测到Canary的值错误,会调用 _stack_chk_fail() 函数,而这个函数会打印输入的文件名,即argv[0],存在栈上。 1234567891011void __attribute__ ((noreturn)) __stack_chk_fail (void){ __fortify_fail...








