0

我正在研究一个crackme,我发现缓冲区溢出,但是当我输入\xNN 时,其中N 是0 和F 之间的任何值,\ 和x 被解释为它们自己的值。我也试过\xNN。

该程序是一个 Linux 可执行文件,所以我在回溯上运行它。该程序处理输入,而不是命令行调用的一部分。我查看了ida中的程序,输入是由__isoc99_scanf完成的。

我可以输入 Unicode,但 04 有问题,所以我需要弄清楚如何使用十六进制。

如果有人有除十六进制以外的建议,那也很棒。

4

1 回答 1

0

你是什​​么意思“不是命令行调用的一部分”?如果它在控制台上,您可以使用

perl -e 'print "\xNN" | program.

甚至

perl -e 'print "\n\whatever\xNN"' | program.

模拟加法输入。标准输出的输出直接进入程序的标准输入,就像您在输入聊天对象一样。如果它是一个图形应用程序,您总是可以直接修补字节(虽然说起来容易做起来难,这里是如何在 gdb 上做到这一点)。

于 2013-05-01T22:50:02.803 回答