9月27日00:00
這道題是我將hctf_warmup魔改之后得到的,難度比較低,主要還是講一些web相關的思考方式,所以這篇文章會比較冗長過于詳細.(畢竟是給小姑娘入門看的23333).就當M1saka這一次亞薩西了吧
打開題目之后能夠得到一張圖片和一個可以點擊的hint,點開hint之后會轉到hint.php,內容如下:
原來題目的界面只有一行短短的提示,告訴你flag在哪個檔案里面,在這里我加入了一些其他元素(你想讓老爹活不長對不對啊),甚至連按f12這種操作都進行了提示.在這里我們可以將所有資訊總結為兩個提示:
- flag在一個名字叫M1saka_M1k0t0的檔案里
- 我們應該按一下f12試一試
- 有一串奇奇怪怪的字符QWN0dWFsbHkgSSBraW5kIG9mIGxpa2UgdGhpcyBnaXJs
首先我應該解釋一下為什么要按f12: f12的效果和右鍵并點擊查看頁面源代碼的功能都是一樣的,能夠讀取到執行當前頁面的php或者html,css,JavaScript檔案的原始碼,能夠看到一些有效的資訊.我知道某個人看到這里一定會產生疑問:php是啥,html是啥,css是啥JavaScript又是啥.......我用自己的語言去解釋可能會模糊,還不如照搬百度:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本前處理器”)是一種通用開源腳本語言,語法吸收了C語言、Java和Perl的特點,利于學習,使用廣泛,主要適用于Web開發領域;
HTML稱為超文本標記語言,是一種標識性的語言,它包括一系列標簽.通過這些標簽可以將網路上的檔案格式統一,使分散的Internet資源連接為一個邏輯整體,HTML文本是由HTML命令組成的描述性文本,HTML命令可以說明文字,圖形、影片、聲音、表格、鏈接等,
css:層疊樣式表(英文全稱:Cascading Style Sheets)是一種用來表現HTML(標準通用標記語言的一個應用)或XML(標準通用標記語言的一個子集)等檔案樣式的計算機語言,CSS不僅可以靜態地修飾網頁,還可以配合各種腳本語言動態地對網頁各元素進行格式化,
JavaScript(簡稱“JS”) 是一種具有函式優先的輕量級,解釋型或即時編譯型的高級編程語言,雖然它是作為開發Web頁面的腳本語言而出名的,但是它也被用到了很多非瀏覽器環境中,JavaScript 基于原型編程、多范式的動態腳本語言,并且支持面向物件、命令式和宣告式(如函式式編程)風格,
其中PHP是我們需要重點學習并且掌握的一種語言,是一種存在并且作用于服務端(服務器)的后端語言;html,css和JavaScript都是前端語言,進行客戶端(即你所看到的瀏覽器頁面)的顯示以及資料處理.舉個栗子:你所看到的我的博客界面,有很多的專欄,很多的圖片,各種顏色的文字,這些都是html,css以及JavaScript的效果.(比如你在我的文章空白處點擊會有社會主義核心價值觀字幕出現的效果,這就是一段JavaScript代碼實作的.)而你去登錄一個網站,輸入用戶名密碼或者查詢一條資訊時,你所輸入的資料會傳送到服務器上面,由PHP進行處理并且回傳登陸結果或者查詢結果.我覺得這一段看完之后你應該對這幾個以前從來都沒有聽說過的東西稍微有一點了解了.
那一串奇奇怪怪的字符是一個base64加密之后的字串,你可以百度一個在線解密base64網站,把上面那一串東西扔進去看看結果是什么.(這段文字自動變色)
于是我們回到剛開始的界面,按下f12能看到原始碼里面有一段注釋:

提醒了一個奇奇怪怪的東西:source.php,如果你聯想能力足夠豐富的話大概能夠明白這是一個PHP型別的檔案.source在英文中的意思是源,所以這是源檔案,在任何web服務中源檔案是最重要檔案.但是我們如何去讀取他呢?
你在打開hint時有沒有注意到,hint界面的網址與最開始有一些不同,多了一個?file=hint.php .顯然這是一個檔案讀取的方式.在web中我們稱之為GET傳參,即我們使用GET方式向file這個引數傳遞一個值,提交到服務器去檢查并且執行.GET方式比較簡單,直接在url(即你所理解的網址)最后加一個英文問號"?"(中文的不要,豈可休)并且接上引數以及等號直接進行賦值.如果賦值多個引數就使用"&"進行拼接,從而達到一次性傳遞多個引數的目的.舉個例子如果我們百度一個漂亮姐姐的名字會在url里面看到:

在url的位置我們看到wd(盲猜是word的意思)這個引數是漂亮小姐姐的名字,后面跟了一堆我們無法得知是什么東西的引數(我要是知道我早就把百度給黑了).
到這里我們可以將剛才的url改成http://47.114.56.100:7777/index.php?file=source.php,從而讀取到source.php的內容:
1 class emmm
2 {
3 public static function checkFile(&$page)
4 {
5 $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
6 if (! isset($page) || !is_string($page)) {
7 echo "you can't see it";
8 return false;
9 }
10
11 if (in_array($page, $whitelist)) {
12 return true;
13 }
14 if (preg_match('/et|\?/im',$page)){
15 return false;
16 }
17
18
19 $_page = mb_substr(
20 $page,
21 0,
22 mb_strpos($page . '?', '?')
23 );
24 if (in_array($_page, $whitelist)) {
25 return true;
26 }
27
28 $_page = urldecode($page);
29 $_page = mb_substr(
30 $_page,
31 0,
32 mb_strpos($_page . '?', '?')
33 );
34 if (in_array($_page, $whitelist)) {
35 return true;
36 }
37 echo "you can't see it";
38 return false;
39 }
40 }
41
42 if (! empty($_REQUEST['file'])
43 && is_string($_REQUEST['file'])
44 && emmm::checkFile($_REQUEST['file'])
45 ) {
46 include $_REQUEST['file'];
47 exit;
48 } else {
49 echo "<br><img src=https://www.cnblogs.com/"https://i.loli.net/2020/09/23/sX8ZcC1hNS2U3DQ.jpg" />";
50 } nice job! ----M1saka
51 ?>
寫到這里已經夠你看一會兒的了,有什么看不懂的來問我吧,我先睡了23333,剩下的過兩天寫
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/135433.html
標籤:其他
下一篇:內網滲透--資訊收集(一)
