攻防世界 web 新手題小結

2020-10-21 11:00:47

01view_source

方法:在下用的firefox,滑鼠右鍵可檢視頁面原始碼,試了試不行。那麼F12,即可得到。
收穫:滑鼠右鍵不能用,與前端函數有關,在該頁面中我們可以發現有這兩個函數,

1. document.oncontextmenu=new Function("return false") //是右鍵選單禁用;
2. document.onselectstart=new Function("return false") //是禁止選中頁面上的內容;
3. document.onselectstart=new Function("return false")//是禁止複製在頁面上選中的內容;(補充)

 

02get_post

HTTP通常的兩種請求方法是get和post.

方法一:首先進入容器會看到

那麼就在url後加上?a=1,然後得到

這時有三種方法:1.用firefox外掛Max HacKBar,,得到flag;

方法二:用burp抓包,send to repeater,加上b=2 send,得到flag;

方法三:不用外掛,,某位大佬的。在檢視器中進行如圖修改,即可得到flag。

 

03robots

方法:在url後加上robots.txt,會得到,然後存取flag_1s_h3re.php,即可得到flag。

收穫:當一個搜尋機器人(有的叫搜尋蜘蛛)存取一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜尋機器人就會按照該檔案中的內容來確定存取的範圍;如果該檔案不存在,那麼搜尋機器人就沿著連結抓取。並且,robots.txt必須放在一個站點的根目錄下,而且檔名必須是小寫。robots.txt就是告知搜尋引擎哪些是允許存取的,哪些是不想被搜尋引擎收錄的。如果您希望搜尋引擎收錄網站上所有內容,請勿建立robots.txt檔案。但是,robots.txt不是防火牆,不能阻止存取。

 

04backup

方法:在url後加上Index.php.bak,存取,在f12中,即可得到flag.

收穫:常見的備份檔案字尾名有:.git  .svn  .swp  .bak  .bash_history  .~

  php的備份有兩種:*.php~和*.php.bak。  這道題也可以用py指令碼解決,掃目錄,即可得到地址。也可以用御劍掃描進行解決。

 

05cookie

分析:首先會看到這個,然後f12檢視,cookie,,然後就在url後加上cookie.php,存取,看到,提示我們在響應頭裡。

方法一:burp抓包,並send to repeater,而後send,在響應頭裡即可得到flag。

方法二:firefox,存取http://220.249.52.133:54804/cookie.php,f12,在網路一欄中,可看到存取cookie.php的封包,

收穫:Cookie是當主機存取Web伺服器時,由 Web 伺服器建立的,將資訊儲存在使用者計算機上的檔案。一般網路使用者習慣用其複數形式 Cookies,指某些網站為了辨別使用者身份、進行 Session 跟蹤而儲存在使用者本地終端上的資料,而這些資料通常會經過加密處理。

 

06disabled_button

方法一:開啟後,發現,f12,在檢視器一欄中,將disabled改為abled或直接將disabled=""刪除,然後按鈕就可以點了。點選即可得到flag.

方法二:審計form表單程式碼,post傳值auth=flag,也可以得到flag.

(但是我在用Burp實現的時候卻無法成功,如下圖),如果哪位大佬懂的話,希望在評論區指點小弟下。

收穫:html的相關標籤及相應的屬性

 

07weak_auth

題目簡介:開啟後,如圖

需要輸入賬號和密碼,然後隨便輸入,會出現彈窗(please login as admin)在f12發現

方法:burp爆破,設定好之後,開啟,抓包,send to Intruder,

然後設定爆破點為password:將admin兩邊的$去掉,將password的值兩邊加上$.

載入字典,load載入字典,然後開始爆破

發現,密碼為123456時length不一樣,於是在響應包裡得到flag。

收穫:burp的爆破功能,以及用Python,c++建立字典的方法.


08command_execution

題目:小寧寫了個ping功能,但沒有寫waf,X老師告訴她這是非常危險的,你知道為什麼嗎。

waf,web應用防火牆,Web應用防火牆是通過執行一系列針對HTTP/HTTPS的安全策略來專門為Web應用提供保護的一款產品。所以本題環境沒有waf。

方法一:1.在文字方塊內輸入127.0.0.1 | find / -name "flag.txt" ,查詢flag所在位置

2.在文字方塊內輸入 127.0.0.1 | cat /home/flag.txt 可得到flag

方法二:1.在文字方塊中輸入127.0.0.1 && ls 檢視當前目錄下的檔案

2.輸入127.0.0.1 && ls../ 檢視上一級目錄

3.輸入127.0.0.1 && ls../../  檢視上一級目錄

4.輸入127.0.0.1 && ls../../../  檢視上一級目錄,發現有個home的檔案,不妨開啟看看

5.輸入127.0.0.1 && ls ../../../home 檢視該檔案,發現flag.txt

6.輸入127.0.0.1 && cat ../../../home/flag.txt 開啟該檔案,

方法三:requests庫,這是xctf平臺某位大佬的解題方法。同時requests庫的相關使用參見這位大佬的requests庫基本使用   和這位大佬的Python-第三方庫requests詳解    ,個人感覺收益頗豐。

收穫:

| 的作用為將前一個命令的結果傳遞給後一個命令作為輸入

&&的作用是前一條命令執行成功時,才執行後一條命令

還有相關指令要學習,find ,cat ,ls  等指令。

 

09simple_php

<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
    echo $flag1;
}
if(is_numeric($b)){
    exit();
}
if($b>1234){
    echo $flag2;
}
?> 

題目:開啟後出現如下程式碼,

進行程式碼審計:1.get傳參給$a和$b,如果$a==0 且 $a ,則返回$flag1;

2.is_numeric()函數,如果$b是數位或者數位字串,則返回ture,exit()執行;否則,並且$b>1234

,則返回$flag2; 

3.這裡要注意一點,php語言是弱型別比較,php中有兩種比較符號

=== 會同時比較字串的值和型別;

== 會先將字串換成相同型別,再作比較,屬於弱型別比較;

所以如果$a=string(string是任意字串),則‘string’==0為真;

$b=12ss,則‘12ss’==12為真,

方法一:返回flag1.   url後加上index.php?a=string (string為任意字串),得到flag1的一半,還有半截未顯示出來

<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
    echo $flag1;
}
if(is_numeric($b)){
    exit();
}
if($b>1234){
    echo $flag2;
}
?>

Cyberpeace{647E37C7627CC3E401

在url後加上index.php?a=0&b=1235a,得到flag1的另一半(別問我咋知道的,瞎試試出來的,現在還沒搞懂,懂的大佬可在評論區指點一下)

<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
    echo $flag1;
}
if(is_numeric($b)){
    exit();
}
if($b>1234){
    echo $flag2;
}
?>

9EC69324F66C7C} 

方法二:返回flag2.  url後加上index.php?a=string&b=1235a (string為任意字串),得到flag2.

<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
    echo $flag1;
}
if(is_numeric($b)){
    exit();
}
if($b>1234){
    echo $flag2;
}
?>

Cyberpeace{647E37C7627CC3E4019EC69324F66C7C} 


10xff_referer

題目:描述及開啟後看到的

方法一:burp抓包,send to repeater,將X-Forwarded-For新增進去(注意位置),得到如下圖

由圖知,https要設定,於是再將Referer:https://www.google.com 插入進去,得到flag.

 

 

 

收穫:

X-Forwarded-For:簡稱XFF頭,它代表使用者端,也就是HTTP的請求端真實的IP,只有在通過了HTTP 代理或者負載均衡伺服器時才會新增該項

HTTP Referer是header的一部分,當瀏覽器向web伺服器傳送請求的時候,一般會帶上Referer,告訴伺服器我是從哪個頁面連結過來的.


11webshell

這個題的相關資料:

新手區webshell


12simple_js

題目:開啟後,就讓我輸密碼,隨便輸入,出現彈窗,檢視原始碼。javascript裡面有一段程式碼如下,


    function dechiffre(pass_enc){
        var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
        var tab  = pass_enc.split(',');
                var tab2 = pass.split(',');var i,j,k,l=0,m,n,o,p = "";i = 0;j = tab.length;
                        k = j + (l) + (n=0);
                        n = tab2.length;
                        for(i = (o=0); i < (k = j = n); i++ ){o = tab[i-l];p += String.fromCharCode((o = tab2[i]));
                                if(i == 5)break;}
                        for(i = (o=0); i < (k = j = n); i++ ){
                        o = tab[i-l];
                                if(i > 5 && i < k-1)
                                        p += String.fromCharCode((o = tab2[i]));
                        }
        p += String.fromCharCode(tab2[17]);
        pass = p;return pass;
    }
    String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));

    h = window.prompt('Enter password');
    alert( dechiffre(h) );

 開始程式碼審計:簡化後,就是有個16進位制的字串"\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30",將其轉為10進位制,然後根據ASCII碼錶對應的字元進行轉化,得到flag。

方法:python

收穫:

1.fromCharCode()函數

var n = String.fromCharCode(65);
輸出結果: A

2.16進位制字串轉10進位制,python直接輸出

3.數位轉字串,用遍歷,chr()函數:將陣列轉為相應的ASCII碼字元。