写在开头的话:
今年总共有三所院校自主招生里面提到了对网络空间安全特长生有高考优惠政策招生,分别是四川大学,北京邮电大学,中国科技大学。其中中国科技大学和北京邮电大学是降分到当地一本线录取,川大有三个等级,第一等级是降分到当地一本线录取,第二个等级是降分一本线下30分录取,第三个等级是破格录取,即不看高考分数录取。 因为在今年自招报名的时候,正好川大限制的报名院校数量是三所,所以我都报名了这三所学校。 最终的初审结果是通过了川大和北邮的初审,中国科技大学初审没通过(看来中科大对文化课成绩要求还是很高-_-),其中,川大初审全国通过了三十多个人,北邮初审全国通过了七个人。 最终一番纠结还是选择了去北邮复试,于是乎高考考完英语下午就直奔北京参加考试去了,昨天回到克拉玛依,和同行的也通过了川大和北邮初审最终选择了北邮的好朋友iosmosis一同记录下这篇关于北邮自招复试的文章内容,希望能对有需要的小伙伴提供到帮助~ 值得一提的是北邮的最终复试,当天只有四个人到了现场,其中一个人选择的ACM,我和剩下两人选择的CTF。北邮复试分为上午机试(CTF和ACM二选一)三小时,下午面试每个人大约十分钟时间,抽两个问题回答,和其他问题。
上午CTF内容(WEB和RE各三道)
RE 下载链接 https://www.klmyssn.com/CTF/BUPTzizhao.zip
*simple
这题还是比较简单的,首先直接ida打开。
通过下面的 我们便可以得出flag长度为32 然后分析内部的操作。 我们可显然可以看出算法核心就是对flag进行一堆骚操作之后与v6数组进行比较--->遇见这种题目我们很容易想出使用z3约束进行求解 但是这里其实还有一个坑,他在骚操作的时候用了uint8,而uint8的上限是256,所以我们在写约束的时候要%256. code如下
from z3 import *
str1 = [
0x4f,0x3b,0x23,0x11,0xe1,0x1f,0xfe,0xb3,0x4b,0xdd,0x75,0xfe,0x47,0xec,0xf2,
0 x43,0xdc,0x38,0xd4,0x64,0xde,0x45,0xbd,0x01,0x1b,0x04,0xb9,0x89,0x7d,0xb6,0x 4e,0xe2]
str2 = [
0x6b,0x6e,0x26,0x54,0x56,0x4b,0xe8,0x80,0xdc,0x28,0x46,0x18,0x71,0xcb,0x65,0 x44,0x9b,0x2b,0x22,0x82,0x2b,0x56,0x8e,0xe7,0x69,0x41,0x4c,0x1f,0x3a,0x45,0x 5c,0x35]
flag = [BitVec("flag%d"%i,16) for i in range(32)]
S = Solver()
for i in range(32):
S.add(flag[i] > 32)
S.add(flag[i] < 128)
S.add((str2[i]^(((16*flag[i])|(flag[i]>>4))%256)) == str1[i])
if S.check() == sat:
m = S.model()
flag1 = ''
for i in range(32):
flag1 += chr(m[flag[i]].as_long()) print flag1
print flag1
运行得到flag:
BUPT{Ea3y_3ncrypt1on_13n'T_it?!}
*kaisa
依然直接IDA打开
合hint 很显然可以看出是凯撒加密同时v5=11 显然右移了11位,直接取出数据用工具暴力跑一波 得到flag
BUPT{Ka1_3A_I3_vERy_SmarT_R1Gni?!?}
*main
不会。。。。。
WEB
*easyphp
右键查看网站源码
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>
<!--
index.php
<?php
$flag='xxx';
extract($_GET);
if(isset($gift)){
$content=trim(file_get_contents($flag));
if($gift==$content){
echo'flag'; }
else{
echo'flag has been encrypted';}
}
?>
-->
</body>
</html>
发现hint 存在flag这个文件 读入到content
输入gift 如果 gift=content则输出flag
尝试访问
http://10.112.163.9:8888/web2/index.php?gift=
返回
Warning: file_get_contents(xxx): failed to open stream: No such file or directory in /var/www/html/web2/index.php on line 6
flag is OHCG{82s5r276o3006q2054048p6799op543q}
根据提示 flag has been encrypted
所以猜测flag被某种方式加密
猜测为凯撒加密
用工具爆破了一下
|
*计算题
题目提示 1s中回答随机产生的数学题
运算符号不发生改变 所以用python先取出需要运算的数然后进行运算 最后post提交即可
EXP
|
|
运行即可获取flag
flag is BUPT{7b28f26afca4bc2654bd83d2a2bdc546}
author: Mr.R(https://darkeyer.github.io/)
iosmosis(https://iosmosis.github.io/)