我才刚刚开始进行逆向工程,我通过实时溢出看到了一个视频,其中展示了使用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?