2017全国信息安全竞赛 WriteUp

Misc题目

签到题(√)


做个问卷,全答对就给flag了。

传感器1(√)


比赛时纯手动替换:

这是赛后自己写的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#coding:utf-8
__author__ = 'Mochazz'
encode = '差分曼彻斯特编码'
dic = {
'0':'0000',
'1':'0001',
'2':'0010',
'3':'0011',
'4':'0100',
'5':'0101',
'6':'0110',
'7':'0111',
'8':'1000',
'9':'1001',
'A':'1010',
'B':'1011',
'C':'1100',
'D':'1101',
'E':'1110',
'F':'1111',
}
string1 = '3EAAAAA56A69AA55A95995A569AA95565556';//题目
# string1 = '3EAAAAA56A69AA556A965A5999596AA95656'//所求
list1 = []
for i in string1:
list1.append(dic[i])
list1 = ('').join(list1)
print('%s每位数字转成二进制:'%string1)
print(list1)
l = []
flag = list1[:2]
if flag == '00' or flag == '11':
l.append('0')
else:
l.append('1')
i = 2
while i < len(list1):
if list1[i-2:i] == list1[i:i+2]:
l.append('0')
else:
l.append('1')
i += 2
l = ('').join(l)
print('转换结果:')
print(l)
dic2 = {value:key for key,value in dic.items()}
i = 0
flag = []
while i < len(l):
flag.append(dic2[l[i:i+4]])
i += 4
flag = (''.join(flag))
print('turn to hex')
print('0x'+flag)
print('The ID is:')
print('0x'+flag[6:14])

其实这个脚本写得不好,因为太啰嗦了。16进制转2进制完全可以用python的binascii模块完成。之所以用字典来转换,是因为我还不熟悉binascii模块的用法,待改进。

warmup


按照提示下载下来即可:

BadHacker


下下来是一个数据流量包

传感器2

embarrass(√)


下载下来是一个数据包使用wireshark打开,追踪里面的FTP数据,发现数据量很大,使用NetworkMiner.exe打开这个数据包,将其中的数据分离出来(NetworkMiner.exe无法打开pcapng格式文件,需要将pcapng文件另存为pcap格式文件即可打开):

分析分离出的misc2.pcapng文件,使用ctrl+F搜索flag:

选择追踪TCP流,再次搜索flag即可搜到:

pyHAHA


下载下来是一个.pyc结尾的文件,打开发现字符串是倒的:

编写python脚本将整个文件倒过来存储,脚本如下:

1
2
3
4
f = open('Py.py','wb')
with open('PyHaHa.pyc','rb') as g:
f.write(g.read()[::-1])
f.close()

发现结尾给了两个flag,还隐藏了一个压缩文件:

解压出来是一个mp3文件:

猜测是用MP3Stego加了密,所以我们就需要找出加密用的key。然后就是找不到key,官方也不给hint。。。

调查问卷(√)


签退题,随便填就给flag

Web

PHP execise(√)


这题考察远程代码执行,payload如下:eval(‘show_source(“index.php”);’);这条语句执行后会显示出index.php的源码。PS:直接使用show_source(“index.php”);也行

源码如下:

1
2
3
4
5
6
7
8
<?php
if(isset($_REQUEST['code'])){
$code = "<?php ". $_REQUEST['code'] . "?>";
file_put_contents("tmp.php",$code);
echo "OUTCOME: \n";
include "tmp.php";
}
?>

file_put_contents()函数:
用法:file_put_contents(文件名,字符串)
功能:会将整个文件原有的内容删掉,然将第二个参数的值作为内容写入文件中。
现在我们要做的就是找到flag所在位置,然后使用show_source()函数将flag内容显示出来即可。
输出当前网页所在路径:

列出该路径下所有文件:

显示flag文件内容提交即可:

wanna to see your hat?(√)


考察svn源码泄露、代码审计、sql注入
waf函数过滤post方式接收的name参数:

1
2
3
4
5
6
7
8
function waf($value){
$Filt = "\bUNION.+SELECT\b|SELECT.+?FROM";
if (preg_match("/".$Filt."/is",$value)==1){
die("found a hacker");
}
$value = str_replace(" ","",$value);
return $value;
}

使用Payload:or/**/1=1#’登录,直接取得flag,源码还需研究研究。

flag vending machine


一个可以买flag的魔法商城,然后你的现金低于flag的标价。可能考查的是条件竞争。

Guestbook

方舟计划

Crypto

Classical

Partial

Mailbox

Reverse

填数游戏(√)


逆向大佬做的,将绿色部分替换成0,提交这组数字即是flag

apk crack

欢迎来到加基森

溯源

Reverse

BabyDriver

NotFormat

easyheap

文章作者: Mochazz
文章链接: https://mochazz.github.io/2017/07/10/2017ncstisc/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mochazz's blog