PWN
题目:baby_stack
拿到附件,die检查为64位ELF文件,checksec检查开启哪些保护
exp如下:
题目:猜数字
拿到附件,die检查为32位ELF文件,checksec检查开启哪些保护
拖进ida分析,存在binsh
printf没有进行输出参数限制,攻击者会借%p使printf多打印出栈上的数据,如下
找到随机数种的地址
构造payload,p=flat(seedaddr,b"%5$n"),该payload含义是,将printf前边输出的四个字节转化为4写入偏移位置为5的内容中,而第五位刚好就是seedaddr,32位程序地址为4个字节。随机数种子确定了,那他每轮产生的数字也就确定了。剩下的一个一个试就行。我的exp中它每轮产生的是1 3 4 6 3 7 5 3 8 5 ,不变的。
exp如下:
题目:劳逸结合
拿到附件,die检查为64elf文件,checksec检查保护措施
拖进IDA分析,存在binsh
exp如下:
题目:再来一次
拿到附件,die检查为64位ELF文件, checksec检查保护措施
无system无binsh,但附件给了libc,是一道ret2libc类型的题
先找下需要用的gadgets
构造第一个payload,p1=flat(b'a'*(0x10+8),rdi,putsgot,putsplt,main,word_size=64),泄露libc之后,计算出system与binsh,再构造第二个payload,p2=flat(b'a'*(0x10+8),ret,rdi,bin,system,word_size=64),得到shell。
exp如下:
Reverse
题目:你好,逆向工程
下载附件 ,拖进die发现没有壳,且为64,直接放进ida64 找到main函数