printf字符串利用返回意外的十六进制

时间:2018-09-01 19:57:03

标签: string-formatting reverse-engineering overwrite

我才刚刚开始进行逆向工程,我通过实时溢出看到了一个视频,其中展示了使用printf进行的字符串格式利用。我试图重现他的成绩,但没有运气。我的代码与他的视频相同。我使用radare2查找目标变量的地址。

视频:https://www.youtube.com/watch?v=0WvrSfcdq1I

radare2输出: radare2 command prompt output

myCode:

#include <iostream>
using namespace std;

int overwritten;

void vuln(char *sdf) {
    printf("typed stuff! -> ");
    printf(sdf);

    if(overwritten) {
        printf("\nyou overwrote the var!");
    }
}

int main(int argc, char *argv[]) {
    vuln(argv[1]);
}

我遇到问题的部分是他视频中的7:54。他使用打印'AAAA' + the variable address + 'bbbb' + '%x ' * 200的python脚本运行该程序。他视频中的输出是变量的地址,由41414141和42424242包围。这是我观察到的输出-> output。为什么我什至看不到41s和42s?

0 个答案:

没有答案