程序源码:
程序每次从输入流中读取一个字符并进行比对,过滤了“\n”,0x04,0x90字符,通过count字符充当下标,同时限制了输入数量
题目需要将check的值改成0xbffffabc,获取root权限,读取passwd
注意本题局部变量的定义顺序:buffer->check->i->count
栈中的布局应该是
因此我们需要覆盖buffer底部的check(注意栈的增长方向),利用常用填充buffer的方法是无法做到的,幸好这道题的count可用作buffer的下标,将count改为-4就可以覆盖掉check的内容
payload:
python -c ‘print “\x08\x08\x08\x08”+”\xbc\xfa\xff\xbf”’;cat