Javris oj——level1

Posted on 2019-11-07 17:45  Volcano3511  阅读(262)  评论(0编辑  收藏  举报
不难
题目中也给了提示:vulnerable函数,而且明显的栈溢出

首先file一下:32位
然后gdb checksec——发现没有开启NX——在栈中写入shellcode,然后溢出栈,覆盖返回地址为shellcode地址

问题:栈的地址?题中buf没有初始化,而且程序默认开启ASRL,每次的buf的地址都不一样

但是题目还是给了提示:在打印第一句的时候打印出来了buf地址——要进行读取——使用io.recv()来进行读取
    但是注意:io.recv()读出来的数据是str类型,要转换成为数字才能使用,Python中的int()有类型转换的功能

然后将shellcode和其他没有意义的填充字符写在一起,构成0x88个字符,使用.ljust()函数,在后面添加无意义字符

然后加一个ebp
然后加上返回地址——我们自己控制,使其为shellcode的地址——题中是之前读取的buf的位置

然后就可以拿到shell