注意:这仅用于教育用途。有问题的程序适用于我的应用安全课程,旨在具有格式字符串漏洞。
作业的场景是在邪恶政权的服务器上插入 shell 代码。虽然我的问题只是当我不能使用管道功能将十六进制值插入到 ASCII 范围之外的原始字符串中时如何存储地址。
程序的格式字符串易受攻击的部分要求输入,并且只能通过程序内部的几个选项访问。
如何在原始字符串中存储地址?格式字符串易受攻击程序的源代码是隐藏的。由于易受攻击的字符串嵌入在程序中,因此我无法通过管道进入易受攻击的字符串。
我目前正在尝试通过将以下输入复制并粘贴到程序中:
\xea\xff\xff\xbf %x%x%x%x%x%x%x |%x|
这给出了以下结果:
\xea\xff\xff\xbf 805d1c01234567808060f206bffff67c123456786165785c |6666785c|
它似乎一次读取一个字符。我知道下一步用 %d 和 %n 更改地址的值。
我应该尝试将地址存储在其他地方吗?是否有一些技巧可以输入 ASCII 范围之外的字符?我应该考虑什么来尝试正确存储地址?这有一个技巧,但我只是不知道。