攻防世界web新手題wp彙總

轉載自個人博客:super.j的博客

0x00 view_source

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

直接打開網站,F12查看源代碼,發現flagcyberpeace{d54ad4fdb3a258685cbd1fd82817c5a5}

0x01 robots

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

分析描述,可以知道存在robots.txt文件,打開發現

可知道有文件flag_ls_h3re.php,直接打開該文件得到flagcyberpeace{165ec629b3fbc11e0b229a9a3c7283a6}

0x02 backup

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

分析描述:php的備份文件有兩種:*.php~*.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>

0x03 cookie

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

分析描述,發現這道題目是要找cookie。訪問靶機,F12在network中查看response頭。

發現Set-Cookie: look-here=cookie.php,因此我們訪問cookie.php。讓我們查看response。找到flagcyberpeace{1b0103c4937fa3d11fc2d535cd5836bd}

0x04 disabled_button

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

打開目標網頁,f12打開源代碼發現:

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

將disabled屬性刪除後,發現按鈕可以點擊,獲取flagcyberpeace{6c7f92cbdd9571b6cf10ffb26846022f}

0x05 weak_auth

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

打開網頁,發現是一個登錄頁面,結合描述,認爲是弱口令。

# 第一次測試
username = 111
password = 111
# 返回信息:please login as admin

#第二次測試
username = admin
password = admin
# 返回信息:password error

現在,我們可以確定賬戶爲admin

現在我們可以通過弱口令工具爆破該密碼。

WebCrack

具體的使用方法該工具的README.md中有,這裏不再贅述。

跑出來,發現賬號密碼爲:admin/123456。登錄,得到flag:cyberpeace{10d2ccedf1e3b82ef0e773e776e81386}

0x06 simple_php

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

打開網頁發現php源碼,$a$b是通過$_GET[]得到的,所以可以在url中構造參數。

分析該題是php弱類型比較,a==0返回真,輸出$flag1,4444a繞過is_numeric,並且大於1234,輸出$flag2,得到flag:Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}

0x07 get_post

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

首先,明白兩種提交方式:GET和POST。

GET方法提交時,參數會直接跟在url後面,例如:www.xxx.com/?a=1&b=2&c=3各參數用&連接。

POST方法提交時,參數不會出現在url中,而是會以鍵值對的方式跟在請求頭後面。

打開網頁,提示以GET方式提交變量a,值爲1,因此在url後添加?a=1。之後提示以POST請求提交變量b,值爲2,這時通過chrome插件hackbar以POST方式提交b=2的請求,獲取flag:cyberpeace{dbbf28d1d2855295e7e749e836df3f6e}

0x08 xff_referer

題目描述:X老師告訴小寧其實xff和referer是可以僞造的。

首先要明白xff和referer。

xff:x-forwarded-for,用來識別通過HTTP代理或負載均衡方式連接到Web服務器的客戶端最原始的IP地址的HTTP請求頭字段。

referer:告訴服務器該網頁是從哪個頁面鏈接過來的。

打開網頁,提示IP地址必須爲123.123.123.123,因此在請求頭中添加x-forwarded-for:123.123.123.123。提交請求,提示必須來自https://www.google.com,因此請求頭中添加referee:https://www.google.com,得到flag:cyberpeace{b6aaf4c55f9cf5644e135c3b47a2f8d7}

本題通過chrome插件modheader實現對http header的修改。

0x09 webshell

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

由題目可知,已經有了一句話木馬了,現在只需要會連接就可以。

可以用蟻劍連接,這裏不介紹具體用法。

我們這裏用chrome插件hackbar提交POST請求獲取flag。

flag:cyberpeace{fc2722f9d8c0a4ab3f099176c486ac61}

0x10 command_execution

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

打開網頁發現可以直接執行命令,通過;可以執行多個命令。

# 首先找到flag.txt文件的位置
;find / -name flag.txt
# 返回:/home/flag.txt

# 查看flag.txt內容
;cat /home/flag.txt
# 返回:cyberpeace{f48d4d8ec8bc8697ab114c130789493f}

0x11 simple_js

題目描述:小寧發現了一個網頁,但卻一直輸不對密碼。(Flag格式爲 Cyberpeace{xxxxxxxxx} )

打開網頁,F12打開源碼,發現js源碼。

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) );

該題爲js代碼審計,簡化上面的代碼可得:

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;
    n = tab2.length;
    for(i = 0; i < n; i++ ){
        p += String.fromCharCode(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) );

可以發現無論輸入什麼,最後返回的值永遠都是tab2,也就是pass處理後的值,而真正的flag是\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。通過腳本跑出flag

a = '\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'
# print(a)
flag = ''
a = a.split(',')
for i in a:
    flag += chr(int(i))


print(flag)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6XBEWyzW-1581255614348)(攻防世界web新手題wp彙總/image-20200209212846303.png)]

flag:Cyberpeace{786OsErtk12}

後記

若有web大佬看見,有任何建議都可以相互交流一下,江小白在這裏拜謝。

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