使用格式字符串漏洞重写返回地址

时间:2018-03-20 12:59:22

标签: c security format-string

我有一个看起来像这样的C程序:

void doSomething() {
    ... <does something> ...
}
void vuln(char[] buf) {
{
    ...
    printf(buf);
    ...
}
int main(int argc, char **argv)
{
    ... <get buf from user> ...
    vuln(buf);
    ...
    return 0;
}

我想要做的是创建一个格式字符串,该字符串将导致doSomething()被执行。 ASLR已关闭,因此我知道doSomething()函数的确切地址。

通过一些试验和错误,我发现可以通过将"%15$x"作为格式字符串传递来打印返回地址。就我而言,此返回地址为0x8048ab8。我想将其重写为0x804866bdoSomething()的地址)。我该怎么做呢?我无法在网上找到这个好的解释。

一般情况下,如果我们如何写入可以使用"%A$x"访问的地址,其中A是某个数字?

0 个答案:

没有答案