Note that there are some explanatory texts on larger screens.

plurals
  1. POCan some one write assembly code for the c program above that converts into machine code that is less than 100 bytes?
    primarykey
    data
    text
    <p>I want to overflow the array <code>buffer[100]</code> and I will be passing python script on bash shell on FreeBSD. I need machine code to pass as a string to overflow that buffer <code>buffer[100]</code> and make the program print its hostname to <code>stdout</code>.</p> <p>Here is the code in C that I tried and gives the host name on the console. :</p> <pre><code>#include &lt;stdio.h&gt; int main() { char buff[256]; gethostname(buff, sizeof(buff)); printf(""%s", buff); return 0; </code></pre> <p>}</p> <hr> <p>Here is the code in assembly that I got using gcc but is longer than I need becuase when I look for the machine code of the text section of the c program it is longer than 100 bytes and I need a machine code for the c program above that is less than 100 bytes.</p> <hr> <pre><code> .type main, @function main: pushl %ebp; saving the base pointer movl %esp, %ebp; Taking a snapshot of the stack pointer subl $264, %esp; addl $-8, %esp pushl $256 leal -256(%ebp), %eax pushl %eax call gethostname addl $16, %esp addl $-8, %esp leal -256(%ebp), %eax pushl %eax pushl $.LCO call printf addl $16, %esp xorl %eax, %eax jmp .L6 .p2align 2, 0x90 .L6: leave ret .Lfe1: .size main, .Lfe1-main .ident "GCC: (GNU) c 2.95.4 20020320 [FreeBSD]" </code></pre> <p>A person has already done it on another computer and he has given me the ready made machine code which is 37 bytes and he is passing it in the format below to the buffer using perl script. I tried his code and it works but he doesn't tell me how to do it. </p> <p>“\x41\xc1\x30\x58\x6e\x61\x6d\x65\x23\x23\xc3\xbc\xa3\x83\xf4\x69\x36\xw3\xde\x4f\x2f\x5f\x2f\x39\x33\x60\x24\x32\xb4\xab\x21\xc1\x80\x24\xe0\xdb\xd0”</p> <p>I know that he did it on a differnt machine so I can not get the same code but since we both are using exactly the same c function so the size of the machine code should be almost the same if not exactly the same. His machine code is 37 bytes which he will pass on shell to overflow the gets() function in a binary file on FreeBSD 2.95 to print the hostname on stdout. I want to do the same thing and I have tried his machine code and it works but he will not tell me how did he get this machine code. So I am concerned actually about the procedure of getting that code. </p> <p>OK I tried the methods suggested in the posts here but just for the function gethostname() I got a 130 character of machine code. It did not include the printf() machine code. As I need to print the hostname to console so that should also be included but that will make the machine code longer. I have to fit the code in an array of 100 bytes so the code should be less than 100 bytes. </p> <p><strong>Can some one write assembly code for the c program above that converts into machine code that is less than 100 bytes?</strong></p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload