攻防世界—web新手區wp
- view source
- robots
- backup
- cookie
- disabled_button
- weak auth
- simple php
- get_post
- xff_referer
- Webshell(檔案上傳)
- command_execution(命令執行)
- simple_js(代碼審計)
- @總結
view source
提示:X老師讓小寧同學查看一個網頁的源代碼,但小寧同學發現滑鼠右鍵好像不管用了,
根據提示我們可以試著查看一下源代碼,卻發現點擊滑鼠右鍵無效,
那么我們可以嘗試其他查看網頁源代碼的方法,
查看網頁源代碼有下列五種方法:
1.滑鼠右擊然后直接查看源代碼
2.快捷鍵 Ctrl+U查看源代碼
3.在地址欄上加上view-soure
如:view-soure:https://www.baidu.com
4.火狐瀏覽器—更多工具—頁面源代碼
5.F12查看頁面源代碼
flag就在頁面源代碼里
注意:由于在攻防世界上每個人獲取的靶機不同,所以得到的flag也不同哦,正確的flag需要自己動手查找,
robots
提示:X老師上課講了Robots協議,小寧同學卻上課打了瞌睡,趕緊來教教小寧Robots協議是什么吧,
我們可以先大概了解一下robots協議
Robots協議 簡介:俗稱君子協議,也叫robots.txt是一種存放于網站根目錄下的ASCII編碼的文本檔案, robots.txt是搜索引擎中訪問網站的時候要查看的第一個檔案,當一個網路蜘蛛(網路搜索引擎的漫游器)訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜索機器人就會按照該檔案中的內容來確定訪問的范圍;如果該檔案不存在,所有的搜索蜘蛛將能夠訪問網站上所有沒有被口令保護的頁面, 如果想單獨定義搜索引擎的漫游器訪問子目錄時的行為,那么可以將自定的設定合并到根目錄下的robots.txt,或者使用robots元資料(Metadata,又稱元資料), robots協議并不是一個規范,而只是約定俗成的,所以并不能保證網站的隱私,
了解完robots協議后,根據提示我們先查看一下網頁的robots.txt檔案,看看里面有什么內容
直接在網址后面加上 /robots.txt 即可
注意:每個人的網址不同,下面是我的
http://111.210.241.224:53698/robots.txt
我們發現 f1ag_1s_h3re.php 意思是flag可能在這個檔案中
但是robots里的檔案不可自己爬取,不過我們可以手動打開,
直接在網址后面加上 /f1ag_1s_h3re.php 即可得到flag
http://111.210.241.224:53698/f1ag_1s_h3re.php

backup
提示:X老師忘記洗掉備份檔案,他派小寧同學去把備份檔案找出來,一起來幫小寧同學吧!
先了解一下備份檔案
常見備份檔案后綴有:.bak
本題可以使用工具:御劍

御劍下載鏈接:
鏈接:https://pan.baidu.com/s/1s78p9lAzuIWq-SwOmOT4NA
提取碼:mxnb
不使用掃描工具)

本題訪問http://11.10.10.175:45589/index.php.bak后會下載一個檔案,當成txt打開,flag就在里面啦
cookie
提示:X老師告訴小寧他在cookie里放了些東西,小寧疑惑地想:‘這是夾心餅干的意思嗎?’
先了解一下cookie的有關知識:
Cookie是保存在客戶端(我們自己的本地電腦)的純文本檔案,比如txt檔案,當我們使用自己的電腦通過瀏覽器進行訪問網頁的時候,服務器就會生成一個證書并回傳給我的瀏覽器并寫入我們的本地電腦,這個證書就是cookie,一般來說cookie都是服務器端寫入客戶端的純文本檔案,一般網路用戶習慣用其復數形式 Cookies,指某些網站為了辨別用戶身份、進行 Session 跟蹤而存盤在用戶本地終端上的資料,而這些資料通常會經過加密處理,
使用burpsuite抓包:
需用到的工具:brupsuite
抓包:

然后我們在網址加上 /cookie.php 回車
再次抓包并action 發送到repeater然后go最后在response里查找flag

不使用burpsuite抓包:
1.在瀏覽器按下F12鍵打開開發者工具,重繪后,在存盤一欄,可看到名為look-here的cookie的值為cookie.php(滑鼠右鍵—檢查)
2.在網址后面加上 /cookie.php ,提示查看http回應包(response),在網路一欄,可看到訪問cookie.php的資料包 (回應頭)
3.點擊查看資料包,在訊息頭內可發現flag


disabled_button
提示:X老師今天上課講了前端知識,然后給了大家一個不能按的按鈕,小寧驚奇地發現這個按鈕按不下去,到底怎么才能按下去呢?
打開頁面,發現按鈕無法點擊,
方法一:
F12查看原始碼
發現input標簽有個disable屬性
disabled 屬性規定應該禁用 input 元素,
被禁用的 input 元素既不可用,也不可點擊,可以設定 disabled 屬性,直到滿足某些其他的條件為止(比如選擇了一個復選框等等),然后,就需要通過 JavaScript 來洗掉 disabled 值,將 input 元素的值切換為可用,
洗掉原始碼中的disable屬性,按鈕即可點擊,然后得到Flag,

按動按鈕即可得到flag
快捷鍵 FN+F12(檢查/開發者選項)
檢查—編輯HTML(E)刪掉 disable="" —檢查/重繪即可

按下按鈕可以得到flag

方法二:
審計from表單代碼,使用hackbar,用post方式傳遞auth=flag,然后點擊execute即可按動按鈕,同樣可以獲得flag

hackbar下載:火狐瀏覽器—右上角三條杠—擴展和主題—尋找更多附加組件
—搜索hackbar—添加到firefox—右鍵檢查即可看到hackbar


weak auth
提示:小寧寫了一個登陸驗證頁面,隨手就設了一個密碼,
了解弱口令爆破,掌握爆破方法
1.隨便輸入下用戶名和密碼,提示要用admin用戶登入,然后跳轉到了check.php,查看下源代碼提示要用字典,

要用admin 加上隨便一個密碼 登錄 然后抓包 暴力破解
2.用burpsuite截下登錄的資料包,把資料包發送到intruder爆破
3.設定爆破點為password
4.加載字典(load…)
5.開始攻擊,查看回應包串列,發現密碼為123456時,回應包的長度和別的不一樣.

6.點進去查看回應包,獲得flag

注:字典可以去百度下載(簡單的弱口令字典就可以了)
不使用字典也可以(直接嘗試0~99999999999)暴力破解,只不過要比較久
如果不會使用burp暴力破解的話可以去b站、csdn等搜教程(這里就不過多描述了)
simple php
提示:小寧聽說php是最好的語言,于是她簡單學習之后寫了幾行php代碼,
原理:

步驟:
簡單審計下代碼,發現需要以get的方式傳入兩個引數a和b,

php 類 型 比 較 表 https://www.php.net/manual/zh/types.comparisons.php
簡單說:
a引數的要求 a必須等于0且a為真
b引數的要求 b不能為數字且b大于1234
這道題的核心問題是理解PHP語言的弱型別

構造命令:http://111.198.29.45:45627/?a=00a&&b=12345s
或者:http://111.198.29.45:45627/index.php?a=’0’&b=12345s
訪問即可得到flag
注:有些文字我直接使用圖片的形式(不知道為什么打上去會亂碼,本人菜雞小白第一次寫,不懂這是為啥會亂碼,所以只能在word上寫,然后放截圖了,以后會改進,需要復制的話可以將圖片在QQ上發送給自己,然后右擊圖片提取檔案,)
get_post
提示:X老師告訴小寧同學HTTP通常使用兩種請求方法,你知道是哪兩種嗎?
工具:firefox及其插件hackbar(在檢查/開發者選項中打開)
知識補充:
? 兩種 HTTP 請求方法:GET 和 POST
在客戶機和服務器之間進行請求-回應時,兩種最常被用到的方法是:GET 和
POST,
{
GET - 從指定的資源請求資料,
POST - 向指定的資源提交要被處理的資料
}
<用 GET 給后端傳參的方法是:在?后跟變數名字,不同的變數之間用&隔開>
在 url 后添加/?a=1 即可發送 get
利用 hackbar 進行 POST 傳參:復制 get 的 url,選擇 postdata,填入 b=2,選擇 execute,即
可發送 POST 請求
解題方法:
1.get傳遞直接在網址上構造傳遞a=1(構造?a=1)或者hackbar
2.Post傳遞勾選hackbar上的post data,用post方式傳遞b=2,點擊excute 可獲得flag
xff_referer
提示:X老師告訴小寧其實xff和referer是可以偽造的,
知識點:
X-Forwarded-For(XFF)是用來識別通過均衡HTTP代理或負載方式連接到Web服務器的客戶端最原始的IP地址的HTTP請求頭欄位, Squid 快取代理服務器的開發人員最早引入了這一HTTP頭欄位,并由IETF在HTTP頭欄位標準化草案中正式提出,
HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器該網頁是從哪個頁面鏈接過來的,服務器因此可以獲得一些資訊用于處理,
X-Forwarded-For:簡稱XFF頭,它代表客戶端,也就是HTTP的請求端真實的IP,只有在通過了HTTP 代理或者負載均衡服務器時才會添加該項
解題程序:
1.打開firefox和burp,使用burp對firefox進行代理攔截,在請求頭添加X-Forwarded-For: 123.123.123.123,然后放包

2. 接著繼續在請求頭內添加Referer: https://www.google.com,可獲得flag
看到這句話就知道應該是要使用 burp 抓包修改 ip 地址,
在請求中加入 X-Forwarded-For:123.123.123.123
得到回應,發現還要來自谷歌,想到 referer
添加 Referer: https://www.google.com,點擊發送得到回應,從而得到最終 flag,

Flag:cyberpeace{b1acd0a82ad805f457be1baf9f9f9973}
Webshell(檔案上傳)
提示:小寧百度了php一句話,覺著很有意思,并且把它放在index.php里,(一句話木馬)
打開題目鏈接(一句話木馬)
知識點:
webshell就是以asp、php、jsp或者cgi等網頁檔案形式存在的一種代碼執行環境,主要用于網站管理、服務器管理、權限管理等操作,使用方法簡單,只需上傳一個代碼檔案,通過網址訪問,便可進行很多日常操作,極大地方便了使用者對網站和服務器的管理,正因如此,也有小部分人將代碼修改后當作后門程式使用,以達到控制網站服務器的目的,
顧名思義,“web”的含義是顯然需要服務器開放web服務,“shell”的含義是取得對服務器某種程度上操作命令,webshell主要用于網站和服務器管理,由于其便利性和功能強大,被特別修改后的webshell也被部分人當作網站后門工具使用,
工具:
firefox、hackbar、antsword/中國菜刀(兩個類似)
方法一:
中國菜刀下載鏈接:
鏈接:https://pan.baidu.com/s/10lwD45TvXLOZ0GELD9XgkQ
提取碼:mxnb
antsword(蟻劍)
這個檔案比較大,百度網盤需要開會員才可以上傳大檔案
有需要可以自行去csdn搜 antsword(蟻劍)下載安裝 教程很多哦,
下面給出我用蟻劍的做題程序(中國菜刀類似)

1.直接提示給了php一句話,可以用菜刀或蟻劍連接,此處用蟻劍鏈接:

2.連接后在網站目錄下發現了flag.txt檔案,查看檔案可獲得flag

方法二:
可以使用hackbar,使用post方式傳遞shell=system(‘cat flag.txt’); 獲得flag
1.訪問http://111.200.241.244:59144/
2.根據提示訪問http://111.200.241.244:59144/index.php
(此時已將一句話木馬上傳至服務器,可直接利用)
3.shell=phpinfo();

4.shell=system(ls);


方法三:
盲猜flag.txt直接訪問之
方法四:
使用hackbar或其他工具提交post資料:
shell=system(“grep -r cyberpeace ./”);
或者 shell=system("find ./ -name flag -exec cat {} ;|grep 'cyberpeace


原本burp請求方法為get



command_execution(命令執行)
提示:小寧寫了個ping功能,但沒有寫waf,X老師告訴她這是非常危險的,你知道為什么嗎
知識點:
| 的作用為將前一個命令的結果傳遞給后一個命令作為輸入
&&的作用是前一條命令執行成功時,才執行后一條命令
掌握命令拼接的方法
1.打開瀏覽器,在文本框內輸入127.0.0.1 | find / -name “flag.txt” (將 | 替換成 & 或 && 都可以),查找flag所在位置,如圖所示,
2.在文本框內輸入 127.0.0.1 | cat /home/flag.txt 可得到flag
掌握有關命令執行的知識
windows 或 linux 下:
command1 && command2 先執行 command1,如果為真,再執行 command2
command1 | command2 只執行 command2
command1 & command2 先執行 command2 后執行 command1
command1 || command2 先執行 command1,如果為假,再執行 command2
命令執行漏洞(| || & && 稱為 管道符)
到上一級目錄看看有啥 127.0.0.1 && ls …/
127.0.0.1&&ls 獲取當前目錄
尋找“.txt”檔案,輸入命令 127.0.0.1 &&find / -name “*.txt”,發現了flag檔案
Flag:cyberpeace{d4354cb3d5e6bf6829a449a64358fc93}
simple_js(代碼審計)
提示:小寧發現了一個網頁,但卻一直輸不對密碼,
(Flag格式為 Cyberpeace{xxxxxxxxx} )
查看源代碼(代碼審計)
avascript的代碼審計
方法一:
1.打開頁面,查看源代碼,可以發現js代碼,如圖所示,
2.進行代碼審計,發現不論輸入什么都會跳到假密碼,真密碼位于 fromCharCode ,
3.

先將字串用python處理一下,得到陣列[55,56,54,79,115,69,114,116,107,49,50],exp如下,
s="\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 (s)
5.將得到的數字分別進行ascii處理,可得到字串786OsErtk12,exp如下,
a = [55,56,54,79,115,69,114,116,107,49,50]
c = “”
for i in a:
b = chr(i)
c = c + b
print?
閱讀代碼,逐步整理,
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;
}
去除無用變數得到:
function dechiffre() {
var pass = “70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65”;
var tab2 = pass.split(’,’);
var i, n, p = “”;
n = tab2.length;
for (i = 0; i < n; i++) {
p += String.fromCharCode(tab2[i]);
if (i == 5) break;
}
for (i = 0; i < n; i++) {
if (i > 5 && i < n - 1) p += String.fromCharCode(tab2[i]);
}
p += String.fromCharCode(tab2[17]);
return p;
}
末尾并入回圈得到:
function dechiffre() {
var pass = “70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65”;
var tab2 = pass.split(’,’);
var i;
var p = “”;
for (i = 0; i < tab2.length; i++) {
p += String.fromCharCode(tab2[i]);
}
return p;
}
就邏輯上可見它只是將內容為逗號分隔的數字的字串轉成相應編碼的字串,
將代碼修改,用下方的可疑字串代替函式中的常量,得到的整個網頁代碼是:
方法二:
查看網頁原始碼
發現這段JS代碼表示完全無論我們輸入的什么內容,結果都是一樣的,所以判斷這段代碼無用,
有用的是:
String"fromCharCode";
寫python腳本進行轉碼即可:
string = “\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”
s = string.split(",")
c = “”
for i in s:
i = chr(int(i))
c = c+i
print?
786OsErtk12
split() 方法用于把一個字串分割成字串陣列,
提示: 如果把空字串 ("") 用作 separator,那么 stringObject 中的每個字符之間都會被分割,
注意: split() 方法不改變原始字串,
代碼的功能是把一串用逗號分隔的數字按ASCII轉成字串
本段代碼為16進制
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\x

規范flag格式,可得到Cyberpeace{786OsErtk12}
方法三:

方法四:



Flag:Cyberpeace{786OsErtk12}
@總結
我是菜雞小白,第一次寫文章,如有不足之處,還請多多指教,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294138.html
標籤:其他
