作者: admin

  • Apache CVE-2017-7659漏洞重现及利用分析

    近日,apache在其网站发布了最新的安全公告,其中涉及多个漏洞。针对CVE-2017-7659漏洞的介绍是这样的:

    A maliciously constructedHTTP/2 request could cause mod_http2 to dereference a NULL pointer and crashthe server process.

    可以看到这是apache WEB服务器(httpd)中的一个HTTP 2.0协议处理的漏洞。未然实验室安全研究人员针对此漏洞的技术细节和利用方法进行了深入的研究,欢迎安全爱好者们一起分享和讨论。

    0×01补丁分析

    在redhat的bugzilla上可以找到该漏洞:

    https://bugzilla.redhat.com/show_bug.cgi?id=1463199

    在github上有对该漏洞的修复提交:

    https://github.com/apache/httpd/commit/672187c168b94b562d8065e08e2cad5b00cdd0e3

    修改前后的代码差异比较如下:

    Apache CVE-2017-7659漏洞重现及利用分析

    可以看到,修复内容很简单,就是增加了对h2_request_rcreate函数返回值的判断。官方推荐升级到2.4.26修复漏洞。

    0×02漏洞成因

    https://archive.apache.org/dist/httpd/httpd-2.4.25.tar.gz下载到有漏洞的服务器代码后,通过补丁的修改进行漏洞成因的逆向分析。

    首先查看漏洞函数h2_stream_set_request_rec,发现是调用h2_request_rcreat创建http 2.0请求的数据结构req,h2_request_rcreat执行失败时req为空,此时在日志函数ap_log_rerror中直接解引用req导致进程崩溃:

    Apache CVE-2017-7659漏洞重现及利用分析

    继续查看函数h2_request_rcreate,看到首先会把req置为0,然后判断4个变量r->method,scheme,r->hostname,path,任何一个为空则返回失败,而此时req还是0,就会导致进程崩溃:

    Apache CVE-2017-7659漏洞重现及利用分析

    那么这4个变量是哪一个为空导致的漏洞呢?scheme是先判断了是否为空再赋值的,首先排除;path是从r->parsed_uri中解析出来,解析函数apr_uri_unparse在其它地方有多次使用,直觉path也不会为空;r->method保存请求的方法字段,在HTTP请求中必须存在,因此也不应该为空;因此只有r->hostname,保存请求的主机名,也就是域名,可能为空。

    我们知道,HTTP请求中,有2个地方可以表示主机名:

    1) 请求的路径以完整URL方式表示,URL中包含主机名,例如GET http://www.example.com/ HTTP/1.1,这里主机名就是 www.example.com。服务器中是在ap_parse_uri函数中解析这种主机名的

    2) 在Host请求头中包含主机名,例如:

    GET / HTTP/1.1

    Host: www.example.com

    服务器中是在fix_hostname函数中解析这种主机名的

    分别审计ap_parse_uri和fix_hostname函数,发现如果请求中没有Host头,那么r->hostname确实是空。但是服务器也考虑到了这种情况,在ap_read_request函数中做了判断:

    Apache CVE-2017-7659漏洞重现及利用分析

    这里的判断逻辑,如果满足下面2个条件之一

    1) r->hostname为空,且请求的HTTP版本大于等于1.1

    2) 没有Host头,且请求的HTTP版本等于1.1

    就会立刻回复400状态码的错误页面,并不会触发后面的漏洞。在注释里也说明了,HTTP/1.1的RFC2616的14.23节中明确指明,HTTP/1.1请求必须包含Host头。

    但是,开发者是不是忘了什么,HTTP还有1.0版本啊,且HTTP/1.0和HTTP/1.1的处理流程一样,虽然HTTP/1.0确实没有规定请求必须包含Host头。因此HTTP/1.0请求是可以没有Host头的,程序会一直按照流程执行,最终执行到h2_stream_set_request_rec函数,此时r->hostname为空,从而触发漏洞。

    0×03漏洞验证及漏洞利用

    综合上面的分析,该漏洞利用成功需要如下条件:

    1) 服务器支持HTTP/2

    2) 请求是HTTP/1.0版本

    3) 请求中没有Host头

    服务器配置

    在server上要配置开启HTTP/2功能,使用apache默认的站点配置,在配置文件中首先加载mod_http2.so:

    Apache CVE-2017-7659漏洞重现及利用分析

    然后加入下面配置,重新启动apache httpd就可以了:

    Apache CVE-2017-7659漏洞重现及利用分析

    验证POC

    验证时,我们首先起一个单一进程的apache httpd服务,方便验证进程崩溃后的效果:

    Apache CVE-2017-7659漏洞重现及利用分析

    正常访问,返回欢迎页面:

    Apache CVE-2017-7659漏洞重现及利用分析

    将构造的POC通过burpsuite发送:

    Apache CVE-2017-7659漏洞重现及利用分析

    果然超时没有响应,同时在服务器上发现httpd进程已经崩溃:

    Apache CVE-2017-7659漏洞重现及利用分析

    再次访问服务器时,页面已经无法访问了:

    Apache CVE-2017-7659漏洞重现及利用分析

    漏洞利用

    在上一节,我们已经验证了在单一进程模式下,如何通过该漏洞导致apache服务器异常终止。但是通常情况下apache服务器在启动时,会同时启动多个工作进程:

    Apache CVE-2017-7659漏洞重现及利用分析

    而且当worker进程崩溃时,apache会自动启动新的worker进程。那么在真实的网络环境中,黑客会如何利用此漏洞对服务器进行攻击呢?

    我们尝试编写了一个多线程(并发100个线程)的程序,同时发起多个畸形请求,以不断触发后台worker崩溃,并让apache服务器不断陷入重新分配worker的处理之中:

    Apache CVE-2017-7659漏洞重现及利用分析

    执行脚本时,发起的请求:

    Apache CVE-2017-7659漏洞重现及利用分析

    请求发起后,我们发现,并不需要特别的并发连接,便可以让服务器进入拒绝服务状态:

    Apache CVE-2017-7659漏洞重现及利用分析

    0×04 漏洞影响

    在apache的漏洞公告中,只有2.4.25版本的httpd服务器受此漏洞影响。但是根据未然实验室的测试,从2.4.17开始的所有版本的httpd服务器,受到这段POC攻击时都会崩溃,而httpd也是从2.4.17版本开始支持HTTP 2.0协议的。因此可以说这个漏洞会影响httpd的所有支持HTTP 2.0的版本,未然实验室强烈建议用户更新到最新的2.4.26版本。

    2.4.25之前的版本代码与2.4.25版本不尽相同,以2.4.17为例,在h2_request_rwrite函数中:

    Apache CVE-2017-7659漏洞重现及利用分析

    收到攻击POC后,r->hostname为空,因此req->authority也为空,而ap_strchr_c其实通过下面的宏进行定义的:

    Apache CVE-2017-7659漏洞重现及利用分析

    因此在上面的函数中,调用strchr的第一个参数为空,此时会导致进程崩溃。

    0×05总结

    apache在其HTTP Server 2.4.26版本修复了多个漏洞,业界普遍认为这些漏洞比较鸡肋,难以利用。未然实验室挑选其中个别漏洞进行了深入的分析和利用尝试,发现其中有些漏洞其实影响还是很大,尤其是对于一些高价值站点。

    本文讨论的部分方法可能会造成目标网站拒绝服务,影响目标网站的业务正常运行,所以请勿对真实目标进行尝试,否则由此引起的一切后果未然实验室概不负责。

    水平所限,文章内容难免有不足之处,欢迎大家指正。您可通过未然实验室公共邮箱weiran.labs@huawei.com或关注我们的微信公众号“WeiRanLabs”与我们联系,期待与各位专家交流。

    *

  • 辩论题,论大学老师的思想是规矩老实好,还是灵活应用好。

          今天逛简书,看到了简书首页的辩论咖专题,思前想后,还是决定听一听大家的意见。一起来辩论吧!

    辩论题,论大学老师的思想是规矩老实好,还是灵活应用好。

        上大学以后,来自四面八方的不只是同学,还有老师,所以总会和同学或者是老师在思想上产生分歧。

          人类真的是矛盾综合体,一方面希望遇到一个负责人的好老师,为自己指点迷津,一方面又希望老师可以给学生足够的自由,毕竟现在是大学生了嘛。

          我是学音乐专业的,自然每周都会有专业课,也就是唱歌,然后老师挑毛病,其实我是特别喜欢我的专业老师的,因为他会很认真的听每一个学生唱歌,然后细心的点评,不像有些老师一边听,一边玩手机,一心二用,我觉得在这种讲专业的时候不是特别的适用。

            然而现在,就在今年九月份,我已经是一名大三的学生了,专业课自然也要增加了,所以每周有了两节专业课。大三了,自然就有很多事情需要自己去办了,比如说考教师资格证(分了三科,十一月份就要考试,时间紧,任务重),背英语单词,准备英语四级考试(事情那么多不一定考得过,虽然我已经考过三次了),健身减肥(这学期必须要减肥了,为了健康和未来)现实真的是特别的残酷,你不漂亮,别人可以慢慢了解你的才华(这样的人,仅限于有心人)或者直接不接受你的简历,你太胖,别人也是不会对你有好感的(因为,连自己的身材都管控不好的人,还能做好什么事,这是一个通论),所以事情特别多,一件事情也不想要放弃。

          介绍完我自己的任务了,现在来说说我为什么要辩论这个主题:论大学老师的思想是规矩老实好,还是灵活应用好。

        上学期我们的专业课是早上八点半上课,十一点半放学。下午是两点半上课(有一段时间老师自己把时间调到一点半上课,这样可以早点下课,早点回家),五点半放学。我们是四个人一组上课,一共要唱两轮歌曲,第一轮每人唱两遍,第二轮,有时候是唱两遍,有时候是唱一遍。一首歌大概是四分钟左右,所以,在上课时间内,我们自己真正在上课的时间也就四十五分钟左右,但是我们每次却要花三个小时在那里上课加等待,我们也有给老师提过这样太浪费时间,我们可以换成两个人一组,一组一个半小时这样上课吗,但是老师拒绝了,他觉得那样的分组特别麻烦,很容易弄错,万一有同学要请假的话,分组就不好调整。而且学校现在监控检查得很严格,上课期间,必须要有人在教室。因为那个时候是大二,课本来也挺多,事情没有大三这么多,所以就只有算了。

          现在大三了,一周两节专业课,我们再一次向老师提出同上的请求,但是老师还是无情的拒绝了我们的请求,拒绝的理由基本同上,新加入的一点就是,我们告诉老师,另外有一个老师的学生就是两个人一组来上课,也没有出现没人上课的现象,老师却来了一句,四个人一组上课是系上规定的,没有办法,我们真的很无语,这个老师是很好,对我们很负责,但是他这样,让我们也很为难呀,以后一上课,一坐又是一上午,真的太浪费时间了,他还说我们在那里听,可以借鉴同学的好处,我们想说的是,听同样的同学唱歌已经两年了,也没有进步呀。

    而且这学期调整成了,早上八点五十上课,十二点下课,下午两点半上课,五点四十下课。真的觉得好恼火的安排啊,简友们,你们说,是有一个规矩老实的老实好,还是有一个灵活应用的老师好!!!

  • 先别去死,再试着活一活看!——《我与地坛》

    先别去死,再试着活一活看!——《我与地坛》

    文/林则徐则林

    有些事情,就这么在你身上发生了,不管你愿意不愿意,也不管你能不能接受的了,没有任何预兆,也没有给你任何准备的时间,这就是生命的无常。让人无奈的是,无常本就是生命的一种常态。你愤怒也好、你抗议也罢,反正,你是无论如何也奈何不了它的!除了接受,还能做什么?

    《我与地坛》里,史铁生在一个人最美好、最狂妄的年纪双腿突然残废,我想无论换做是谁,谁也接受不了。但这件事情就这样发生在了史老身上,他和很多人一样。起初,面对突如其来的厄运,他也愤怒,也觉得不公平,为什么是自己?当他知道一味地埋怨并不能改变什么的时候,在房间里一待就是一整天。好像只要不出去,自己的残疾别人就不会知道。

    那段时间,一直都是母亲在陪着他。母亲不敢走的太近,因为他就像一颗不定时炸弹,动不动就发脾气。也不敢离的太远,就站在门口默默地守护着。因为母亲不知道他什么时候会需要他,她因此时刻准备着。

    对于史老来说,那段时间无疑是黑暗的。他曾经说过,那段时间总是一连好几个小时想着关于死亡的事情。还好,他没有,不然世界将会少了一位伟大的作家。

    终于是渡过了心理接受期,他开始试着从黑暗里走出来,去观察自己的周边。他发现母亲在他面前,就像个做错事了的小孩,战战兢兢,颤颤巍巍。他才知道自己是多么的可恶!

    阳光适时地照进了房间。母亲看到儿子的状态比之前好了一些,她终于“斗胆”试探性地问了一句:今天,天气很好,要不我推着你出去走走吧?他说好,母亲的脸上露出了许久未见的笑容。

    母亲在后面推着他,两人来到了离家不远的地坛公园。他没想到,在偌大的北京、在繁华的都市里,竟有一处如此静谧的好去处。他觉得,这里很适合像自己这种情况的人长时间地待着。是自己以前没注意到吗?还是注意到了,却没有往心里去。毕竟,年轻人都是向往走南闯北的生活,喜欢去海阔天空的地方。大多只有上了年纪和恋爱的年轻人,或小孩才会来这种地方吧!如今,于他而言,走南闯北是不太可能了,海阔天空更是难,他连像平常人一样走都不行。所以,这里将会成为自己以后经常来的去处了吧!

    而后,母亲经常推着他来这里。推着他,他不说话,母亲就说,她又不知道说什么好,家长里短怕他烦,高谈阔论她又不会。她就说些有的没的,但总是小心、小心、再小心,她生怕自己说的话会伤害到他的自尊心。

    再后来,母亲生病去世,有时候妹妹会推着他来,妹妹没空,他就自己摇着轮椅来。从妹妹的口中,他知道了在那段时间,其实母亲已经病的很严重了。这件事给他的心来了一次迎头痛击,若是没有母亲,他不可能从那段黑暗的日子里走出来。若不是因为自己,母亲也不可能心力憔悴到走的那么快。

    母亲的去世和自己突然残疾的那一天,我作为读者,看到这里时,不知道两者给他的打击哪个更重。但我知道,这一波接一波的打击,足以摧毁一个坚强的人。

    他在书里写道:有一年,十月的风又翻动起安详的落叶,我在园中读书,听见两个散步的老人说:“,没想到这园子有这么大。”我放下收,想,这么大一座园子,要在其中找到她的儿子,母亲走过了多少焦灼的路。多年来我头一次意识到,这园中不单是处处都有过我的车辙,有过我的车辙的地方也都有过母亲的脚印。

    是母亲用无私的爱唤醒了他,让他对生产生了依恋,让他拥有了敢于与命运作斗争的意志。是母亲带着他来到了地坛,给了他一个既可以不被打扰、又能够与外界接触的好去处。在这里,每天都有人和他一样准时出现在这里,他们是一个喜欢通过散步思考人生的陌生人、是一对相携相伴的老夫妇、是一位下班顺便路过的女老师、是一个来这里练声的歌唱青年、是一名曾经辉煌过的长跑运动员、还有一位天真烂漫的弱智小女孩。女孩的哥哥让他想起了自己的母亲。他妹妹玩到哪,他就不远不近地跟到哪,有危险他就出现,没危险的时候,他就在一旁看着。

    即便有些人,他们从来不说话,连个招呼几乎都没有,却已经像是认识了许久的老朋友。他无数次地从他们的眼神里感觉到了对方的鼓励,他们无心中为他创造了一片生机盎然的生命之林,在这片充满了生命力的森林里,他找到了生命的意义——先别去死,再试着活一活看!

    从母亲带他来的那一天开始,他的一生就仿佛与地坛粘在了一起。往后,数次搬家都是围绕着地坛在打转,没有更远,反而是越搬越近。而这地坛好像是在等他,像是宿命轮回一般。

    在地坛,他开始了他的写作生涯。地坛里的花草树木让他仿佛置身于美丽的大自然之中,在这里可以明显地感受到一年四季的变化。对于几乎每天都来的人,这里的一草一木的变化,他都知道。这也是为什么在史老的文章里,我们可以看到如此细腻的景物描写。

    比如:“满园子都是草木竞相生长弄出的响动,窸窸窣窣片刻不宁。”

    草木生长只用肉眼去观察,是感觉不到它的生长过程的,相对而言它是静态的。而史老在后面加了“响动”和“窸窸窣”,草木生长的过程变成了动态的,整座园子一下子就热闹起来了。这是要用心才能感受得到的。

    作为一个与命运作斗争多年的斗士,他对死亡的理解比其他人都要真实许多。他写死亡总是那么的一针见血。

    比如:“我一连几个小时专心致志地想关于死的事,也以同样的耐心和方式想过我为什么要出生。这样想了好几年,最后事情终于弄明白了;一个人,出生了,这就不再是一个可以辩论的问题,而只是上帝交给他的一个事实;上帝在交给我们这件事实的时候,已经顺便保证了它的结果,所以死是一件不必急于求成的事,死是一个必然会降临的节日。”

    写作于史老而言无疑是一次生命的拯救。如果不是忽然残疾,他也不会这么坚定地走上文学创作的道路。他可能会去干别的,那么我们也就看不到这本《我与地坛》和他更多的作品了。史老的忽然残疾,于他是一种磨难,于读者却是一个“福音”。我知道这样说,对史老是不公平的。

    可有时候,命运根本就不会跟你讲什么公不公平。厄运当头,说一句都是多余!

    生命只有一次,而且短暂。在这颗生命之树上,会有风催雨打、会有虫咬蛀蚀,这些我们避免不了。而开什么花、结什么果,也早已注定。我们能做的就是活下去,只有活下去,唯有活下去,我们才有资格去谈其他的。

  • 踽踽——致敬青春奋斗的孤独

      “既然选择了远方,那便只顾风雨兼程”,在蒲公英远行的日子里,卸下年少浮华,孤寞伴着不安,虚狂共着无措在白驹过隙的夹缝里,踽踽独行。

        记忆末端的勾勾缠缠,或春上缱绻清明,或芒夏婵媛含露,或清秋消减挽装,或流冬贻荡添黛。蟾光,长风,寒露,长天一色,重光未至,清风所到唯有依归,无处安放。今宵枝头,几世轮回,寸心难舍,这枝低眉垂首萦萦难绕,那叶欲语还休慌慌难逃,只能,困了心,羁了步,厌厌人绝。最苦不过之事莫过身处荒芜,却倔强咀含欢好。

        踽踽,拖着蹒跚的步子,踌踌躇躇;踽踽,在梦的没有边际的光影里,默默彳亍。我多想在万水千山中赏略你的微笑,我就会想不到,我付出了跋山涉水也不敢期望的代价,我淌过风雨,乘着滔天巨浪,在时光的轴迹里,岁月的烙痕里,细数自己的脚步,却数不清,数不到与你相逢的一程。

        多么美丽的相逢共生着多么难舍的离别,浮萍伴着漂泊生生世世;枯藤缠着老根几世轮回。

        清风卷裹闲云万里长冬,也甘也愿;叶落辗尘棂里长卷恒存,无怨无悔;花败入泥纸上情思难绘,匪怖匪忧。

        踽踽,不若长刀立马,铁戟沉沙,倒似那闺中红娘西浪子:一念尘起尘落几度花开,轻扰忄曼捻,复复挑扌兆。一针一线,日日年年。

        我不敢半盏清茶,闲庭信步。亦不能披坚执锐,血战黄沙。是否千帆过尽,这世间真有如斯执着,一往如初?还是纵纵涟漪,只此芳华?所有的长烟落日,所有的舒风流云,流溢在眉间掩饰不全,熔炼不细的精致而浓稠的憾恨,我也许懂,那不可重来的遗憾,那悬而未决的不甘,隔着岁月和世事,也隔开了太多的人。春花秋月何时能了?命运的回答是在这条不知依归的路上,亦步亦趋。

        独行的人,最是要禁得住孤独的侵蚀。我没有多余的眼泪,禁得住秋流到冬春流到夏,也没有芜杂的浮念贪荣,禁得住一梦经年。我们都是一朝而起,又一朝而落的花草,在生死纵横,血雨腥风的命数里单枪匹马,孤军奋斗,一切的一切,风依尘,尘归土,因为无枝可依,终究选择踽踽独行。那一切零碎斑驳的回忆,终究会成为青春那座静谧庭院中的飞短流长。

        后来,这些消逝的岁月,我虔诚地用它去装点人生与梦境。

        再没有离别,再没有不安,

        再没有人知道。

  • 你还在岁月里无声痛哭,叫我怎能不努力成长

    你教会我的诗和远方:飞雪连天射白鹿,笑书神侠倚碧鸳

    你还在岁月里无声痛哭,叫我怎能不努力成长

    在我没有记忆的年纪,没有你觉得记忆;在我刚刚开始记事的年纪,还是没有你的记忆。你的归来,不是因为我,而我的生活却因你而改变。

    我应当看动画片的年纪,我和爷爷一起看新闻联播;当同学在看偶像剧的时候,我和爸爸一起看这武侠剧。爸爸在我上了小学一年级之后,才出现在我的世界。他告诉我江湖儿女江湖事,他说女子应当有所为;他告诉我“飞雪连天射白鹿,笑书神侠倚碧鸳”是金庸作品的首字组成的对联,他说江湖儿女多英雄……

    我爸爸只读过初中,却非常喜欢看书,当然各种武侠小说。他用他的智慧启发这我做人,他用他有限的知识告诉我诗和远方,他教会了我诗和远方。

    他打算教我喝酒,我却无法学会

    孤独的心灵,总在追寻孤独的寂寞。那个教会我诗和远方的人,还在他的江湖里磨练这。而闯荡江湖怎能没有酒呢,他曾经试图教我喝酒,而我却无法学会。

    我爸爸把一小杯酒,偷偷的拿给我喝,却被妈妈发现了。妈妈把爸爸臭骂一顿,自此爸爸再也没有提过了。而我也是在高中毕业之后,才知道原来我酒精过敏,喝酒这件事怕是永远学不会了。

    不会喝酒,去闯江湖,去追寻诗和远方,这一切似乎早已预示着故事的结局。

    你在岁月里奔波,失去了英俊的外貌,染上了尘埃

    我从来不知道我是可以脆弱的,在别人家的小孩子天天打电话给父母抱怨这抱怨那,我们却很少通话,因为江湖里的好汉都是“打碎的牙往肚里吞”。

    而我后知后觉得知道,原来那样的小孩这找人喜欢时,我试着给你打过一个电话,可是这通电话,却是冰冷的机器的声音,没有任何人回我。在所有的室友都和爸妈哭诉完考试难之后,还是没有回电话。知道晚上,妈妈打电话告诉我你身体不舒服,在睡觉,我才弱弱的开口,告诉我考试好难,好多做不来……

    那时候的妈妈是前所未有的温柔,原来爱哭的小孩真的有糖吃。直到放假时,妈妈才叫我回家,在我回家的路上妈妈才告诉我你出事了。

    那是我第一次示弱得来的舒适感,到最后却是晴天霹雳的打击。妈妈让我回家马上去医院,我爸爸从三楼摔下来,隔壁人家的地基上的钢筋穿透了大腿,还有一个工友摔在她身上……

    那是我第一次学会向父母哭泣,没想到却是那个结果。我清楚的记得,那是我高一的期中考试,而那个岁月深深的印在了我的脑海里。从此岁月漫长,我更要学着接受一个人努力的成长。

    其实我早该想到,我爸爸是一个英雄,怎么会因为一点小病而一直睡着不给我打电话。爸爸是个英雄却也是个普通人,在岁月里奔波,他被风吹雨打,他被岁月打磨,他失去了英俊的外表,他的皮肤变得黝黑,他的身上沾满了风尘……

    故事还没结束,我的爸爸

    我的爸爸和别人谈起我时,总是满满的骄傲“我女儿很独立,从来不要我来管”。我学着独立成长的路上,我就是爸爸要我做的那个大侠……江湖凶显,自己去闯。

    当我自以为足够独立的时候,其实我还在靠着我的爸爸。还在读书的我,依旧花着父母的钱,依旧是个不太成熟的孩子,依旧还会惹父母生气……

    我以为我的成长,比起同龄人已经足够成熟了,却不知道那是不够的。我爸后来一直身体不好,加上一直以来就有的结石,他终究抵不过年轻的时候了。

    就算身体一日不如一日的时候,他还在用他的倔犟强撑着去工作。爸爸总是习惯性的工作,习惯性的倔犟。他身体里的结石,就像一个定时炸弹,在我不在家的时候,他结石痛的时候,他一个人骑着电动车到十几里外的陈爷爷家去看病;放我在家的时候,爸爸在路上结石痛得不行,独自去陈爷爷家打针,最后是在制不住陈爷爷只好给他打了一针吗啡;然后这个提着大袋中药,刚刚打过点滴的男人回家放下中药有继续工作去了。

    他的背影很快消失,却在我的心里泛滥成灾

    我要怎样才能追的上他的脚步,那样步履匆匆,那样马不停蹄……当岁月再一次将他的身影从我的眼中拉开,我只知道他在岁月里无声的痛苦,我要怎样努力才能追上他。

    你还在岁月里无声的痛哭,我怎能不努力成长。我要用你遗传给我的倔犟去包容你的倔犟;我要怎样才能最快的接过你身上的重担;我要怎样才能让你的哭声不再是抑制的、无声的;我要怎样才能阻止岁月的风尘沾染你的身躯;我要怎样才能让你正真的快乐……

    你在岁月里无声痛苦,只因瞥见你眼眶尚未了流出的泪水,我更要努力成长。长到能与你并肩,长到我可以潇洒的告诉你“还做什么工作,我养你”!

  • 最后的唢呐

    最后的唢呐

    太阳快要落山的时候,整个村子笼罩在一片昏黄之中,村民们三三两两的从田里回来,孩子们雀跃在回家的路上,随着炊烟袅袅升起,村子里又慢慢开始热闹了起来。

    刘金山穿着背心踩着宽口老布鞋,提着一壶茶走出了屋子,在院子里的石桌前伸了个懒腰,喝上一口茶水,清了清嗓子,白毛巾往脖子上一搭,挺直腰杆,深吸一口气,唢呐声顿时在整个村子里漫开了。

    那唢呐声悠扬而醇厚,时而高亢激昂,时而悲壮凄凉,千转百回,引人入胜,忙完了一天的村里人坐在院子里,搬一把凳子,摇一摇蒲扇,享受免费的音乐盛宴。

    刘金山的唢呐技术很好,好到什么程度?每逢喜事,唢呐一响,高昂欢快,每个人都像踏着唢呐的节拍走路,把气氛烘托的热闹异常。每逢白事,唢呐声低沉哀怨,如泣如诉,令听者动容,旁观者往往听着听着就流出了眼泪。

    刘家班的唢呐,在方圆几十里无人不知,在很长一段时间内,周围村里的人以能请到刘家班为荣,有要办事的,总会提上两瓶好酒去找班主刘金山。

    刘金山走在村子里时,迈着方步,挺着腰杆,谁见到了都会热情地打声招呼,递上一根烟,神气的不行,犹如古代时皇帝出游,场面大的不得了。

    刘家班在村里不仅地位高人缘好,收入也相当不错,东家不仅要好吃好喝、好烟好酒的伺候着,红包也必不可少,刘家班的唢呐技术也向来不外传,刘进金山的徒弟便是他的侄子刘二利。

    刘二利悟性很高,上手很快,脑子很灵活,常常在刘金山吹完传统曲目后,别有风味地即兴吹上一两首流行歌曲,而且曲调拿捏地非常到位,惹的年轻人一阵欢叫。

    吹唢呐是个力气活,憋气出气间,常常累得满头大汗,刘二利年轻体壮,也非常卖力,吹到兴起,即使在大冬天,也一把拽掉衣服,赤裸的背上冒着水汽,刘金山每每看到,都感叹自己老了。

    刘二利三十五岁的时候,刘金山正式把班主的位子让给了刘二利,自己退居二线做了甩手掌柜,他看好自己的侄子,这小子脑子活、肯卖力,有自己年轻时候的那股劲。

    村子往东二十里,有一村子叫高家庄,村里也有一个唢呐班子,班主是个年轻人,唢呐技术一般,生意也远不如刘家班的红火,但年轻的班主脑瓜灵活,没几年,高家班就把刘家班的生意抢了过来。

    刘二利不服气,专门去看了高家班的演出,那叫一个热闹,他发现原来电子琴架子鼓比唢呐二胡更有冲击力,他发现原来流行音乐比传统戏曲更有气氛,更重要的是,他发现女人脱衣服比他脱衣服更具吸引力。

    他没和老班主商量,一个人到城里操办了比较现代的设备,脑瓜一转,又到不出名的KTV找了几个浓妆艳抹的女人,大旗一展,刘家唢呐班变成了二利歌舞团。

    改制后的第一笔生意让他坚定了自己的判断,根本不用自己那么卖力的吹唢呐,几个女孩上台一扭一摆,连歌都不用唱几首,打情骂俏、脱一两件衣服,观者如云,收入也是原来的四五倍!

    老班主刘金山不干了,他指着刘二利骂这是伤风败俗,骂他辱没祖先败坏门庭,老刘家靠手艺吃饭,什么时候需要这些乱七八糟、乌烟瘴气的东西?老班主带着班子里的老人不干了,退出了江湖。

    刘二利有自己的想法,他认为世事总是要变的,这年代靠本事赚钱不丢人,因循守旧已经不合时宜了,他就是要赚钱,要从高家班手里把头把交椅夺回来,至于丢不丢人,他可管不了这么多。

    二利歌舞团和高家班的竞争越来越激烈,现代设备越来越多,音响动静越来越大,流行歌曲唱的越来越多,传统戏曲越来越少,女演员们穿的也越来越少、尺度越来大,你敢脱一件,我就敢脱两件,连大冬天都能脱。

    与此同时,唢呐声越来越少,到最后,几乎听不到了唢呐声,看演出的老人孩子越看越少,年轻人越来越多,虽很热闹,但没有了以往的温馨。

    刘金山再走在村里的路上时,主动给他打招呼套近乎的人少了,背后指指点点的人倒是不少,想想二利,他常常觉得臊的不行,有时候一声长叹,叹收徒不慎,叹世风日下,如此下去,那唢呐班还能叫唢呐班吗?

    他经常在晚上独自一人坐在院子里吹唢呐,没有往日的欢快高昂,唉声叹气,断断续续,但依旧原汁原味,淳朴的如村子里的风一样,让人感到舒服。

    有时候他甚至在想,等他死了的时候,二利能不能给他吹上一次干净的唢呐,以后村里老人去世的时候,谁还能吹唢呐,至于二利的歌舞团,他可看不上那些乱七八糟的东西。

    又是一个夕阳西下的傍晚,刘金山脖子上搭着白毛巾,手里提着茶水壶,脚踩着宽口老布鞋来到了院子里,提起唢呐吹了起来,不知怎的,有一个调子怎么也吹不上去。

    他停下来,喝了口茶水,用毛巾擦了把汗,深吸一口气,鼓起双腮,依旧没有吹上去,他似乎有些缺氧,在院子里晃了几下,呆住了,岁月不饶人啊。

    他索性把唢呐放在石桌上,勒了一下腰带,憋了一口气,清了一下嗓子唱了起来,听腔调唱的是豫剧《辕门斩子》,他嗓子粗哑,唱出来别具一番风味,一曲未完,刘金山老泪纵横,泣不成声。

    从那天以后,村里再也没有响起过唢呐声,村里人都说,方圆几十里最好的一个唢呐班彻底没了。

    【乡土故事&行业故事汇&微小说首届联合征文】:家乡老行当的故事

  • 婚誓轻许,韶华不负(169)

    其他章节请移步【连载】婚誓轻许,韶华不负(目录)

    第二天清晨,阳光透过昨晚未及阖好的浅灰色窗帘,搅醒了还略有些头痛的陆晟,看一眼墙上的时间,已经是上午十点钟了,身旁的叶浅还没有醒,像只小奶猫蜷缩着,枕头也不枕,只窝在他肋下。

    陆晟揉揉眼睛敲敲头,给身边的叶浅把被子盖盖好,然后又开始安安静静地盯着他们家叶浅看,一副怎么都看不够的样子:这两天也是难为她怎么样熬了,眼睛都眍了,昨晚莫名其妙还见了家长,自己带了醉意神思不足,也不顾上为她讲话……

    “笑什么呢?跟一傻小子似的。”陆晟还对着叶浅在发痴,她却醒了,眼睛忽闪忽闪地对着他,已经说笑起来。

    “笑你怎么能这么乖,这么好看啊。”陆晟见她醒了,扶她枕回枕头上去,自己手撑着头,还是对着她笑。

    “我在睡觉诶,能不乖么;再说了,在您的地盘上,我还敢不乖?昨天晚上也不知道谁赶着撂狠话,要把我吃了的是你吧?”

    “你记仇啊!还不是怪你太魅惑……”说着,陆晟轻刮叶浅鼻梁,看她睡眼惺忪的样子,真是可爱到不行。

    “够了啊,明明是你欲壑难填。”叶浅也不恼,趁机抓住陆晟的手,搭在自己身上,轻偎进他的怀抱。

    婚誓轻许,韶华不负(169)

    “哈哈哈哈,欲壑难填?成语是这么用的吗?我的中文系学霸校花!”陆晟万万想不到她会这么讲话,这叶浅到底有多少花样?不过昨晚也确实是累到她了。

    “我又不是文院男神,才没有学术包袱。倒是你哦,早醒了不说去做饭,在这儿偷懒,你不是不会累的么?”叶浅这几天都没好好吃饭,昨晚又给陆晟折腾一宿,这一大早,简直可以算是饿醒的。

    “怪我,怪我好么?好啦,你休息,我先去订外卖,一会儿吃完了,我们一起出门去菜场超市逛一圈啊。”陆晟说着,印个吻在叶浅额头,还是恋恋地离开了卧室。

    叶浅看着他有点落寞的背影,不由得就笑了——你试试一睁眼就看到一张俊脸对着你痴汉笑,能不开心么?

    陆晟下楼之后,叶浅一个人躺了一会儿,也怪没意思的,就下楼了,昨天不过是回来路上买了些贴身衣物欢喜,如今她还是穿陆晟的睡衣。

    洗漱完,才刚到楼下,叶浅还没开口,就被陆晟给问了个蒙:“叶子,你梦游了还是田螺姑娘来过了?为什么冰箱是满的,锅里有粥,这边还有锅贴蒸饺小笼包诶?”

    “我梦游?我梦游也只会偷吃东西吧……”叶浅走过去看看,陆晟还真一点没夸大,偌大的厨房焕然一新就算了,早餐都是现成的,这还真是,田螺姑娘来过了?

    “一定有人来过。”陆晟从厨房出来,就开始找自己的手机,他难道是想到了什么?

    叶浅也追随他的脚步回到客厅,定睛一看才发觉,这里显然也有人收拾过,不说别的,昨晚他们喝茶的茶席,一看就收拾过,杯子都是干净的了。

    “果然了……防不胜防的一定是我妈了。”陆晟看了眼手机,不由得感叹。

    他不过是随口说,却把一旁的叶浅吓得半死:“喂,你不是说你妈来过了吧?什么时候?这也太……你别吓我啊。”

    “没有啦,给我发信息来着,咱俩没看到了而已。昨天她就看到这里乱吧,然后今天一大早叫阿姨过来收拾过了,你放心啦,我妈请的人,职业素养和道德都是一流的,非礼勿视人家懂的啦,既来之则安之,去吃饭咯?”

    陆晟说着,就放下手机,拉这边还在若有所思的叶浅就要去吃饭,“可我怎么还是毛骨悚然的呢……”

    “别想啦,妈没有任何意思,就是看不下咱俩把这儿折腾成猪窝啦,你不喜欢,我下次告诉就是了;你有这个闲心,不如想想昨晚我爸的提议。”陆晟边给两人盛粥,边安抚叶浅。

    “提议?什么提议?”叶浅当然记得的,但她不知道怎么回应,故意打岔。

    “就马上结婚的提议啊?你不知道,我爸的所谓长假也顶多半个月,所以,这事儿其实挺急的,不然我爸妈也不会大晚上的过来等着我们。”陆晟倒是娓娓道来,叶浅这边却还是头顶似有惊雷。

    “半个月?我去……你们……要不要这样啊,我这……”

    “诶,你也不至于这样吧,不是逼你的意思哦,就是一个提议,提议,你完全可以不接受的,反正你早晚都是我的人,跑是跑不了了的。”陆晟看她急成这样,心下只有心疼,虽然他其实巴不得早点跟叶浅结婚。

    “可你爸说的没错,我年后就走了……”叶浅其实也不是急“被逼婚”,而是感怀,好容易在一起的两个人,没多久又要分开。

    陆晟把粥递给叶浅,听她口气竟是动摇了的样子,心下又是一喜,“是啊,择日不如撞日,也是好的,反正你做什么决定,我都赞同,都支持,你看这样好不好啊娘子?”

    “滚,跟谁学的涎皮赖脸……人家心里急得什么一样,你还取笑?”叶浅接过粥,闷头喝了几口,还是忍不住回怼陆晟。

    “急?莫不是急着要嫁给我?”陆晟早看到叶浅被他一声娘子叫得脸颊绯红,心下更为得意——他最喜叶浅因他害羞的样子。

    “要死啦!你就不能正经一点,越老越成怪大叔了怎么还!”

    “哪有,老?你确定?昨天晚上你可不是这么说的……”

  • 裂缝.彩铅手绘

    她是个来自贵族家庭的女孩

    她叫 菲艾玛

    她是西班牙人

    她游历过世界

    她见多识广

    她的特长是跳水

    她有严重的哮喘病

    有一天她从西班牙来到英国

    来到一所寄宿女子学校

    从此一切都变了

                                    ───来自电影《裂缝》

    今天画的主人公就是电影《裂缝》中的女主角菲艾玛,一个漂亮而优雅的西班牙女孩。

    裂缝.彩铅手绘

    by朴领

    这次用的材料是彩铅加油画棒,采用两者相互叠加的方式来进行创作。

    人物的脸上的明暗着重进行了处理,表现出她五官的立体感,脸部的肌肉感。

    五官是刻画的重中之重,是人物刻画的精髓部分。

    选取这张电影截图的原因,是因为这幅图更能体现菲艾玛的气质,同时也可以体现出一种阴郁的感觉。

    人物的脸部光线很暗,就像这部电影的氛围,阴郁,压抑。

    来到这所英国学校的菲艾玛,最终伴随着电影中充斥的阴冷的气息,死在了她的女老师的怀里。她注定是一朵要提前陨落的鲜花。

    就如电影名字所言,这道裂缝,是人性的裂缝,无情的吞噬了她,毁灭了她。(了解具体细节可以去看这部电影,这是一部很好的电影。)

    可怜的菲艾玛

    她是个悲情的西班牙女孩

    她永远留在了这里

    再没有回去。

    文:朴领

  • 经常使用runOnUiThread(),你真的理解它吗

    在Android开发的过程中,主线程主要来完成UI绘制和响应用户的操作,默认情况下,我们大部分的代码都是在主线程
    中执行的,因此我们时刻要考虑主线程的情况。我们都知道要开启一个子线程来完成一个耗时操作,以避免阻塞主线程影响
    用户体验,甚至ANR。但是子线程执行完要更新UI的时候,我们又必须回到主线程来更新,实现这一功能常用的方法是执行
    Activity的runOnUiThread()方法:

    runOnUiThread(new Runnable() {      void run() {          // do something      } }); 

    这样就可以很神奇的使run()中的方法在主线程中执行。那么runOnUiThread()是怎么使run()中的代码在主线程中执行的呢?

    开始分析

    先从Activity的部分源码开始:

    final Handler mHandler = new Handler(); private Thread mUiThread; // ... public final void runOnUiThread(Runnable action) {     if (Thread.currentThread() != mUiThread) {         mHandler.post(action);      } else {          action.run();      } // ... } 

    代码很简单,首先判断当前的线程是否是主线程,如果是住线程就直接执行Runnable接口的run()方法;但如果不是主线程
    呢?这时调用Handler的post(Runnable)方法。那么这个过程又发生了什么了呢?让我们从Looper说起。

    Looper

    我们创建一个线程并重写它的run()方法,如下:

    public class MyThread extends Thread {      @Override     public void run() {         // do something...     } } 

    当这个run()方法中的语句执行完的时候,这个线程就结束了,无用了。如果我们为了减小内存而不创建新的线程来复用
    这个线程的时候,我们需要它保持存活并等待新的指令。常见的做法是创建一个循环:

    public class MyThread extends Thread {      private boolean running;      @Override     public void run() {         while (running) {             // do something...         }     } } 

    只要while循环没执行完,线程就保持存活。这就是Looper可以实现的,Looper字面意思就是“循环”,保持线程存活。
    关于Looper值得一提的事:

    • 线程默认不会得到Looper;
    • 可以再线程中创建一个Looper;
    • 每个线程只能创建一个Looper。
      下面我们用Looper替换white循环:
    public class MyThread extends Thread {      @Override     public void run() {         Looper.prepare();          Looper.loop();     } } 

    调用Looper.prepare()检查当前线程中是否有Looper,如果没有则创建。调用Looper.loop()后Looper开始循环。
    这样,Looper循环并保持线程存活,但这样什么也不做的线程存活是没有意义的。
    当创建Looper时,它创建了一个消息队列(MessageQueue),用来存放消息(Message)。

    什么是消息

    Message实际上就是一些指令的集合。它能保持String,int,Runnables等数据类型。
    如果我们想要在特定的线程执行Runnables,我们只需将Runnables放到消息中,并将消息放到这个线程的Looper创建
    的消息队列中!那么如何放到消息队列中呢?又用到了Handler。

    Handler

    Handler就是处理者的意思,他负责将消息放到Looper的消息队列中,当到了执行的时候,他又负责在Looper所绑定的
    线程中执行这个消息。
    Handler被创建的时候是指向特定的Looper的。有两种不同的创建方式:

    1. 在构造方法中指定Looper:
      Handler handler = new Handler(Looper looper);
    2. 使用空构造方法,此时指向当前线程的Looper:
      Handler handler = new Handler();
      Handler能非常便利的创建消息并将其添加到Looper的消息队列末尾,如post()。
      所以,我们只需将Runnable传到post()中:
      handler.post(new Runnable(){      @Override      public void run(){          // do something ...      }  }); 

    是不是看上去很眼熟了。

    结论

    重新回过头来看runOnUiThread()的源码:

    final Handler mHandler = new Handler(); private Thread mUiThread; // ... public final void runOnUiThread(Runnable action) {     if (Thread.currentThread() != mUiThread) {         mHandler.post(action);      } else {          action.run();      } // ... } 

    首先在主线程里通过无参的构造方法创建一个Handler,这个Handler是指向主线程的。
    当执行runOnUiThread()时,当前线程不是主线程,调用mHandler.post(action),将Runnable添加到主线程的消息队列中
    这样,Runnable的语句就是在主线程执行的了。

  • 中级阶段外语学习·发展(2)

    中级阶段外语学习·发展(2)

    选好材料后,怎样听、读呢?

    首先,像听、读母语一样听、读一遍,即遇到新形式不做标记,不查词典。因为听、读时,大脑对收到的信息进行即时处理,如果做标记甚至查词典,就会打断大脑的工作,往往查完词典我们已经不记得前面讲什么了。这样不仅影响理解,而且严重影响听、读兴趣。

    在这一遍听、读过程中,我们可能注意到一个或几个新形式。听、读完后,如果想了解注意到的新形式的意义,找到其出处,根据上下文猜其意义。不必查词典。

    如果某形式比较常用,在自己目前学习范围内,它一定会在其他材料中重复出现。碰到次数多了,对其意义把握更清楚了,试着用外语表达该形式的意义。然后查词典,看词典里的外语解释和例句,对比自己的释义,看看有哪些异同,回到听、读材料体会比较。

    如果某形式不常用,不在自己目前学习范围内,就没必要花时间学。因为如果花时间学,再次碰到该形式的几率低,学了长期不用,自然就忘了。前面花的时间就浪费了。

    第一遍听、读完后,如果感兴趣,就重复听、读。重复次数自己决定,不想重复就听、读其他材料。

    这样听、读外语进行泛学是建立在精学打好的基础上的起步阶段打下的基础是外语学习的第一桶金。后面继续精学打的基础就是利用第一桶金赚取的第二、三、四……桶金。积累的每一桶金,尤其第一桶金,量越足,质越纯,越有利于后续发展。量足就是所有涉及的形式都建立了应建立的联系,质纯就是联系已巩固至自动化程度。

    有了精学的坚实基础,对外语形式会有一定的体悟和敏感性,听、读时才会注意到形式。比如,迅速识别最近掌握的形式、注意到新形式。无此基础,听、读时常常是囫囵吞枣,结束后对任何形式都没什么印像,泛学的收效会很差。如果精学打牢了基础仍出现听、读时囫囵吞枣,注意不到任何形式的情况,多是选择材料时未按前面讲的标准,材料偏难所致。

    在扎实的基础上,听、读合适的材料时,我们会发现有些材料或某材料的某部分自己很喜欢。这时可以就这些喜欢的材料进行深度输入

    深度输入的读,就是反复读、体会、研究,至透彻理解程度。如果还想进一步,可以进行复述。透彻理解的材料,大脑肯定形成了该材料展现出的清晰的情景。复述时,边在大脑回放该情景边描述。

    深度输入的听,可以反复听直至听出每一个单词。如果还想进一步,可以进行听写、朗读。听写:一遍听写完后比较自己的听写和原文,划掉自己所写与原文不同的(包括标点符号),在旁边用红色笔写上原文,然后再听,特别留意红色字部分。朗读:先跟录音朗读至准确流畅程度,然后不听录音朗读至准确流畅程度。

    为什么输入这样操作呢?首先,整个输入过程我们感觉愉快。这样的情感体验是一种动力,促进我们继续学。其次,接触更多材料让我们获得新信息,扩大视野,同时体验到所学的用处。这也是进一步学习的动力。第三,已学形式得到巩固。将加工这些形式的速度维持在自动化程度,从而使我们能注意到需要学的新形式。第四,为下一步精学做铺垫。下一步需要学的一些新形式已经建立了一定程度的联系,包括形式和声音、意义、场合的联系。

    小结:选好材料后,怎样听、读

    ● 第一遍像听、读母语一样听、读,不标记新形式,不查词典。

    ● 多次碰到的新形式猜其意义,然后查词典比较。

    ● 感兴趣的材料重复听、读。

    ● 非常感兴趣的材料进行深度输入。

    (完)

    如果想看作者前面的文章,可直接点击下面的链接或进入作者主页。

    中级阶段外语学习▪发展(1)

    中级阶段外语学习▪基础(2)

    中级阶段外语学习▪基础(1)

    外语学习第二步:巩固联系至自动化

    外语学习第一步:建立三个联系

    要想学好外语,需尽量撇开母语中介

    学外语,学习对象系列四:语法

    学外语,学习对象系列三:搭配和固定式

    学外语,学习对象系列二:高频词

    学外语,学习对象系列一:名词