在没有管道功能的情况下在格式字符串漏洞中输入地址的技巧是什么?



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

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

程序的

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

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

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

xeaxffxffxbf %x%x%x%x%x%x%x |%x|

这给出了以下结果:

xeaxffxffxbf 805d1c01234567808060f206bffff67c123456786165785c |6666785c|

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

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

我明白了!您无法在此处输入地址。我必须使用我找到的地址,并使用它来更改一个变量,该变量确定我是否可以使用其他函数。我使用这些函数将程序流重定向到 shell 代码。虽然我的老师每次使用时都会重置控制变量,所以我不得不不断将其更改回来以尝试新功能。

最新更新