缓冲区溢出字符解析

时间:2013-04-02 23:09:41

标签: perl buffer overflow

当我试图对缓冲区溢出进行概念验证时,我遇到了一个奇怪的问题。程序中存在我想在地址 0x0828433c 执行的代码。这是一个简单的溢出,所以攻击是这样执行的:

$ perl -e 'system("./program lotsofcharacterstofillinspacethen\x3c\x43\x28\x08")'

然而,\x3c转到>在ascii中,shell期望其余字符成为输出文件。 (即echo 1 > hello.txt

幸运的是,它上面有2个nops,所以我不需要使用那个特定的地址,但如果我需要怎么办?

谢谢!

1 个答案:

答案 0 :(得分:3)

两种解决方案:

  1. 使用多参数版本的system,它不会调用shell:

    system "./program", "lotsofcharacterstofillinspacethen\x3c\x43\x28\x08";
    
  2. Escape参数中的任何shell元字符,例如使用String::ShellQuote