String formatting printf字符串攻击返回意外十六进制
我刚刚开始进入逆向工程领域,我在live overflow上看到了一段视频,展示了使用printf的字符串格式漏洞。我试图复制他的结果,但没有成功。我的代码和他的视频一样。我使用radare2查找目标变量的地址 视频: 雷达2输出: 霉菌代码:String formatting printf字符串攻击返回意外十六进制,string-formatting,reverse-engineering,overwrite,String Formatting,Reverse Engineering,Overwrite,我刚刚开始进入逆向工程领域,我在live overflow上看到了一段视频,展示了使用printf的字符串格式漏洞。我试图复制他的结果,但没有成功。我的代码和他的视频一样。我使用radare2查找目标变量的地址 视频: 雷达2输出: 霉菌代码: #include <iostream> using namespace std; int overwritten; void vuln(char *sdf) { printf("typed stuff! -> ");
#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]);
}
#包括
使用名称空间std;
int覆盖;
无效vuln(字符*sdf){
printf(“键入的内容!->”;
printf(sdf);
如果(覆盖){
printf(“\n您重写了变量!”);
}
}
int main(int argc,char*argv[]){
vuln(argv[1]);
}
我遇到麻烦的部分是在他的视频中的7:54。他用python脚本运行程序,打印
'AAAA'+变量地址+'bbbb'+'%x'*200
。视频中的输出是由4141和4242包围的变量地址。这是我观察到的输出->。为什么我连41s和42s都看不到呢?请随时向我们提出有关“谢谢”的逆向工程问题!我会调查的。