March 31, 2019

repwn

ida 里 shift+f12 找到“Please Input Your Key_ Now!”,然后找到程序入口“sub_4014C0”(; DATA XREF: sub_4014C0:loc_401588↑o)。 Read more

March 21, 2019

lab10

No PIE,说明可以直接用 ida 中看到的地址,比如最后要执行的 magic 函数(// starts at 8048986)。 可以看到 add_note 使用了 malloc,del_note 只用 Read more

January 22, 2019

bug3

smallbug3 canary 后两位一定是 00,可以通过canary找到,填充多少位,可以通过telescope 0x20找到 canary 位置,再distance $rsi canary找 Read more

December 16, 2018

rsbo

FLAG{Shuffling 15 not a problem, just a piece of cake… XDDDDD…iJgZBwpBFh1TtpQR} ida 里看到这个程序先读取了”/home/ctf/flag”作为随机数的种子,然后用随机数打乱输入 Read more

December 2, 2018

printf

echo FLAG{printf vulnerability is fun, right? %16c%7$hhn%99c%7$hhn} 是根据这个网站写的。首先判断 printf 的那个栈和之前输入的字符串间隔几个参数:输入ABCD%n$x看 n=多少时能输出ABCD44434 Read more

November 3, 2018

动态链接

level3 CTF{d85346df5770f56f69025bc3f5f1d3d0} (看了看学长的脚本, 有啥东西就写在注释里了) # -*- coding: utf-8 -*- from pwn import * # from ctypes import string_at # from sys import getsizeof # from binascii import hexlify elf = ELF("./level3") # io = process("./level3") io = remote("pwn2.jarvisoj.com",9879) vul_addr = elf.symbols["vulnerable_function"] write_addr = elf.symbols["write"] # write_addr_plt = elf.plt["write"] # print(write_addr Read more

October 28, 2018

ROP64

task_rop64.rop64 看题目是 64 位的,就用 level3x64 的脚本改了:先打印一个已经执行过的函数的真实地址,用它和该函数在 libc 里的偏移算出 libc 的基址,得到 system 还有 binsh 的真实地址最让让 Read more

October 13, 2018

护网临时工

pwn gettingstart flag{4281a86e5b9ab0ae7940f38be574dc52} ida 反编译,发现 0x7FFFFFFFFFFFFFFFLL == v7 && 0.1 == v8 时可以执行 system(“bin/sh”)。 read(0, &buf, 0x28uLL)读入 0x28 个字节,会依 Read more

August 14, 2018

pwn

题解 level0 CTF{713ca3944e92180e0ef03171981dcd41} vulnerable_function 里 buf 只有 0x80 大小,但读取 0x200 个字符;函数里还有 callsystem。将 r 之前的都随意填充掉,跟上 callsystem 的地址就好了。 from pwn import * io = remote("pwn2.jarvisoj.com", 9881) elf = ELF("./level0") Read more

如无特殊声明,本页内容采用 CC BY-NC 4.0 授权


Made With Notepad