CTF中常見的編碼,代碼混淆及加、解密

其實(shí)剛開始我對(duì)編碼與加密的概念區(qū)分的不是非常清楚,一度以為加密就是對(duì)信息進(jìn)行編碼,這是一種錯(cuò)誤的觀點(diǎn)。編碼是將數(shù)據(jù)信息轉(zhuǎn)化成一種固定格式的編碼信息,而加密是為了保證信息傳輸?shù)陌踩裕瑑烧哌€是有區(qū)別的。接下來就給大家講講編碼與加密、解密。

一,編碼

編碼是為了方便不同系統(tǒng)間的信息傳輸,將數(shù)據(jù)轉(zhuǎn)化成固定格式的信息,通過編碼可以得到原始信息。常見的編碼我們都已經(jīng)很熟悉了,比如ASCII編碼、URL編碼、HTML實(shí)體編碼以及Base編碼等。

1,ASCII編碼

ASCII編碼大致可以分作三部分組成:

第一部分是:ASCII非打印控制字符(參詳ASCII碼表中0-31);

第二部分是:ASCII打印字符,也就是CTF中常用到的轉(zhuǎn)換;

第三部分是:擴(kuò)展ASCII打印字符(詳見 ASCII碼表 二)。

例:easy—101 97 115 121

(ASCII表——來自百度百科)

(ASCII碼表 二)

2,URL編碼

又叫百分號(hào)編碼,是統(tǒng)一資源定位編碼方式。URL 地址(常說網(wǎng)址) 規(guī)定了常用地?cái)?shù)字,字母可以直接使用,另外一批作為特殊用戶字符也可以直接用(/,:@等),剩下的其它所有字符必須通過%xx 編碼處理。編碼方法很簡(jiǎn)單,在該字節(jié) ascii 碼的的 16 進(jìn)制字符前面加%. 如空格字符,ascii 碼是 32,對(duì)應(yīng)16 進(jìn)制是’20′,那么 urlencode 編碼結(jié)果是:%20。

例:https://baike.baidu.com/item/ABC

URL轉(zhuǎn)碼: %68%74%74%70%73%3A%2F%2F%62%61%69%6B%65%2E%62%61%69%64%75%2E%63%6F%6D%2F%69%74%65%6D%2F%41%42%43

3,HTML實(shí)體編碼

一些字符在 HTML 中是預(yù)留的,擁有特殊的含義,比如小于號(hào)‘<’用于定義 HTML 標(biāo)簽的開始。如果我們希望瀏覽器正確地顯示這些字符,我們必須在 HTML 源碼中插入字符實(shí)體。用一個(gè)編號(hào)寫入HTML代碼中來代替一個(gè)字符,在使用瀏覽器訪問網(wǎng)頁時(shí)會(huì)將這個(gè)編號(hào)解析還原為字符以供閱讀。

(來自http://www.w3school.com.cn/html/html_entities.asp

例:easy——easy

4,Base編碼

Base家族主要有Base16、Base32、Base64。Base64由大小寫字母和數(shù)字,+/組成(=號(hào)用作填充字符),Base32則是只有大寫字母和234567。其中Base64/32是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)代碼的編碼方式之一。Base64編碼是從二進(jìn)制到字符的過程,可用于在HTTP環(huán)境下傳遞較長(zhǎng)的標(biāo)識(shí)信息。例如,在Java Persistence系統(tǒng)Hibernate中,就采用了Base64來將一個(gè)較長(zhǎng)的唯一標(biāo)識(shí)符(一般為128-bit的UUID)編碼為一個(gè)字符串,用作HTTP表單和HTTP GET URL中的參數(shù)。Base64編碼保證了二進(jìn)制數(shù)據(jù)的安全。

例:Base64:easy—ZWFzeQ==

(Base64的代碼實(shí)現(xiàn):https://baike.baidu.com/item/base64/8545775)

5、Unicode編碼

Unicode編碼有以下四種編碼方式:

源文本:The

&#x [Hex]:The

&# [Decimal]:The

\U [Hex]:\U0054\U0068\U0065

\U+ [Hex]:\U+0054\U+0068\U+0065

6、莫爾斯電碼(Morse Code)

摩爾斯電碼(又譯為摩斯密碼,Morse code)是一種時(shí)通時(shí)斷的信號(hào)代碼,通過不同的排列順序來表達(dá)不同的英文字母、數(shù)字和標(biāo)點(diǎn)符號(hào)。是早期的數(shù)字化通信形式,但是它不同于現(xiàn)代只使用零和一兩種狀態(tài)的二進(jìn)制代碼,它的代碼包括五種:點(diǎn)、劃、點(diǎn)和劃之間的停頓、每個(gè)字符之間短的停頓、每個(gè)詞之間中等的停頓以及句子之間長(zhǎng)的停頓。

除此之外,常用的編碼方式還有敲擊碼(Tap code)等。編碼在電子計(jì)算機(jī)、電視、遙控和通訊等方面廣泛使用。編碼是信息從一種形式或格式轉(zhuǎn)換為另一種形式的過程;解碼,是編碼的逆過程。

二、常見的代碼混淆

代碼混淆(Obfuscated code)亦稱花指令,是將計(jì)算機(jī)程序的代碼,轉(zhuǎn)換成一種功能上等價(jià),但是難于閱讀和理解的形式的行為。代碼混淆可以用于程序源代碼,也可以用于程序編譯而成的中間代碼。執(zhí)行代碼混淆的程序被稱作代碼混淆器。目前已經(jīng)存在許多種功能各異的代碼混淆器。常用的代碼混淆有jsfuck、brainfuck,Vbscript.encode加密等

1、Jsfuck

jsfuck源于一門編程語言brainfuck,其主要的思想就是只使用8種特定的符號(hào)來編寫代碼。而jsfuck也是沿用了這個(gè)思想,它可以讓你只用 6 個(gè)字符`[ ]( ) ! + `來編寫 JavaScript 程序。此外,JSFuck可用于繞過惡意代碼檢測(cè),且可以被用于跨站腳本攻擊。因?yàn)槿狈υ鶭avaScript應(yīng)有的特征,類似JSFuck的JavaScript混淆技術(shù)可幫助惡意代碼繞過入侵防御系統(tǒng)或內(nèi)容過濾器。現(xiàn)實(shí)中,因?yàn)镴SFuck中缺少字母數(shù)字字符,且eBay中的內(nèi)容過濾器曾存在缺陷,使得賣家曾經(jīng)可以在他們的eBay拍賣頁面中嵌入任意JSFuck腳本

例:http://utf-8.jp/public/jsfuck.html

2、Brainfuck

Brainfuck是一種極小化的計(jì)算機(jī)語言,目標(biāo)是建立一種簡(jiǎn)單的、可以用最小的編譯器來實(shí)現(xiàn)的、符合圖靈完全思想的編程語言。BrainFuck 語言只有八種符號(hào),所有的操作都由這八種符號(hào)(` > < + – . , [ ] `)的組合來完成。

例:hello world

+++++ +++++ [->++ +++++ +++<] >++++ .—. +++++ ++..+ ++.

<+ +++++ ++[->----- ---<] >—- —– —– -.<++ +++++ ++[-> ++

+++ ++++< ]>+++ +++.—— –.++ +.— —.- —– –.<

在線解密工具:?https://www.splitbrain.org/services/ook

3、Vbscript.encode加密

VBScript.encode是針對(duì)asp代碼進(jìn)行的一種加密混淆操作。

樣題:?http://ctf5.shiyanbar.com:8080/aspencode/

在線工具:http://adophper.com/encode.html

4、Jjencode

jjencode 將 JS 代碼轉(zhuǎn)換成只有符號(hào)的字符串,類似于 rrencode,介紹的,aaencode 可以將 JS 代碼轉(zhuǎn)換成常用的網(wǎng)絡(luò)表情,也就是我們說的顏文字 js 加密。

例:?http://utf-8.jp/public/aaencode.html

三、加密

密碼學(xué)是研究編制密碼和破譯密碼的技術(shù)科學(xué)。研究密碼變化的客觀規(guī)律,應(yīng)用于編制密碼以保守通信秘密的,稱為編碼學(xué);應(yīng)用于破譯密碼以獲取通信情報(bào)的,稱為破譯學(xué),總稱密碼學(xué)。主要分為古典加密算法和現(xiàn)代密碼學(xué)。

1,古典加密算法

古典密碼算法曾經(jīng)被廣泛應(yīng)用,大都比較簡(jiǎn)單,使用手工和機(jī)械操作來實(shí)現(xiàn)加密和解密。它的主要對(duì)象是文字信息,利用密碼算法實(shí)現(xiàn)文字信息的加密和解密。古典密碼編碼方法歸根結(jié)底主要有兩種,即置換和代換。比較經(jīng)典的有凱撒密碼、柵欄密碼、培根密碼、仿射密碼和維吉尼亞密碼等。

(1)凱撒密碼

是一種最簡(jiǎn)單且最廣為人知的加密技術(shù)。它是一種替換加密的技術(shù),明文中的所有字母按照按順序進(jìn)行 n 個(gè)字符錯(cuò)位轉(zhuǎn)換后被替換成密文。

例:ABCDE(偏移量為3)—DEFGH

(2)柵欄密碼

把要加密的明文分成N個(gè)一組,然后把每組的第1個(gè)字連起來,形成一段無規(guī)律的話即為柵欄密碼。

例:明 文:The quick brown fox jumps over the lazy dog

去空格:Thequickbrownfoxjumpsoverthelazydog

分 組:Th eq ui ck br ow nf ox ju mp so ve rt he la zy do g

密 文:Teucbonojmsvrhlzdghqikrwfxupoeteayo

(3)培根密碼

又名倍康尼密碼(英語:Bacon’s cipher)是由法蘭西斯·培根發(fā)明的一種隱寫術(shù)。是一種替換密碼,每個(gè)明文字母被一個(gè)由5字符組成的序列替換。最初的加密方式就是由‘A’和’B'組成序列替換明文

例:明文:THE DOG

密文:baabb aabbb aabaa aaabb abbba aabba

(4)仿射密碼

仿射密碼(Affine Cipher)是一種單表代換密碼,字母表中的每個(gè)字母相應(yīng)的值使用一個(gè)簡(jiǎn)單的數(shù)學(xué)函數(shù)映射到對(duì)應(yīng)的數(shù)值,再把對(duì)應(yīng)數(shù)值轉(zhuǎn)換成字母。每一個(gè)字母都是通過函數(shù)(ax + b)mod m加密,其中B是位移量,為了保證仿射密碼的可逆性,a和m需要滿足gcd(a , m)=1,一般m為設(shè)置為26。

(5)維吉尼亞密碼

維吉尼亞密碼(又譯維熱納爾密碼)是使用一系列凱撒密碼組成密碼字母表的加密算法,屬于多表密碼的一種簡(jiǎn)單形式。以其簡(jiǎn)單易用而著稱,同時(shí)初學(xué)者通常難以破解,因而又被稱為“不可破譯的密碼”。這也讓很多人使用維吉尼亞密碼來加密的目的就是為了將其破解。

例:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

密鑰(循環(huán)使用,密鑰越長(zhǎng)相對(duì)破解難度越大):CULTURE

加密過程:如果第一行為明文字母,第一列為密鑰字母,那么明文字母’T'列和密鑰字母’C'行的交點(diǎn)就是密文字母’V',以此類推。

密文:VBP JOZGM VCHQE JQR UNGGW QPPK NYI NUKR XFK

解密網(wǎng)站:https://www.qqxiuzi.cn/bianma/weijiniyamima.php

2,現(xiàn)代密碼學(xué)

現(xiàn)代密碼學(xué)研究信息從發(fā)端到收端的安全傳輸和安全存儲(chǔ),核心是密碼編碼學(xué)和密碼分析學(xué)。1949年香農(nóng)發(fā)表《保密系統(tǒng)的通信理論》標(biāo)志著現(xiàn)代密碼學(xué)的真正開始(第一次質(zhì)的飛躍)。1976年,Diffie和Hellman發(fā)表《密碼學(xué)的新方向》,標(biāo)志著公鑰密碼體制的誕生(第二次質(zhì)的飛躍)。

現(xiàn)代密碼學(xué)根據(jù)功能分為三類:

①、對(duì)稱加密算法:DES,AES,RC4等。

②、公鑰密碼算法:RSA等

③、HASH函數(shù):md5,sha1

(1),對(duì)稱加密算法

在對(duì)稱加密算法中,數(shù)據(jù)發(fā)信方將原始數(shù)據(jù)和加密密鑰一起經(jīng)過特殊加密算法處理后,使其變成復(fù)雜的加密密文發(fā)送出去,收信方需要使用加密用過的密鑰及相同算法的逆算法對(duì)密文進(jìn)行解密,才能使其恢復(fù)成可讀明文。在大多數(shù)的對(duì)稱算法中,加密密鑰和解密密鑰是相同的,所以也稱這種加密算法為秘密密鑰算法或單密鑰算法。它要求發(fā)送方和接收方在安全通信之前,商定一個(gè)密鑰。對(duì)稱算法的安全性依賴于密鑰,泄漏密鑰就意味著任何人都可以對(duì)他們發(fā)送或接收的消息解密,所以密鑰的保密性對(duì)通信的安全性至關(guān)重要。特點(diǎn)是算法公開、計(jì)算量小、加密速度快、加密效率高。

對(duì)稱加密的分類:流加密與分組加密

* 流加密每次加密數(shù)據(jù)流的一位(bit)或者一個(gè)字節(jié)(byte)。如RC4。

* 分組加密(通常也成為塊加密)是將明文進(jìn)行分組,加密算法對(duì)每個(gè)分組分別加密,通常明文分組和加密后得到的密文分組等長(zhǎng)。典型的分組大小是64bit或128bit。如DES,3DES,AES。

(2),HASH算法

可直接音譯為“哈希”,一般翻譯為“散列”把任意長(zhǎng)度的輸入(又叫做預(yù)映射, pre-image),通過散列算法變換成固定長(zhǎng)度的輸出,該輸出就是散列值。它是基于快速存取的角度設(shè)計(jì)的,也是一種典型的“空間換時(shí)間”的做法。顧名思義,該數(shù)據(jù)結(jié)構(gòu)可以理解為一個(gè)線性表,但是其中的元素不是緊密排列的,而是可能存在空隙。

常見HASH算法主要有MD5、SHA-1等。主要用于文件校驗(yàn),數(shù)字簽名,鑒權(quán)協(xié)議。另外這里還有一篇利用Hash碰撞而產(chǎn)生DOS攻擊的案例,有興趣的可以閱讀一下:http://www.cnblogs.com/rush/archive/2012/02/05/2339037.html

(其實(shí)把hash算法當(dāng)成是一種加密算法,這是不準(zhǔn)確的,我們知道加密總是相對(duì)于解密而言的,沒有解密何談加密呢,HASH的設(shè)計(jì)以無法解為目的的。并且如果我們不附加一個(gè)隨機(jī)的salt值,HASH口令是很容易被字典攻擊入侵的)

(3),RSA算法

RSA加密算法是一種非對(duì)稱加密算法。在公開密鑰加密和電子商業(yè)中RSA被廣泛使用,是現(xiàn)今使用最廣泛的公鑰密碼算法。和其它加密過程一樣,對(duì)RSA來說分配公鑰的過程是非常重要的。分配公鑰的過程必須能夠抵擋中間人攻擊。假設(shè)Eve交給Bob一個(gè)公鑰,并使Bob相信這是Alice的公鑰,并且她可以截下Alice和Bob之間的信息傳遞,那么她可以將她自己的公鑰傳給Bob,Bob以為這是Alice的公鑰。Eve可以將所有Bob傳遞給Alice的消息截下來,將這個(gè)消息用她自己的密鑰解密,讀這個(gè)消息,然后將這個(gè)消息再用Alice的公鑰加密后傳給Alice。理論上Alice和Bob都不會(huì)發(fā)現(xiàn)Eve在偷聽他們的消息。今天人們一般用可靠的第三方機(jī)構(gòu)簽發(fā)證書來防止這樣的攻擊。根據(jù)密鑰的使用方法,可以將密碼分為對(duì)稱密碼和公鑰密碼。

對(duì)稱密碼:加密和解密使用同一種密鑰的方式

公鑰密碼:加密和解密使用不同的密碼的方式,因此公鑰密碼通常也稱為非對(duì)稱密碼。

RSA的加密過程可以使用一個(gè)通式來表達(dá)

密文=明文^E mod N

也就是說RSA加密是對(duì)明文的E次方后除以N后求余數(shù)的過程。

從通式可知,只要知道E和N任何人都可以進(jìn)行RSA加密了,所以說E、N是RSA加密的密鑰,即E和N的組合就是公鑰,用(E,N)來表示公鑰。

RSA的解密同樣可以使用一個(gè)通式來表達(dá)

明文=密文^D mod N

即對(duì)密文進(jìn)行D次方后除以N的余數(shù)就是明文,所以D和N的組合就是私鑰,私鑰=(D,N)

RSA常見攻擊方式

①、利用rsa加密流程求參數(shù)

②、分解N求私鑰

? 如果n的大小小于256bit,那么我們通過本地工具即可爆破成功。

? 如果n在768bit或者更高,可以嘗試使用一些在線的n分解網(wǎng)站,這些網(wǎng)站會(huì)存儲(chǔ)一些已經(jīng)分解成功的n,比如:http://factordb.com

? 如果有多個(gè)n,可以嘗試用求公約數(shù)的方式來求解兩個(gè)N共同的素因子p,進(jìn)而求解q

? 在p,q的取值差異過大,或者p,q的取值過于相近的時(shí)候,F(xiàn)ormat方法與Pollard rho方法都可以很快將n分解成功。此類分解方法有一個(gè)開源項(xiàng)目yafu將其自動(dòng)化實(shí)現(xiàn)了,不論n的大小,只要p和q存在相差過大或者過近時(shí),都可以通過yafu很快地分解成功。

③、共模攻擊

如果在RSA的使用中使用了相同的模n對(duì)相同的明文m進(jìn)行了加密,那么就可以在不分解n的情況下還原出明文m的值。

http://www.bystudent.com/?p=236?

密碼學(xué)在信息技術(shù)高速發(fā)展的當(dāng)代具有很重要的意義,發(fā)展范圍廣且深。本文在寫作過程中參考了許多資料,在此一并表示感謝。同時(shí)對(duì)于文章中涉及的知識(shí)只是粗略地簡(jiǎn)要介紹,如有不當(dāng)之處還請(qǐng)指正。網(wǎng)上對(duì)密碼學(xué)還有很多的資料,大家有興趣的可以看一下。此外,文章中提到的各種解碼及解密方式都可在這個(gè)網(wǎng)站中找到相應(yīng)的工具(http://ctf.ssleye.com/

**** 以下列出對(duì)于密碼學(xué)學(xué)習(xí)很有幫助的參考資料 ****

密碼學(xué) – 維基百科,自由的百科全書

https://zh.wikipedia.org/zh-my/%E5%AF%86%E7%A0%81%E5%AD%A6

CTF中那些腦洞大開的編碼和加密 – DaBan – 博客園

https://www.cnblogs.com/daban/p/5680451.html

代碼混淆的重要性

https://www.jdon.com/50072

密碼學(xué)起源——由「凱撒加密」到「一次一密」

https://baijiahao.baidu.com/s?id=1621013260155177917&wfr=spider&for=pc

《現(xiàn)代密碼學(xué)》 – WittPeng – 博客園

https://www.cnblogs.com/WittPeng/p/8978737.html

http://archive.keyllo.com/L-編程/Code-現(xiàn)代密碼學(xué)—原理與協(xié)議.pdf

http://archive.keyllo.com/L-%E7%BC%96%E7%A8%8B/Code-%E7%8E%B0%E4%BB%A3%E5%AF%86%E7%A0%81%E5%AD%A6%E2%

80%94%E5%8E%9F%E7%90%86%E4%B8%8E%E5%8D%8F%E8%AE%AE.pdf

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,179評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,628評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,444評(píng)論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,948評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,185評(píng)論 0 287
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,717評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,602評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,794評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,045評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評(píng)論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,414評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,750評(píng)論 2 370

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