C# 在没有管道功能的情况下,以字符串格式输入地址的技巧是什么?

C# 在没有管道功能的情况下,以字符串格式输入地址的技巧是什么?,c#,security,format-string,C#,Security,Format String,注意:这仅用于教育用途。所讨论的程序是针对我的应用安全类的,设计为具有格式字符串漏洞 任务中的场景是在邪恶政权的服务器上插入shell代码。尽管我这里的问题只是当我不能使用管道功能将十六进制值插入ASCII范围之外的原始字符串时如何存储地址 程序的格式字符串脆弱部分要求输入,只能通过程序内部的几个选项访问 如何在原始字符串中存储地址?格式字符串易受攻击程序的源代码被隐藏。我无法将管道插入易受攻击的字符串,因为易受攻击的字符串嵌入到程序中 我正在通过复制并粘贴到程序中尝试以下输入: \xea\xf

注意:这仅用于教育用途。所讨论的程序是针对我的应用安全类的,设计为具有格式字符串漏洞

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

程序的格式字符串脆弱部分要求输入,只能通过程序内部的几个选项访问

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

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

\xea\xff\xff\xbf %x%x%x%x%x%x%x |%x|
结果如下:

\xea\xff\xff\xbf 805d1c01234567808060f206bffff67c123456786165785c |6666785c|
它似乎一次只能读取一个字符。我知道用%d和%n更改地址值的下一步


我应该试着把地址储存在别处吗?输入ASCII范围以外的字符有什么诀窍吗?我应该考虑怎样妥善保存地址呢?这有一个诀窍,但我就是不知道

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

poster试图将一些东西填充到一个字符串中,而这个字符串不是程序设计的,以这种方式处理的。当应用程序将输入字符串的提交数据作为命令进行评估时,就会发生格式字符串漏洞攻击。通过这种方式,攻击者可以执行代码、读取堆栈或在正在运行的应用程序中导致分段错误,从而导致可能危及系统安全性或稳定性的新行为。这是我的安全课。我仍然不知道练习的目的是什么。请添加一些段落,解释您正在做什么,最终目标是什么,以及您迄今为止尝试了什么。好吧,但我的主要问题是如何在原始字符串中存储地址?我只知道如何将字符存储在Ascii范围内,该范围不会给我大于7F的十六进制值。如果我将地址存储在原始字符串中,那么我可以使用%d和%n更改该地址的值。我根本不知道这在C#中是如何工作的。C#的
string.Format
分配一个大小正确的新结果字符串。与c相反,您需要注意缓冲区大小。