【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裡跑一下:
得到一段神奇的字串:
KNMUG62UNBUXGX3JONPWEYLTMVPTGMS7MFXGIX3KONTHKY3LPU======
有點像base64,但是解不出來,就只能做到這裡了。。。
PS. 感謝評論區的同學,這是base32編碼,網上可以找到解碼器,解碼後的結果是:
SYC{This_is_base_32_and_jsfuck}
大鯊魚
這個是流量包檔案,一般用Wireshark分析。打開發現總共有1200多條報文,那就篩選一下,看裡面有沒有我們感興趣的內容,一看果然有:
說明在1223號這裡請求了flag.jpeg,然後去掉篩選往下找,發現在1239號收到了這張圖片。於是開啟1239號並把圖弄出來(Wireshark右鍵選單的“Export Selected Packed Bytes…”可以把整塊內容匯出到新檔案,挺好用的功能~),開啟匯出的圖片,獲得flag:
會不會寫程式碼?
開啟看了看,好像是個git的配置檔案,並沒用過git,先留坑。。。
手速夠不夠快?
鍛鍊了多年的手速來這裡看看夠不夠快 nc 222.18.158.229 30002
表示沒做過這種題,先留坑。。。
仔細瞧一瞧?
開啟就是這張圖(金木小天使_):
二進位制檢視,發現裡面嵌入了壓縮檔案(頭標誌PK),於是將副檔名改為rar開啟,發現了裡面的flag.txt檔案,內容如下:
flag在此,看起來好像是被編碼了,聽說解碼這個後是一個加密,加油~
VBF{Wk3_Hqf0g3_I0u_b0x_1x}
這種形如&#加上數字的編碼可被瀏覽器解釋變為對應字元,數字就是相應字元的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:
小明
頁面上有如下內容:
想必你對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:
asp你會嗎?
沒思路先留坑。。。
來來來,寫程式碼
來來來,小夥子,寫個指令碼來爆破的我的變數吧哈哈哈哈!!!!!
Tips:變數名SYC**
GET還是POST也沒說,於是大暴力。。。並沒跑出來。。。
小彩蛋
zone裡面隱藏著一個小彩蛋,不知道聰明的你看到了沒。
.flag:before{
content: "SYC{Css_Als0_Can_h1D3_F1ag}";
color: transparent;
display: none;
}
餅乾餅乾餅乾
開啟以後提示:只能通過谷歌來訪問噢!
推測是構造報頭的referer欄位,加上以後返回:
於是加上cookie訪問:
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題都沒做,具體有這些:
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
不過既然選擇了這個方向,就要儘量多學一點、多會一點,爭取以後比賽不當吊車尾。