如果讓我談《如果在冬夜,一個旅人》
這本《如果在冬夜,一個旅人》(Se una notte d’inverno un viaggiatore(義) / If on a winter’s night a traveler(英))(1979)是我在 2018 年閱讀的第一本書。出自義大利名作家 伊塔羅·卡爾維諾(Italo Calvino)之手。
這本《如果在冬夜,一個旅人》(Se una notte d’inverno un viaggiatore(義) / If on a winter’s night a traveler(英))(1979)是我在 2018 年閱讀的第一本書。出自義大利名作家 伊塔羅·卡爾維諾(Italo Calvino)之手。
這陣子墮落至極,課也沒上,書也沒唸,有時一整天不睡覺,有時睡了一整天。恍惚之際,寫寫短文,祭悼過往的自己,壓印逝去的愛情記憶;清醒時,則倒一杯 Bourbon Whiskey,打打遊戲,讓自己恍惚一些。然而,我卻不甚明白自己究竟在做什麼。
昨天晚上,正當我在實驗室埋首於樂天購物網站的五折搶購時,老闆發訊息來了:「幫忙看一下,抓出來,打手槍打到死。」
原來是 Google 在老闆的網站上掛了一個「這個網站可能已遭入侵。」,不過老實說,我是第一次看到這個,身為一個二十年西瓜,不知道怎麼做,先點進去看看好了。
Google 直接告訴我們有哪些頁面被插入可疑的程式碼片段,看來是廣告垃圾,SEO Spam,透過我們的網站對別的網站做 SEO。
直接點開網頁原始碼,被插入 8 行左右,class都是qpr,直接塞在body第一行,而且插入了一段css把廣告連結塞到螢幕顯示範圍外。由於在原始碼顯示,所以應該可以排除從js塞進來的。
Jyny 建議先進到 wordpress 根目錄下 grep 尋找有沒有檔案被插入關鍵domain字串。
1 | grep -rnw ./ -e "valiumprice.com" |
只有找到快取有這串,於是先把快取清掉,之後就找不到了,看來不是直接藏在檔案內。
打開SQL,直接尋找wp_posts的content,也是沒有找到。
這時發生一件事情,我在插件中尋找線索的時候,網站突然 HTTP 500 了,我束手無策。讓 Tamama 和 Jyny 來救援,先找 nginx log 來看看,過程中也發現 server 中留有前一個網管的另一個網站,看來的確是有用這台主機跑其他服務XD
這時火文狼和 Danny 大大回來了,於是一群人在電腦前大顯身手,重設定 nginx 跟喝水一樣,嚇到我要哭出來了。重設之後找到拋出例外而使內部錯誤的插件,刪除後成功進入網站。並花了一點時間重整了網站版面。
半夜,經火文狼提點,在wordpress的header.php當中第16行被插入一段 php code,運行wordpress的function「get_option」
從資料庫抓資料來直接運行。這串「\x72\x65\x6e\x64\x65\x72」解碼後是「render」。
而這段code恰好插在body_class()被呼叫之後,看來應該就是了。
於是從資料庫尋找 option_name 為「render」的 option,的確有找到一個,而且內容是一串很長的base64。
Delete之後把被插入的php code拿掉,回到網頁就正常了。
網站原始碼的
底下沒有看到被插入的連結。感謝好友火文狼、Jyny、Tamma、Danny、Kid 們幫助我解決 500 問題,重新設定 nginx 並找到問題插件。還幫忙尋找此次的 SEO Spam 和其他問題。身為一個西瓜感激不盡。
今天看見朋友貼了一個入門的程式作業:「輸入 5 則輸出 12345 ,輸入 9 則輸出 123456789。」 大家第一個想到的解法應該是迴圈了,基本上也是用迴圈解會比較合適:
今天突然有點神經質,想寫一篇文章回味過去玩過的遊戲,在十到十五年前那樣資訊封閉的時代,相信大家對於「電子遊戲」應該都有共同回憶。
注:這篇文章將以我的觀點為主軸。而非介紹經典遊戲,你的經典不等於我的經典。