在没有管道功能的格式字符串漏洞中输入地址的诀窍是什么?

时间:2013-11-03 16:12:43

标签: c# security format-string

注意:这仅供教育使用。有问题的程序适用于我的应用安全类,并且设计为具有格式字符串漏洞。

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

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

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

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

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

这给出了以下结果:

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

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

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

1 个答案:

答案 0 :(得分:1)

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