2

注意:这仅用于教育用途。有问题的程序适用于我的应用安全课程,旨在具有格式字符串漏洞。

作业的场景是在邪恶政权的服务器上插入 shell 代码。虽然我的问题只是当我不能使用管道功能将十六进制值插入到 ASCII 范围之外的原始字符串中时如何存储地址。

程序的格式字符串易受攻击的部分要求输入,并且只能通过程序内部的几个选项访问。

如何在原始字符串中存储地址?格式字符串易受攻击程序的源代码是隐藏的。由于易受攻击的字符串嵌入在程序中,因此我无法通过管道进入易受攻击的字符串。

我目前正在尝试通过将以下输入复制并粘贴到程序中:

\xea\xff\xff\xbf %x%x%x%x%x%x%x |%x|

这给出了以下结果:

\xea\xff\xff\xbf 805d1c01234567808060f206bffff67c123456786165785c |6666785c|

它似乎一次读取一个字符。我知道下一步用 %d 和 %n 更改地址的值。

我应该尝试将地址存储在其他地方吗?是否有一些技巧可以输入 ASCII 范围之外的字符?我应该考虑什么来尝试正确存储地址?这有一个技巧,但我只是不知道。

4

1 回答 1

1

我知道了!你不能在那里输入地址。我必须使用我找到的地址,并用它来更改一个变量,以确定我是否可以使用其他函数。我使用这些函数将程序流重定向到 shell 代码。尽管我的老师每次使用它时都会重置控制变量,所以我不得不不断将其改回以试验新功能。

于 2013-11-04T20:59:29.467 回答