<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Exploits mit Buffer]]></title><description><![CDATA[<p>Hi,</p>
<p>ich lerne gerade auf eine Prüfung und hab in einer Altklausur folgende Aufgabe gefunden:</p>
<pre><code>void cpy(char* t) 
{

	char buff[1024];

	strcpy(buff, t);

	fprint(buff);

}

int main(int argc, char** argv) {

	if(argc == 1 || strlen(argv[1]) &gt; 1024) {

		fprint(&quot;Attack dectected!\n&quot;);

		return 1;

	}

	cpy(argv[1]);

	return 0;

}
</code></pre>
<p>3.a) Hat ihr Kommilitone recht? Begründen Sie.</p>
<p>3.b) Erklären Sie was mit den Registern EPB und EIP passieren kann.</p>
<p>3.c) Wie können Sie das Programm verbessern?</p>
<ol start="4">
<li>Obwohl Sie den Bufferoverflow behoben haben gibt es immer noch ein Problem.</li>
</ol>
<p>4.a) Bereits ein Erstsemester-Student kann das Programm zum Absturz bringen. Wie?</p>
<p>4.b) Ein MIN-Student kann sogar eigenen Code zur Ausführung bringen. Erklären Sie wie<br />
.<br />
4.c) Wie können Sie das Programm weiter verbessern?</p>
<p>Also ich glaube, dass er ja 1024 bits von t in buff kopiert ohne die &quot;\0&quot; kann das Programm zum Absturz bringen. Und verbessern könnte ichs durch:</p>
<p>char* buff = (char*) malloc(strlen(t) + 1 ));</p>
<p>könnte bei 4) der Fehler sein, dass es frprintf (&quot;%s&quot;, buff) sein muss?<br />
Ich weiß, dass eigener Code zur Ausführung kommen kann, wenn ich über den Buffer hinaus die Return Adresse auf meinen String setze und dort Schadende ausführe. Aber in dem gezeigten Programm komme ich doch gar nicht auf die EBP+return Address?</p>
<p>Wäre für Hilfe dankbar! Würde das gerne verstehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/338780/exploits-mit-buffer</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 04:37:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338780.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Jul 2016 16:50:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exploits mit Buffer on Sun, 10 Jul 2016 16:50:23 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich lerne gerade auf eine Prüfung und hab in einer Altklausur folgende Aufgabe gefunden:</p>
<pre><code>void cpy(char* t) 
{

	char buff[1024];

	strcpy(buff, t);

	fprint(buff);

}

int main(int argc, char** argv) {

	if(argc == 1 || strlen(argv[1]) &gt; 1024) {

		fprint(&quot;Attack dectected!\n&quot;);

		return 1;

	}

	cpy(argv[1]);

	return 0;

}
</code></pre>
<p>3.a) Hat ihr Kommilitone recht? Begründen Sie.</p>
<p>3.b) Erklären Sie was mit den Registern EPB und EIP passieren kann.</p>
<p>3.c) Wie können Sie das Programm verbessern?</p>
<ol start="4">
<li>Obwohl Sie den Bufferoverflow behoben haben gibt es immer noch ein Problem.</li>
</ol>
<p>4.a) Bereits ein Erstsemester-Student kann das Programm zum Absturz bringen. Wie?</p>
<p>4.b) Ein MIN-Student kann sogar eigenen Code zur Ausführung bringen. Erklären Sie wie<br />
.<br />
4.c) Wie können Sie das Programm weiter verbessern?</p>
<p>Also ich glaube, dass er ja 1024 bits von t in buff kopiert ohne die &quot;\0&quot; kann das Programm zum Absturz bringen. Und verbessern könnte ichs durch:</p>
<p>char* buff = (char*) malloc(strlen(t) + 1 ));</p>
<p>könnte bei 4) der Fehler sein, dass es frprintf (&quot;%s&quot;, buff) sein muss?<br />
Ich weiß, dass eigener Code zur Ausführung kommen kann, wenn ich über den Buffer hinaus die Return Adresse auf meinen String setze und dort Schadende ausführe. Aber in dem gezeigten Programm komme ich doch gar nicht auf die EBP+return Address?</p>
<p>Wäre für Hilfe dankbar! Würde das gerne verstehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501791</guid><dc:creator><![CDATA[Ido93]]></dc:creator><pubDate>Sun, 10 Jul 2016 16:50:23 GMT</pubDate></item><item><title><![CDATA[Reply to Exploits mit Buffer on Sun, 10 Jul 2016 17:42:46 GMT]]></title><description><![CDATA[<p>Ah und ich glaube, die 4er Fragen kann ich mit Format String Attacks beantworten?</p>
<p>Es muss also fprint(&quot;%s&quot;, buff) sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501794</guid><dc:creator><![CDATA[Ido93]]></dc:creator><pubDate>Sun, 10 Jul 2016 17:42:46 GMT</pubDate></item><item><title><![CDATA[Reply to Exploits mit Buffer on Sun, 10 Jul 2016 18:19:50 GMT]]></title><description><![CDATA[<p>8.a) Erklären Sie den Unterschied zwischen C und C++</p>
<p>In C++ würde man es mit std::string verbessern.</p>
<p>Was auch immer irgendwelche Werte in diversen Registern bewirken, wird nicht im C++ Standard definiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501796</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 10 Jul 2016 18:19:50 GMT</pubDate></item><item><title><![CDATA[Reply to Exploits mit Buffer on Sun, 10 Jul 2016 18:28:34 GMT]]></title><description><![CDATA[<p>Und wie ist die Funktion <em>fprint</em> deklariert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501798</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sun, 10 Jul 2016 18:28:34 GMT</pubDate></item></channel></rss>