我正在研究一个crackme并且我发现了一个缓冲区溢出但是当我输入\ xNN时,其中N是介于0和F之间的任何东西,\和x被解释为它们自己的值。我也试过\ xNN。
该程序是一个Linux可执行文件,所以我在backtrack上运行它。 该程序处理输入,不是命令行调用的一部分。 我查看了ida中的程序,输入由__isoc99_scanf完成。
我可以输入Unicode,但04有问题所以我需要弄清楚如何使用十六进制。
如果某人有除十六进制以外的推荐,那也会很棒。
答案 0 :(得分:0)
你是什么意思“不是命令行调用的一部分”?如果它在控制台上,您可以使用
perl -e 'print "\xNN" | program
。
甚至
perl -e 'print "\n\whatever\xNN"' | program
。
模拟加法输入。 stdout的输出直接进入程序的stdin,就像你输入的是chatacters一样。如果它是一个图形应用程序,你总是可以直接修补字节(说起来容易做起来难,here's how to do it on gdb)。