APP滲透—Android 7.0 抓包教程

??零基礎(chǔ)學(xué)黑客稿辙,搜索公眾號(hào):白帽子左一

另嚣崭,免費(fèi)領(lǐng)取黑客入門學(xué)習(xí)資料包及練手靶場(chǎng)肥缔!

用到的工具

Proxifier(可在內(nèi)網(wǎng)滲透上課件中找到)或:https://www.jb51.net/softs/527902.html

burpsuite(其他抓包工具亦可)

雷電模擬器4 (Android 7)https://www.ldmnq.com/?n=6000&bd_vid=7476744816742092625

抓包前的準(zhǔn)備

打開burp芒划,選擇Proxy逐沙,Options超埋,確保Proxy Listens下的監(jiān)聽端口與待會(huì)要設(shè)置的一致搏讶,并且處于勾選狀態(tài)

安裝Proxifier后打開,點(diǎn)擊配置文件霍殴,選擇代理服務(wù)器媒惕,點(diǎn)擊添加

確保設(shè)置的地址和端口與burpsuite的監(jiān)聽端口一致

4.點(diǎn)擊檢查,確崩赐ィ可以正常連接妒蔚,(注:如果沒開burp或者burp監(jiān)聽的地址不是127.0.0.1:8080或者改選項(xiàng)沒有勾選,那么會(huì)連接不超過)

配置不正確的話那么就會(huì)不成功

配置成功就是如下圖所示

(注:在進(jìn)行這一步之前你要確保你的電腦已經(jīng)安裝了burpsuite的證書并且可以正常抓取https的包)

在Proxifier中添加代理規(guī)則

配置文件 -> 代理規(guī)則 -> 添加

應(yīng)用程序選擇 dnplayer.exe;LdVBoxHeadless.exe;

dnplayer雷電模擬器啟動(dòng)程序和模擬器主程序

LdVBoxHeadless雷電模擬器對(duì)外網(wǎng)絡(luò)協(xié)議走的都是這個(gè)程序

動(dòng)作選擇剛才添加的代理服務(wù)器月弛。

PS:LdVBoxHeadless.exe不同的版本肴盏,名稱可能不一樣,如果不知道在哪帽衙,可以直接在任務(wù)管理器菜皂,找到名為VirtualBox Headless Frontend的進(jìn)程,右鍵打開文件所在的位置厉萝,即可找到

到這一步我們進(jìn)入模擬器恍飘,打開瀏覽器以后榨崩,就可以從Proxifier看到模擬器的流量,但是我們現(xiàn)在還抓不了https

解決抓取https問題:

不能抓取https的包肯定是沒多大意義的常侣。所以我們要來解決這個(gè)問題蜡饵,經(jīng)過查詢資料了解到安卓7.0以上后默認(rèn)不在信任用戶自行安裝的證書文件、如果需要抓包我們就要把自己的證書放到系統(tǒng)目錄下胳施、或者對(duì)app進(jìn)行修改從而進(jìn)行抓包溯祸。在這里我選擇安裝系統(tǒng)證書的方式進(jìn)行更加通用的方式進(jìn)行處理。

從瀏覽器導(dǎo)出burp證書

選擇Base64 編碼X.509(.CER)(S)

找個(gè)地方取個(gè)名字舞肆,保存

切換到模擬器焦辅,點(diǎn)擊更多,選擇共享文件椿胯,然后選擇打開電腦文件夾筷登,把剛才導(dǎo)入的證書拖進(jìn)去,這個(gè)證書就會(huì)出現(xiàn)在模擬器相應(yīng)的Pictures文件夾里

然后進(jìn)入模擬器哩盲,設(shè)置前方,安全,從SD卡安裝證書廉油,把剛才拖進(jìn)來的證書導(dǎo)入

第一次添加證書會(huì)要求設(shè)置密碼惠险,隨便設(shè)置一下就行了

然后回到桌面,打開文件管理器(記得開啟Root權(quán)限抒线,模擬器的右邊班巩,設(shè)置,其他設(shè)置嘶炭,Root權(quán)限抱慌,點(diǎn)擊開啟)

點(diǎn)擊左上角的三條杠,選擇根目錄(確保有超級(jí)用戶(Root)權(quán)限)

進(jìn)入:/data/misc/user/0/cacerts-added 這個(gè)文件夾下(該目錄存儲(chǔ)的是用戶自己安裝的證書文件)

給該.0文件左邊打上勾(文件名可能是不一樣的)

切換目錄到/etc/security/cacerts 下眨猎,點(diǎn)擊右上角三個(gè)點(diǎn)抑进,點(diǎn)擊粘貼選擇項(xiàng),就把證書復(fù)制到系統(tǒng)證書目錄了

現(xiàn)在可以開心地抓取模擬器的https的包了

雷電模擬器安裝Xposed

什么是Xposed

Xposed框架(Xposed Framework)是一套開源的睡陪、在Android高權(quán)限模式下運(yùn)行的框架服務(wù)单匣,可以在不修改APK文件的情況下影響程序運(yùn)行(修改系統(tǒng))的框架服務(wù),基于它可以制作出許多功能強(qiáng)大的模塊宝穗,且在功能不沖突的情況下同時(shí)運(yùn)作。

安裝Xposed流程

首先打開雷電游戲中心

搜索Xposed码秉,下載安裝

打開Xposed逮矛,查看系統(tǒng)信息

可以看到,系統(tǒng)是Android 7.1.2转砖,x86(32位)

下載相應(yīng)的Xposed包:https://dl-xda.xposed.info/framework/

選擇想用的版本须鼎,我比較喜歡用最新的鲸伴,所以我選擇sdk27

選擇與自己系統(tǒng)對(duì)應(yīng)的,我的是x86

最后下載.zip為后綴的文件

然后打開模擬器與電腦的共享文件夾晋控,把壓縮包解壓汞窗,并把文件夾重命名為system

再新建一個(gè)文件夾,重命名為xposed赡译,把剛才的system移動(dòng)到xposed文件夾中

再在xposed文件夾下新建一個(gè)flash-script.sh 文件仲吏,用記事本打開,把如下內(nèi)容復(fù)制進(jìn)去保存

##########################################################################################

#

# Xposed framework installer zip.

#

# This script installs the Xposed framework files to the system partition.

# The Xposed Installer app is needed as well to manage the installed modules.

#

##########################################################################################

grep_prop() {

? REGEX="s/^$1=//p"

? shift

? FILES=$@

? if [ -z "$FILES" ]; then

? ? FILES='/system/build.prop'

? fi

? cat $FILES 2>/dev/null | sed -n $REGEX | head -n 1

}

android_version() {

? case $1 in

? ? 15) echo '4.0 / SDK'$1;;

? ? 16) echo '4.1 / SDK'$1;;

? ? 17) echo '4.2 / SDK'$1;;

? ? 18) echo '4.3 / SDK'$1;;

? ? 19) echo '4.4 / SDK'$1;;

? ? 21) echo '5.0 / SDK'$1;;

? ? 22) echo '5.1 / SDK'$1;;

? ? 23) echo '6.0 / SDK'$1;;

? ? 24) echo '7.0 / SDK'$1;;

? ? 25) echo '7.1 / SDK'$1;;

? ? 26) echo '8.0 / SDK'$1;;

? ? 27) echo '8.1 / SDK'$1;;

? ? *)? echo 'SDK'$1;;

? esac

}

cp_perm() {

? cp -f $1 $2 || exit 1

? set_perm $2 $3 $4 $5 $6

}

set_perm() {

? chown $2:$3 $1 || exit 1

? chmod $4 $1 || exit 1

? if [ "$5" ]; then

? ? chcon $5 $1 2>/dev/null

? else

? ? chcon 'u:object_r:system_file:s0' $1 2>/dev/null

? fi

}

install_nobackup() {

? cp_perm ./$1 $1 $2 $3 $4 $5

}

install_and_link() {

? TARGET=$1

? XPOSED="${1}_xposed"

? BACKUP="${1}_original"

? if [ ! -f ./$XPOSED ]; then

? ? return

? fi

? cp_perm ./$XPOSED $XPOSED $2 $3 $4 $5

? if [ ! -f $BACKUP ]; then

? ? mv $TARGET $BACKUP || exit 1

? ? ln -s $XPOSED $TARGET || exit 1

? ? chcon -h 'u:object_r:system_file:s0' $TARGET 2>/dev/null

? fi

}

install_overwrite() {

? TARGET=$1

? if [ ! -f ./$TARGET ]; then

? ? return

? fi

? BACKUP="${1}.orig"

? NO_ORIG="${1}.no_orig"

? if [ ! -f $TARGET ]; then

? ? touch $NO_ORIG || exit 1

? ? set_perm $NO_ORIG 0 0 600

? elif [ -f $BACKUP ]; then

? ? rm -f $TARGET

? ? gzip $BACKUP || exit 1

? ? set_perm "${BACKUP}.gz" 0 0 600

? elif [ ! -f "${BACKUP}.gz" -a ! -f $NO_ORIG ]; then

? ? mv $TARGET $BACKUP || exit 1

? ? gzip $BACKUP || exit 1

? ? set_perm "${BACKUP}.gz" 0 0 600

? fi

? cp_perm ./$TARGET $TARGET $2 $3 $4 $5

}

##########################################################################################

echo "******************************"

echo "Xposed framework installer zip"

echo "******************************"

if [ ! -f "system/xposed.prop" ]; then

? echo "! Failed: Extracted file system/xposed.prop not found!"

? exit 1

fi

echo "- Mounting /system and /vendor read-write"

mount /system >/dev/null 2>&1

mount /vendor >/dev/null 2>&1

mount -o remount,rw /system

mount -o remount,rw /vendor >/dev/null 2>&1

if [ ! -f '/system/build.prop' ]; then

? echo "! Failed: /system could not be mounted!"

? exit 1

fi

echo "- Checking environment"

API=$(grep_prop ro.build.version.sdk)

APINAME=$(android_version $API)

ABI=$(grep_prop ro.product.cpu.abi | cut -c-3)

ABI2=$(grep_prop ro.product.cpu.abi2 | cut -c-3)

ABILONG=$(grep_prop ro.product.cpu.abi)

XVERSION=$(grep_prop version system/xposed.prop)

XARCH=$(grep_prop arch system/xposed.prop)

XMINSDK=$(grep_prop minsdk system/xposed.prop)

XMAXSDK=$(grep_prop maxsdk system/xposed.prop)

XEXPECTEDSDK=$(android_version $XMINSDK)

if [ "$XMINSDK" != "$XMAXSDK" ]; then

? XEXPECTEDSDK=$XEXPECTEDSDK' - '$(android_version $XMAXSDK)

fi

ARCH=arm

IS64BIT=

if [ "$ABI" = "x86" ]; then ARCH=x86; fi;

if [ "$ABI2" = "x86" ]; then ARCH=x86; fi;

if [ "$API" -ge "21" ]; then

? if [ "$ABILONG" = "arm64-v8a" ]; then ARCH=arm64; IS64BIT=1; fi;

? if [ "$ABILONG" = "x86_64" ]; then ARCH=x64; IS64BIT=1; fi;

fi

# echo "DBG [$API] [$ABI] [$ABI2] [$ABILONG] [$ARCH] [$XARCH] [$XMINSDK] [$XMAXSDK] [$XVERSION]"

echo "? Xposed version: $XVERSION"

XVALID=

if [ "$ARCH" = "$XARCH" ]; then

? if [ "$API" -ge "$XMINSDK" ]; then

? ? if [ "$API" -le "$XMAXSDK" ]; then

? ? ? XVALID=1

? ? else

? ? ? echo "! Wrong Android version: $APINAME"

? ? ? echo "! This file is for: $XEXPECTEDSDK"

? ? fi

? else

? ? echo "! Wrong Android version: $APINAME"

? ? echo "! This file is for: $XEXPECTEDSDK"

? fi

else

? echo "! Wrong platform: $ARCH"

? echo "! This file is for: $XARCH"

fi

if [ -z $XVALID ]; then

? echo "! Please download the correct package"

? echo "! for your platform/ROM!"

? exit 1

fi

echo "- Placing files"

install_nobackup /system/xposed.prop? ? ? ? ? ? ? ? ? ? ? 0? ? 0 0644

install_nobackup /system/framework/XposedBridge.jar? ? ? 0? ? 0 0644

install_and_link? /system/bin/app_process32? ? ? ? ? ? ? 0 2000 0755 u:object_r:zygote_exec:s0

install_overwrite /system/bin/dex2oat? ? ? ? ? ? ? ? ? ? 0 2000 0755 u:object_r:dex2oat_exec:s0

install_overwrite /system/bin/oatdump? ? ? ? ? ? ? ? ? ? 0 2000 0755

install_overwrite /system/bin/patchoat? ? ? ? ? ? ? ? ? ? 0 2000 0755 u:object_r:dex2oat_exec:s0

install_overwrite /system/lib/libart.so? ? ? ? ? ? ? ? ? 0? ? 0 0644

install_overwrite /system/lib/libart-compiler.so? ? ? ? ? 0? ? 0 0644

install_overwrite /system/lib/libart-disassembler.so? ? ? 0? ? 0 0644

install_overwrite /system/lib/libsigchain.so? ? ? ? ? ? ? 0? ? 0 0644

install_nobackup? /system/lib/libxposed_art.so? ? ? ? ? ? 0? ? 0 0644

if [ $IS64BIT ]; then

? install_and_link? /system/bin/app_process64? ? ? ? ? ? 0 2000 0755 u:object_r:zygote_exec:s0

? install_overwrite /system/lib64/libart.so? ? ? ? ? ? ? 0? ? 0 0644

? install_overwrite /system/lib64/libart-compiler.so? ? ? 0? ? 0 0644

? install_overwrite /system/lib64/libart-disassembler.so? 0? ? 0 0644

? install_overwrite /system/lib64/libsigchain.so? ? ? ? ? 0? ? 0 0644

? install_nobackup? /system/lib64/libxposed_art.so? ? ? ? 0? ? 0 0644

fi

if [ "$API" -ge "25" ]; then

? find /system /vendor -type f -name '*.odex.gz' 2>/dev/null | while read f; do mv "$f" "$f.xposed"; done

fi

echo "- Done"

exit 0

把xposed文件夾復(fù)制到根目錄的system文件夾下(需要有root權(quán)限)

安裝一個(gè)終端模擬器(這個(gè)百度一堆蝌焚,我就隨便下了一個(gè)裹唆,能執(zhí)行命令就行)

輸入su,回車只洒,獲取root權(quán)限

cd /system/xposed 切換到xposed文件夾许帐,輸入sh flash-script.sh

然后就安裝成功啦!

重啟模擬器毕谴,打開Xposed Installer成畦,發(fā)現(xiàn)安裝成功

然后就可以去安裝JustTrustMe、SSLUnpinning等插件了

雙向認(rèn)證

什么是雙向認(rèn)證

雙向認(rèn)證涝开,服務(wù)端會(huì)校驗(yàn)客戶端(也就是我們的app)的證書循帐;客戶端也會(huì)校驗(yàn)服務(wù)端的證書,先來看看這篇文章的資料忠寻。SSL/TLS 雙向認(rèn)證(一) — SSL/TLS工作原理_網(wǎng)絡(luò)_ustccw-CSDN博客惧浴,看完這篇文章就可以了解到,對(duì)于雙向證書校驗(yàn)要破解有:

證書密碼

cer或者p12證書

雙向認(rèn)證抓包有兩種解決方法:

一是:按照搞定證書的思路去想的話奕剃,就是要想辦法拿到真正的證書衷旅。

二是:Hook SSL 對(duì)數(shù)據(jù)解密數(shù)據(jù)的地方。

方法一:

因?yàn)?APP 能正常跟服務(wù)端通信纵朋,所以真正的證書肯定是在 APP 里面柿顶。所以就是要想辦法從 APP 里摳出證書。摳證書有開源的 Frida Hook 腳本操软。如下地址是開源作者寫的 Frida Hook 腳本 https://gist.github.com/ceres- c/cb3b69e53713d5ad9cf6aac9b8e895d2gfgg

可以把證書從內(nèi)存里讀出來保存到本地嘁锯,并且證書密碼也能讀出來,非常的方便聂薪。 該腳本的原理是: 因?yàn)?APP 在向服務(wù)端發(fā)請(qǐng)求時(shí)家乘, APP 肯定會(huì)操作證書,所以如果能找到 APP 操作證書的代碼地方藏澳, Hook 這部分代碼赌结,對(duì)參數(shù)做些輸出打印颈嚼,證書和證書密碼就都有了畅厢。 大部分情況下,我們不用非常熟悉安卓原理野芒,比如安卓在代碼層面是如何操作證書的(當(dāng)然熟悉更好)。因?yàn)橘Y訊發(fā)達(dá)双炕,一般靈活借助搜索引擎狞悲,靈活查閱資料,可以大體知道這些妇斤,就可以嘗試去寫 Hook 腳本去嘗試看看摇锋。 查閱資料可以知道,安卓操作證書通常是 java.security.KeyStore 這個(gè)類趟济,然后再了解下這個(gè)類的用法乱投,參數(shù)形式。就可以嘗試去 Hook 了顷编。上述腳本就是 Hook? java.security.KeyStore 這個(gè)類的 load 方法戚炫,load 方法的形參就是我們需要的證書和密碼。 摳出的證書和密碼媳纬,配置進(jìn) fiddler 或 charles 里面双肤,就可以抓到雙向認(rèn)證的包。 PS: 還要注意證書的格式钮惠,摳出的證書可能是 jks 或 bks 格式的茅糜,fiddler 可能需要 p12 格式的, 所以要找工具先轉(zhuǎn)換一下格式素挽。

方法二:

如果只是想抓包蔑赘,還有另一種方法,不需要摳證書的方法预明。雖然 https 在傳輸過程中是加密的缩赛,但在終端顯示的時(shí)候,必然會(huì)解密撰糠,不然 APP 上都沒法顯示了酥馍。所以如果能知道安卓解密 SSL? 加解密是哪個(gè)類, Hook 這個(gè)類阅酪, 類里相關(guān)方法的輸入輸出肯定就是傳輸?shù)拿魑臄?shù)據(jù)旨袒。 所以可以查閱資料,看看相關(guān)類的用法术辐,就可以嘗試去 Hook 打印輸出看看情況砚尽。也有開源作者開源了該 Hook 腳本, 比如 5alt 老板在google開源的腳本基礎(chǔ)上做了修改了的 ssl_logger 辉词。 https://github.com/5alt/ssl_logger

能夠 Hook SSL 加解密的地方尉辑,它會(huì)把傳輸?shù)臄?shù)據(jù)保存為 pcap 格式。再使用 wireshark 打開該 pcap文件较屿, 在 wireshark 上就可以看到明文的數(shù)據(jù)了隧魄。 如果要模擬向服務(wù)器發(fā)送請(qǐng)求的話,還是只能使用第一種方法隘蝎,因?yàn)榭头吮仨氁峤徽_的證書购啄,服務(wù)端才會(huì)正確響應(yīng)。必須得摳出證書嘱么,模擬請(qǐng)求時(shí)必須帶上證書狮含,才能請(qǐng)求到數(shù)據(jù)。安卓上的證書好多是 jks/bks格式的曼振, 如果使用 Python requests 庫(kù)的話几迄, 不支持這個(gè)格式, 所以要想辦法把證書轉(zhuǎn)成 cert 格式的冰评。

上面兩種方法都是使用 Frida 進(jìn)行 Hook 映胁,所以要有 Root 過的手機(jī)和明白Frida 怎么使用就能搞定。 對(duì)于爬蟲來說甲雅,搞定抓包和請(qǐng)求參數(shù)加密的問題解孙,大部分 Hook ,都可以通過 Hook 安卓系統(tǒng) API 來找到 APP 代碼位置抛人,或直接搞定弛姜。其實(shí)很少人能很熟悉安卓系統(tǒng)的各種原理,大部分時(shí)候能靈活通過各種關(guān)鍵字能查到相關(guān)原理的講解文獻(xiàn)妖枚,文獻(xiàn)里講的 API 靈活點(diǎn)拿去 Hook 康康線索廷臼,就能搞定很多拉。 其實(shí)使用雙向認(rèn)證的 APP 還是少數(shù)绝页, 對(duì)服務(wù)器性能多少有影響荠商。

某APP雙向認(rèn)證突破

因?yàn)閍pp沒有進(jìn)行加固,可以直接用jadx反編譯出來抒寂,然后全局搜索”.cer”结啼、”.crt”、”.pfx”屈芜、”PKCS12”郊愧、”keyStore”等等關(guān)鍵字。

jadx下載地址:https://github.com/skylot/jadx/releases/tag/v1.2.0

轉(zhuǎn)到代碼位置查看詳情(證書安裝密碼井佑、其他密碼等等信息)属铁,可以看到,pfx證書沒有設(shè)置密碼(本地測(cè)試安裝了下躬翁,看到有需要輸入密碼焦蘑,第一次嘗試過輸入密碼,結(jié)果提示密碼錯(cuò)誤盒发,第二次嘗試不輸入密碼卻安裝成功了例嘱,于是開啟了全局搜索之旅狡逢,看到?jīng)]有設(shè)置證書安裝密碼):

使用akptool將APP拆開,apktool下載地址:https://bitbucket.org/iBotPeaches/apktool/downloads/

進(jìn)入apktool生成的目錄拼卵,可以搜索一些證書的后綴文件奢浑,例如cer/p12/pfx等,一般安卓下的為bks腋腮,也可以先去assets或者res目錄下去找找雀彼。我碰到的apk就在assets目錄下存放:

本來以為還得在文件夾里面繼續(xù)找key,找了一圈無果即寡,后來知道這里可以直接把key導(dǎo)出來

openssl pkcs12 –in client.pfx –nocerts –nodes –out client.key

這里需要注意的是徊哑,導(dǎo)出key的時(shí)候需要輸入密碼,也就是這個(gè)地方(如下圖)

因?yàn)槲疫@里是沒有設(shè)置密碼的聪富,所以不用輸入莺丑,直接回車導(dǎo)出;如果設(shè)置了證書密碼善涨,這里需要輸入證書密碼才能把key導(dǎo)出來窒盐。

有了key剩下的就好辦了,將crt證書和key文件合并成“.p12”證書文件钢拧,合并的時(shí)候記得對(duì)證書進(jìn)行加密(也就是加個(gè)證書密碼)蟹漓,不加密碼burpsuite是無法導(dǎo)入的。

合并證書命令:openssl pkcs12 -export -inkey client.key -in client.crt -out client.p12

將證書導(dǎo)入到burpsuite:

然后就可以成功導(dǎo)入證書源内,并且啟用

最后就可以開始抓包了葡粒,抓包前最好是把模擬器關(guān)閉再重新打開

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市膜钓,隨后出現(xiàn)的幾起案子嗽交,更是在濱河造成了極大的恐慌,老刑警劉巖颂斜,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夫壁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沃疮,警方通過查閱死者的電腦和手機(jī)盒让,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來司蔬,“玉大人邑茄,你說我怎么就攤上這事】√洌” “怎么了肺缕?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我同木,道長(zhǎng)浮梢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任泉手,我火速辦了婚禮黔寇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘斩萌。我一直安慰自己,他們只是感情好屏轰,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布颊郎。 她就那樣靜靜地躺著,像睡著了一般霎苗。 火紅的嫁衣襯著肌膚如雪姆吭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天唁盏,我揣著相機(jī)與錄音内狸,去河邊找鬼。 笑死厘擂,一個(gè)胖子當(dāng)著我的面吹牛昆淡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刽严,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼昂灵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了舞萄?” 一聲冷哼從身側(cè)響起眨补,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎倒脓,沒想到半個(gè)月后撑螺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡崎弃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年甘晤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吊履。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡安皱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出艇炎,到底是詐尸還是另有隱情酌伊,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站居砖,受9級(jí)特大地震影響虹脯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奏候,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一循集、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔗草,春花似錦咒彤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至模叙,卻和暖如春歇拆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背范咨。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工故觅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人渠啊。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓输吏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親昭抒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子评也,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容