buuctf
pwn
test_your_nc
直接交互
rip
栈溢出返回到后门函数,本地实测需要栈平衡
warmup_csaw_2016
还是栈溢出返回到后门函数,需要栈平衡
ciscn_2019_n_1
又是栈溢出返回到后门函数
pwn1_sctf_2016
本地文件无法运行
gdb pwn1_sctf_2016
r
报错
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
ldd pwn1_sctf_2016
linux-gate.so.1 (0xf7efc000) libstdc++.so.6 => not found libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7ec4000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7ce8000) /lib/ld-linux.so.2 (0xf7efd000)
sudo apt-get install lib32stdc++6
解决
ida反编译
太复杂直接gdb动态调试
大概是个最多读取31个字符内容的字符串(不包括\x00)到s字符串中,然后将s复制到全局变量v0字符串中,再printf("So, %s\n", s);
没办法覆盖到ebp控制,有v0全局变量
将s指针指向的字符串内容输出
动态调试,格式化字符串的地址
程序没太看懂,但是可以根据函数名判断,replace是把输入的I转化成you,原来只能输入31个字符覆盖不到ebp,乘3以后就足够了
动态调试测试需要先填64个字符才到return address,于是构造payload=21个I+1个A+后门函数地址,进行交互即可