1. 程式人生 > >【Writeup】第六季極客大挑戰(部分題目)

【Writeup】第六季極客大挑戰(部分題目)

好久沒做CTF題了,一是感覺前幾次網賽被虐的夠嗆,二是各種雜事也越來越多。偶然看到了網上這套成都資訊工程大學的練習題,感覺難度上比較適合我這種菜鳥,於是抽空做了一些,然而由於水平和時間原因最終也才完成11/41,這裡就記錄一下我解出的11道題。以及將來學會的題,也會在後面增加。

Misc (雜項)

簽到題

聽說關注syclover微博,私信有驚喜呦。

一開始微博加錯了,加了個無辜的妹子。。。正確的ID是 @三葉草小組Syclover,加關注後它會自動私信flag。

flag: SYC{Welcome_To_Geek_Challenge_2015}

口號更新

hi!你的flag掉了,在zone裡面,同樣存在一個小提示,快去更新口號,聽說更新內容為flag_flag_flag的時候會爆出flag。

<!--do you kown how to update slogan?  /slogan -->

然後用burpsuite POST了一下,又失敗了,於是這題就放了好久。。。直到學長說用Firefox的Hackbar去POST能過。。。這簡直是坑我們Chrome選手啊。。。

然後用Firefox搞了一發,果然彈窗了,在響應中找到了flag。

截圖如下:

這裡寫圖片描述

(?Д?)

開啟題目看到了一堆顏文字。。。

最開始看到這種神奇程式碼是在知乎一個問題下(時間略久找不到連結了),把那段顏文字複製到Console裡跑一下就能自動點贊+關注,後來瞭解到是一種叫AAencode的js程式碼加密,可以在

這個網站 線上加密。

同理,將這段程式碼扔到Console裡跑一下:

misc_2

得到一段神奇的字串:

KNMUG62UNBUXGX3JONPWEYLTMVPTGMS7MFXGIX3KONTHKY3LPU======

有點像base64,但是解不出來,就只能做到這裡了。。。

PS. 感謝評論區的同學,這是base32編碼,網上可以找到解碼器,解碼後的結果是:

SYC{This_is_base_32_and_jsfuck}

大鯊魚

這個是流量包檔案,一般用Wireshark分析。打開發現總共有1200多條報文,那就篩選一下,看裡面有沒有我們感興趣的內容,一看果然有:

misc_3

說明在1223號這裡請求了flag.jpeg,然後去掉篩選往下找,發現在1239號收到了這張圖片。於是開啟1239號並把圖弄出來(Wireshark右鍵選單的“Export Selected Packed Bytes…”可以把整塊內容匯出到新檔案,挺好用的功能~),開啟匯出的圖片,獲得flag:

misc_4

會不會寫程式碼?

開啟看了看,好像是個git的配置檔案,並沒用過git,先留坑。。。

手速夠不夠快?

鍛鍊了多年的手速來這裡看看夠不夠快 nc 222.18.158.229 30002

表示沒做過這種題,先留坑。。。

仔細瞧一瞧?

開啟就是這張圖(金木小天使_):

misc_5

二進位制檢視,發現裡面嵌入了壓縮檔案(頭標誌PK),於是將副檔名改為rar開啟,發現了裡面的flag.txt檔案,內容如下:

flag在此,看起來好像是被編碼了,聽說解碼這個後是一個加密,加油~
&#x56;&#x42;&#x46;&#x7b;&#x57;&#x6b;&#x33;&#x5f;&#x48;&#x71;&#x66;&#x30;&#x67;&#x33;&#x5f;&#x49;&#x30;&#x75;&#x5f;&#x62;&#x30;&#x78;&#x5f;&#x31;&#x78;&#x7d;

這種形如&#加上數字的編碼可被瀏覽器解釋變為對應字元,數字就是相應字元的unicode編碼。這段編碼可被瀏覽器直接解釋為:

VBF{Wk3_Hqf0g3_I0u_b0x_1x}

然後嘗試著把最前面的“VBF”對映到“SYC”,發現果然是移位加密。移位解密後的結果為:

SYC{Th3_Enc0d3_F0r_y0u_1u}

re200_1

感覺是RE題亂入到Misc區裡了,逆向並不會。。。

Web

Vous ferez Fran?ais

既然扯到語言,九成是要改報頭的Accept-Language欄位了,於是改為French提交,得到flag:

web_1

小明

頁面上有如下內容:

想必你對php的LFI已經有一定的瞭解了,但你能拿到這個頁面的原始碼麼?

簡單百度了一些,貌似是可以利用檔案包含漏洞拿shell的,然而時間不太夠沒仔細學,先留坑。。。

http_

Web中的簽到題,看報頭髮現有Flag欄位:SYC{1_4M_HttP_He4der}

小明2

開啟網頁發現如下內容:

小明最近成為了虛擬世界新的救世主,但他和尼奧剛開始一樣不知道幹啥好,於是他去找了先知。
先知一直在變換自己的身份,但小明還是得到了小道訊息:
先知目前的身份是一個機器人,在為網站工作。

看到“機器人”猜測目錄下有robots.txt,訪問之發現該目錄下有index.php.bak檔案,訪問之發現如下php原始碼:

<?php
	$whattodo = "nothing";

	@extract($_REQUEST);
	if($whattodo == "save the world!"){
		echo $flag;
	}
?>

這個extract()函式可以覆蓋變數的值,於是構造url獲得flag:

web_2

asp你會嗎?

沒思路先留坑。。。

來來來,寫程式碼

來來來,小夥子,寫個指令碼來爆破的我的變數吧哈哈哈哈!!!!!
Tips:變數名SYC**

GET還是POST也沒說,於是大暴力。。。並沒跑出來。。。

小彩蛋

zone裡面隱藏著一個小彩蛋,不知道聰明的你看到了沒。

.flag:before{
	content: "SYC{Css_Als0_Can_h1D3_F1ag}";
	color: transparent;
	display: none;
}

餅乾餅乾餅乾

開啟以後提示:只能通過谷歌來訪問噢!

推測是構造報頭的referer欄位,加上以後返回:

web_3

於是加上cookie訪問:

web_4

sqli1

我是直接拿sqlmap掃的。。。

>sqlmap.py -u http://sql.sycsec.com/5f3b974ef6337582f2eeb8da24059c7a/?uid=1 -D sql1 -T flag -C flag --dump

flag:SYC{Sql_Inject10n_0n3_ppp}

之後的web題都沒做,具體有這些:

web5
web6

Reverse & Linux

這部分不熟,沒做。

Program

Transposition cipher

介紹了一種置換加密方法,先每行7個字元橫著寫原文,然後豎著一列一列組成密文。給了一段密文讓置換成原文。

瞭解原理後,程式碼實現並不難,下面是我用C寫的解密程式碼:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <algorithm>
using namespace std;

char mp[1100][8];
int orikey[7] = {7, 6, 5, 2, 1, 3, 4};
int key[7]    = {5, 4, 6, 7, 3, 2, 1};
int main()
{
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    int hang = 1075;
    char c;
    int i = 0, j = 0, cnt = 0;
    while((c = getchar()) != EOF){
        //cnt++;
        mp[i++][key[j]] = c;
        if(i == hang){
            j++;
            i = 0;
        }
    }
    for(int ii=0; ii<hang; ii++){
        for(int jj=1; jj<=7; jj++){
            putchar(mp[ii][jj]);
        }
        putchar('\n');
    }
    return 0;
}

後面兩題沒來得及看。。。

總結一下,感覺自己還是太水了。馬上就該“問鼎杯”了,不知道今年我們幾個能不能達到周神去年一半的水平T^T

不過既然選擇了這個方向,就要儘量多學一點、多會一點,爭取以後比賽不當吊車尾。