title: How can I exploit a buffer overflow?
body: <p>I have a homework assignment to exploit a buffer overflow in the given program.</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  
  int oopsIGotToTheBadFunction(void)
  {
          printf("Gotcha!\n");
          exit(0);
  }
  
  int goodFunctionUserInput(void)
  {
          char buf[12];
          gets(buf);
          return(1);
  }
  
  int main(void)
  {
          goodFunctionUserInput();
          printf("Overflow failed\n");
          return(1);
  }
  </code></pre>
  
  <p>The professor wants us to exploit the input gets(). We are not suppose to modify the code in any way, only create a malicious input that will create a buffer overflow. I've looked online but I am not sure how to go about doing this. I'm using gcc version 5.2.0 and Windows 10 version 1703. Any tips would be great!</p>
  
  <p><strong>Update:</strong></p>
  
  <p>I have looked up some tutorials and at least found the address for the hidden function I am trying to overflow into, but I am now stuck. I have been trying to run these commands:</p>
  
  <pre><code>gcc -g -o vuln -fno-stack-protector -m32 homework5.c
  gdb ./vuln
  disas main
  break *0x00010880
  run $(python -c "print('A'*256)")
  x/200xb $esp
  </code></pre>
  
  <p>With that last command, it comes up saying "Value can't be converted to integer." I tried replacing esp to rsp because I am on a 64-bit but that came up with the same result. Is there a work around to this or another way to find the address of buf?</p>