本文章来自https://www.cnblogs.com/iAmSoScArEd/p/10780242.html  未经允许不得转载!

1.MISC-签到

下载附件后,看到readme.txt打开后提示会有摄像头,一开始丢winhex,ida里啥也没发现,于是就选择直接打开qiandao.exe,当自己出现在镜头里时,会有个绿框,等了很久什么也没发现,于是回到题目是发现三人行必有flag,搜索了一下这个软件的xml文件的文件名,发现是人脸识别,结合想到,于是找了个三人照片,发现flag。

2.Crypto-puzzles

下载附件是一个html,打开后发现flag格式和题目。

a 1、2、3、4直接计算器计算:

得到a1=4006,a2=3053,a3=2503,a4=2560

Part1看了半天,常规找规律等差等比都不是,用二进制将三个已知的表示出来也没发现东西,去查询数字性质

因为前两个有一个未知,直接查后两个,发现都是质数,应该不会那么巧,应该是质数的等差数列,且相差37,于是前推37个质数,得到26365399,然后利用第一个质数查询

发现刚好4个数都是相差37个。

Part2

可以看到有四部分组成,分别求解:

4*lim(x->2) (x^2-3x+2)/(x^2-4)

=4*lim(x->2) (x-1)(x-2)/[(x-2)(x+2)]

=4*lim(x->2) (x-1)/(x+2)

=1

3*∫(0->ln2) e^x.(4+e^x)^2 dx

=3*∫(0->ln2) (4+e^x)^2 d(4+e^x)

=3*(1/3)[(4+e^x)^3]|(0->ln2)

=3*(1/3)( 6^3 - 5^3)

=91

2*∫(1->e) (1+5lnx)/x dx

=2*∫(1->e) (1/x) dx +5∫(1->e) (lnx/x) dx

=2*[lnx]|(1->e)+5∫(1->e)*lnx dlnx

=(1 +(5/2)[(lnx)^2]|(1->e))*2

=7

∫(0->π/2) xsinx dx

=-∫(0->π/2) xdcosx

=-[xcosx]|(0->π/2) +∫(0->π/2) cosx dx

=0 +[sinx]|(0->π/2)

=1

求解出来后相加*77,(91+1+7+1)*77=7700,就是part2

Part3

题目如下:

看到题目,网上找到相关公式如下:

代入

代入数值解方程 得到Part3为18640

Part4

504*2π/3=p*π/120

120*504*2π=3pπ

P=40*504*2

Part4=40320

最后合并

3.Web-JustSoso

下发后第一时间打开F12审查元素

发现提示,然后访问file=index.php 访问hint.php都无法显示内容,然后想到了PHP协议

index.php?file=php://filter/read=convert.base64-encode/resource=./index.php

发现成功读取了源码的base64,

然后接着读hint.php的并分别进行解密,得到index.php

Hint.php

看见Class就知道应该是考察反序列话,发现无法直接new Flag使用,还得把他加到handle中去执行,于是开始构造如下序列,

然后审查index.php发现有个payload会被反序列,而且必须file=hint.php才行直接放到payload一起提交

但是提交上面生成的序列化会被拦截,页面显示stop hacking,被正则检测到了。

后来根据匹配中使用的$_SERVER[‘REQUEST_URI’],通过网上查找相关资料,才知道这个的返回值,但是还是不知道如何绕过,根据这个语句在网上找到某大佬博客写到,可以使用///来进行绕过,于是成功,但是没有返回flag。

这时候发现有个随机数的问题

但是没有想到办法绕过,之前没有遇到过,接着搜索相关,知道可以使用序列化引用,让这两个值相等。

于是构造

返回如下序列化去提交

依旧没有返回flag。。。这时候有些泄气,后来在查php反序列话的时候,突然看到代码中的wakeup,之前一直没注意,但是在那篇文章讲了当序列化字符串中,如果表示对象属性个数的值大于真实的属性个数时就会跳过__wakeup的执行。于是把上图中的payload的handle改成了2,为什么构造的字符串为“%00Handle%00handle”呢?在那个大佬博客中看到序列化时生成的序列化字符串中类名前后本来就会有0×00,url编码下为%00,所以要添加。使用///可以绕过uri的过滤,于是构造

///index.php?file=hint.php&payload=O:6:"Handle":2:{s:14:"%00Handle%00handle";O:4:"Flag":3:{s:4:"file";s:8:"flag.php";s:5:"token";N;s:10:"token_flag";R:4;}}

然后使用上面的payload得到

本文章来自https://www.cnblogs.com/iAmSoScArEd/p/10780242.html  未经允许不得转载!

1.saleae

首先看到题目名saleae,搜索得知是一个逻辑分析工具,下载安装并学习如何使用。然后下载logicdata文件,用saleae打开,发现有4个频道。

根据题目提示,搜索AoiSystem,发现这个网页标题中提到SPI。SPI协议正好使用了芯片上的4个引脚,猜测logicdata文件应该用SPI协议进行分析。

观察波形,发现channel0是具有周期性的方波,应为时钟信号。

channel1没有信号,应为主机输入线。

channel2的波形不具有规律性,应为承载主机输出数据的MISO线。

channel3在channel0和channel2有信号时是低电平,其余时间为高电平,应为使能信号。

使用saleae进行SPI分析。

分析数据处出现flag。

导出数据并用文本编辑器处理,得到flag。

2.24c

依题意,本题同样使用saleae进行分析。搜索题名24c得知是基于IIC协议的EEPROM。

使用saleae进行I2C分析。

得到flag。

导出,得到以下文本:

Time [s],Packet ID,Address,Data,Read/Write,ACK/NAK

0.843872000000000,0,'160' (0xA0),' ' (0x20),Write,ACK

0.844038500000000,0,'160' (0xA0),f (0x66),Write,ACK

0.844205000000000,0,'160' (0xA0),1 (0x31),Write,ACK

0.844371000000000,0,'160' (0xA0),6 (0x36),Write,ACK

0.844537500000000,0,'160' (0xA0),3 (0x33),Write,ACK

0.844704000000000,0,'160' (0xA0),b (0x62),Write,ACK

0.844870500000000,0,'160' (0xA0),d (0x64),Write,ACK

0.845036500000000,0,'160' (0xA0),f (0x66),Write,ACK

0.845203000000000,0,'160' (0xA0),4 (0x34),Write,ACK

0.845369500000000,0,'160' (0xA0),e (0x65),Write,ACK

0.845536000000000,0,'160' (0xA0),} (0x7D),Write,ACK

0.845702500000000,0,'160' (0xA0),'0' (0x00),Write,ACK

0.945962500000000,1,'160' (0xA0),'0' (0x00),Write,ACK

0.946318000000000,2,'160' (0xA0),f (0x66),Read,ACK

0.946481500000000,2,'160' (0xA0),l (0x6C),Read,ACK

0.946645000000000,2,'160' (0xA0),a (0x61),Read,ACK

0.946808500000000,2,'160' (0xA0),g (0x67),Read,ACK

0.946972000000000,2,'160' (0xA0),{ (0x7B),Read,ACK

0.947135500000000,2,'160' (0xA0),c (0x63),Read,ACK

0.947299500000000,2,'160' (0xA0),4 (0x34),Read,ACK

0.947463000000000,2,'160' (0xA0),6 (0x36),Read,ACK

0.947626500000000,2,'160' (0xA0),d (0x64),Read,ACK

0.947790000000000,2,'160' (0xA0),9 (0x39),Read,ACK

0.947953500000000,2,'160' (0xA0),e (0x65),Read,ACK

0.948117500000000,2,'160' (0xA0),1 (0x31),Read,ACK

0.948281000000000,2,'160' (0xA0),0 (0x30),Read,ACK

0.948444500000000,2,'160' (0xA0),- (0x2D),Read,ACK

0.948608000000000,2,'160' (0xA0),e (0x65),Read,ACK

0.948771500000000,2,'160' (0xA0),9 (0x39),Read,ACK

0.948935500000000,2,'160' (0xA0),b (0x62),Read,ACK

0.949099000000000,2,'160' (0xA0),5 (0x35),Read,ACK

0.949262500000000,2,'160' (0xA0),- (0x2D),Read,ACK

0.949426000000000,2,'160' (0xA0),4 (0x34),Read,ACK

0.949589500000000,2,'160' (0xA0),d (0x64),Read,ACK

0.949753000000000,2,'160' (0xA0),9 (0x39),Read,ACK

0.949917000000000,2,'160' (0xA0),0 (0x30),Read,ACK

0.950080500000000,2,'160' (0xA0),- (0x2D),Read,ACK

0.950244000000000,2,'160' (0xA0),a (0x61),Read,ACK

0.950407500000000,2,'160' (0xA0),8 (0x38),Read,ACK

0.950571000000000,2,'160' (0xA0),8 (0x38),Read,ACK

0.950734500000000,2,'160' (0xA0),3 (0x33),Read,ACK

0.950898000000000,2,'160' (0xA0),- (0x2D),Read,ACK

0.951061500000000,2,'160' (0xA0),4 (0x34),Read,ACK

0.951225000000000,2,'160' (0xA0),1 (0x31),Read,ACK

0.951388500000000,2,'160' (0xA0),c (0x63),Read,NAK

5.946647000000000,3,'160' (0xA0),\t (0x09),Write,ACK

5.946813500000000,3,'160' (0xA0),a (0x61),Write,ACK

5.946980000000000,3,'160' (0xA0),c (0x63),Write,ACK

分析可知,通过I2C总线执行了三轮操作:

写' 'f163bdf4e}

读flag{c46d9e10-e9b5-4d90-a883-41c

写\t ac

根据I2C操作的相关知识,读操作读到的内容应为芯片上第160页处原本已有的内容,而写入操作则是在第160页处若干偏移量的位置覆盖写入。第一次写的偏移量显示字符为空格,转为十进制ASCII码即为32,注意到读部分读取到c后为NAK且这部分正好有32个字符,因此第一次写是正好接在读到这部分的后面。于是得到flag{c46d9e10-e9b5-4d90-a883-41cf163bdf4e}。再看第三次写,制表符对应的十进制ASCII码为9,即在字符串下标9处用ac覆盖,得到flag。

本文章来自https://www.cnblogs.com/iAmSoScArEd/p/10780242.html  未经允许不得转载!

3.usbasp

根据题意,这题应该和第一天的《saleae》一样使用saleae软件进行分析,且仍然为AoiSystem设备,仍应用SPI协议分析。

打开logicdata文件后首先观察波形,显然channel3应为使能信号。

注意到题干中有“一键暴打出题人”,猜测MOSI、MISO、时钟、使能4条线可能直接按0、1、2、3顺序即可,按默认设置很符合“一键”的说法。

直接按默认设置运行,未能得到结果。

再读题目,又注意到“升级固件”,猜测协议设置要修改。翻出第一天的saleae.logicdata进行对比,使能信号最可疑。

改它丫的!

运行看到flag。

导出,得到flag。

1.easyGo:

此题拿到手,拖进ida发现是内联编译的,函数名称都没了,遂从程序找入口,运行程序

出现字符串Try again,在ida中搜索,根据交叉引用来到如下图处,大概可以看出输入和输出的地方

尝试点了函数附近的变量,,,,flag竟然以明文在内存中存放,用脚本提取即得到flag

2.Bbvvmm:

比赛一开始就看这道题,杠了整整一天,经验少,走了很多弯路,下面讲思路:

拖入ida,动态调试各个流程跟进弄清函数作用,刚开始没注意提示,盲目的在加密函数里花了大量时间,当看到提示后,立即搜索国密加密算法,找到SM4算法,下载源码,发现和题目的流程一模一样,那就好办了,下图为分析出来的一些函数:

可以看到这个函数把username的ascii拆开再用ascii保存

加密的结果经过base64编码,

解开base64:EF468DBAF985B2509C9E200CF3525AB6

用网上代码解密(密钥就在题目主函数里),然后合成ascii:

得到:6 2 6 1 6 4 7 2 6 5 7 2 3 1 3 2

即badrer12

我以为这就完了,想着password随便输

噩梦才刚刚开始:

另一个条件根据题目名看出和vm相关,对这一块了解不多,只能慢慢分析,分析出刚开是初始化函数的结构,

分析函数跳转过程,尝试分析op对应函数的用途,然后就在挣扎中分析了一下午,难度太大,很绝望。

然后就放弃分析流程,开始打算找规律,将ida栈视图调整为虚拟指令的sp(很容易找),把断点下在call上,初始输入的password为123456

随着程序运行,在栈视图可以跟踪到这几个数的ascii,发现

31->49,32->4B,33->49,34->4F,35->49,36->4B,判断点的值则是对应值相加的结果

规律并不明显,尝试把输入和对应的数字异或,发现其在栈上出现了,而且每个都出现了;

31xor49 = 78, 32xor4B = 79,即找到的对应的数字是有78和31异或得到的,其余同理,为了让判断点的值为0,可输入78,79等,这样和栈中的数异或依然为0,即78,79等代表的字符就为正确密码。即xyz{|}

所有信息都在栈中,可以很容易看出规律

拿到密码本地测试成功,但nc却不行,排除题目原因,只能是疏忽了什么,看了下代码,username是用scanf以%9s读入的,而输入username只有8个字符,估计是第9个字符没读上,遂用pwntools连接,在username后添\x00,成功得到flag

本文章来自https://www.cnblogs.com/iAmSoScArEd/p/10780242.html  未经允许不得转载!

转载于:https://www.cnblogs.com/iAmSoScArEd/p/10780242.html

2019年第十二届全国大学生信息安全实践创新赛线上赛Writeup相关推荐

  1. 计算机弹奏卡布奇诺,计算机学院信息安全技术协会卡布奇诺加糖队在第十二届全国大学生信息安全竞赛中喜获佳绩...

    7月27号,第十二届全国大学生信息安全竞赛--创新实践能力赛在电子科技大学圆满结束.我校信息安全技术协会卡布奇诺实验室派出2支队伍参加本次竞赛,并在指导老师刘朝晖的精心指导下获得全国三等奖的好成绩. ...

  2. 第十二届全国大学生信息安全竞赛-RE部分WP(目前前两题,待更)

    RE2-bbvvmm 分析 拖入IDA,题目流程基本呈现,直接看到最后的check 这里即,用户名和密码都在此验证.密码最终得到的结果在ptr+25,而用户名得到的结果,像是经过一系列字符处理,最终与 ...

  3. 第十二届全国大学生信息安全竞赛总结与反思

    虽然国赛已经过去有一段时间了,但是一直没有时间对题目进行总结反思,利用暑假这段时间,开始进行一下这个工作. 首先是MISC,这次的题目让我猝不及防,因为题目需要用到Saleae Logic进行数据分析 ...

  4. 第十二届全国大学生智能汽车竞赛获奖名单

    第十二届全国大学生智能汽车竞赛获奖名单 序号 学校 队名 竞赛组别 获奖等级 1 北京科技大学 北京科技大学电磁普通组 电磁普通组 特等奖 2 中南民族大学 中南民大电磁一队 电磁普通组 特等奖 3 ...

  5. 中国电子计算机大学竞赛安徽分赛,我院学子喜获第十二届全国大学生数学竞赛安徽赛区15项一等奖...

    本网讯近日,第十二届全国大学生数学竞赛安徽赛区结果正式揭晓,我校数学与统计学院.电子信息与电气工程学院.物理与材料工程学院.计算机学院共72名学生获安徽赛区奖项,包括安徽省一等奖15项,二等奖15项, ...

  6. 第十二届全国大学生数学竞赛非数类试题

    第十二届全国大学生数学竞赛非数类试题 声明 本人是菜鸡,此贴非干货贴.只是作为自己比赛的一个记录和总结.(大佬们请不要diss我啊啊啊啊啊) 我开始准备的时间是比赛开始前两个星期,因为今年疫情比赛推延 ...

  7. 赛宁首创革新赛制助力人才培养 | 第十六届全国大学生信息安全竞赛-创新实践能力赛全面启动!

    ​​为积极响应国家网络空间安全人才战略,加快攻防兼备创新人才培养步伐,实现以赛促学.以赛促教.以赛促用,推动网络空间安全人才培养和产学研用生态发展,由国防科技大学与中国科学技术大学联合承办的第十六届全 ...

  8. 第十二届全国大学生服务外包创新创业大赛总结

    目录 前言 回顾 初赛 复赛 决赛 总结 前言 终于在前几天结束了第十二届中国大学生服务外包创新创业大赛,休息了几天,做个总结吧. 中国大学生服务外包创新创业大赛,是响应国家关于鼓励服务外包产业发展. ...

  9. 第十二届全国大学生数学竞赛A类真题+答案+详细讲解+知识点总结

    (无第六题) 自己写的第十二届A类的答案(有参考正确答案),最好配套讲解视频理解,搜B站:认真的小庄ʕ •ᴥ•ʔ欢迎关注! www.bilibili.com/video/BV1Xd4y1c7fu/?s ...

最新文章

  1. FFmpeg中可执行文件ffprobe用法汇总
  2. 小程序给视频加默认图片封面,点击播放视频并停止播放上一个视频
  3. 微信小程序插件功能页开发详细流程
  4. 服务器如何开启远程控制,远程控制命令设置方法介绍
  5. 【算法】最小的K个数
  6. java线程死亡_Java模因拒绝死亡
  7. 企业实战_04_MyCat常用配置文件详解
  8. 作者:陈卫, 男, 微软亚洲研究院高级研究员, 清华大学客座教授。
  9. Python批量检查docx文档中文本框的内容是否正确
  10. oracle查询保留小数点后三位,关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)...
  11. QCon技术干货:个推基于Docker和Kubernetes的微服务实践
  12. 计算两个坐标经纬度之间的距离(5种方式)
  13. 元素周期表排列的规律_元素周期表是根据什么排列的?
  14. 计算机控制面板设置命令,电脑的控制面板在哪打开,分享四种打开方法
  15. 【Swift 和 OC】
  16. Cisco SN查询工具
  17. Hive练习-面试题
  18. Spring--Spring配置
  19. 【硬刚大数据之面试篇】2021年从零到大数据专家面试篇之SparkSQL篇
  20. 范式存在定理及其证明

热门文章

  1. always on sql 收缩日志_SQL Server AlwaysOn日志收缩
  2. 判断python模型是否安装的办法
  3. 如何对加载的数个模型只进行transform呢
  4. java内存池实现_Netty精粹之轻量级内存池技术实现原理与应用
  5. 选择将正确答案的序号填在括号里_小学四年级数学第五单元训练题,答案非常详细,见过的都保存了...
  6. 用python操作MySQL
  7. 2021年5月软考准考证打印时间
  8. 《系统集成项目管理工程师》必背100个知识点-12项目整体管理的过程
  9. 笔记-信息系统开发基础-信息系统规划方法-大型新信息系统特征/企业系统规划步骤...
  10. 我的创业分享 之 不要轻易选择创业