2017Pwnhub杯-CUIT校赛

这是CUIT第十三届校赛啦,也是我参加的第一次校赛。

在被虐到崩溃的过程中也学到了一些东西。

这次比赛是从5.27早上十点打到5.28晚上十点,共36小时,中间睡了五六个小时吧。(我还算是我们队休息时间比较长的了)|(•_•) |•_•) |_•) |•) | )

这次我队总分1500,校内排名第六。

在下贡献了四道题目,总计450。

MISC: 1

RE: 2

PWN: 1

杂项就不多说了,说一下RE和PWN吧。

先放官方给出的wp,我对题目不一样的看法会放在后面作为参考。


RE100:

引用Nu1l的wp

1 t = [157,151,141,181,132,,187,251,186,145,140,144,189,253,145,128,254,188,145,141,254,170,171,179]
2 s=''
3 for v int t:
4     for i in xrange(0x100):
5         if(~(~(i | 0xCE) | ~(~i | 0x31))&0xff == v:
6             s+=chr(i)
7 print s

RE150:

首先修复一下该程序:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <fcntl.h>
 4 #include <unistd.h>
 5 #include <assert.h>
 6 #include <elf.h>
 7
 8 #define ENTRY 0x08048320
 9 #define FILE_OFF 0x320
10 #define COUNT 0x432
11
12 int main(int argc,char *argv[]){
13     Elf32_Ehdr ehdr;
14     unsigned char buf[COUNT] = {0};
15     assert(argc == 2);
16
17     int fd = open(argv[1],O_RDWR);//打开文件
18     assert(fd>0);
19
20     assert(lseek(fd,0,SEEK_SET)!=-1);//读取elf头
21     assert(read(fd,&ehdr,sizeof(ehdr)) == sizeof(ehdr));
22     ehdr.e_entry = ENTRY;//修改入口地址
23
24     assert(lseek(fd,0,SEEK_SET)!=-1);//回写elf头
25     assert(write(fd,&ehdr,sizeof(ehdr)) == sizeof(ehdr));
26
27     //解密
28     assert(lseek(fd,FILE_OFF,SEEK_SET)!=-1);//读取被加密的代码
29     assert(read(fd,buf,COUNT) == COUNT);
30     int i = 0;
31     while(i<COUNT){
32         buf[i] = (buf[i]^66)<<5 | (buf[i]^66)>>3;
33         i++;
34     }
35
36     assert(lseek(fd,FILE_OFF,SEEK_SET)!=-1);//写入
37     assert(write(fd,buf,COUNT) == COUNT);
38
39     close(fd);
40
41     return 0;
42 }

然后IDA中去花,分析得到算法。

 1 #include <stdio.h>
 2
 3 unsigned char code[]={0x73,0x8D,0xF2,0x4C,0xC7,0xD4,0x7B,0xF7,0x18,0x32,0x71,0xD,0xCF,0xDC,0x67,0x4F,0x7F,0xB,0x6D,0};
 4
 5 int main(void){
 6     int i = 0;
 7
 8     while(code[i]){
 9         code[i] = code[i]^32;
10         i++;
11     }
12
13     i = 0;
14     while(code[i]){
15         code[i] = ((code[i]^i)<<(i%8)) | ((code[i]^i)>>(8 - (i%8)));
16         i++;
17     }
18
19     printf("%s\n",code);
20     return 0;
21 }

最后得到flag:

SYC{>>Wh06m1>>R0Ot}

pwn50:

Escape from Jail

python的Jail(python沙箱逃逸),过滤是这样的。

通过查看python的builtins,得知可以使用getattr去调用函数。

getattr(os,"system")("/bin/sh")

起shell之后直接读flag就行了。

接下来说一下我在解题过程中的一些不一样的东西:


RE100:

上面最后出flag的时候用的是穷举,但是我发现程序中关键算法的部分本身就是可逆的。

flag[i] = ~(~(flag[i] | 0xCE) | ~(~flag[i] | 0x31));

这是他原来的算法。

在我测试过程中,发现它等同于另一条语句。

flag[i] ^= 0xCE

所以完全可以不用穷举,可以直接利用以下代码。

 1 #include <stdio.h>
 2 int main(void){
 3
 4     int flag[]={
 5         0x9d,0x97,0x8d,0xb5,0x84,0xbb,0xfb,0xba,0x91,0x8c,0x90,0xbd,0xfd,0x91,0x80,0xfe,0xbc,0x91,0x8d,0xfe,0xaa,0xab,0xb3
 6     };
 7     int i=0;
 8     for ( i = 0; i < 23; ++i ){
 9     flag[i] = ~(~(flag[i] | 0xCE) | ~(~flag[i] | 0x31));
10     }
11     for(i=0;i<23;++i)
12         printf("%x ",flag[i]);
13
14
15     return 0;
16 }

RE150:

我在解题时并没有去试着完全修复ELF文件。

我利用gdb在解密代码后下断,然后dump出解密后的关键代码。

再将这段代码替换到原文件对应的部分,再到IDA中进行分析。

由于中间带花的部分我不会去......所以最后手动翻译了整段代码。(很傻,不建议像我这样做。)

后面的做法就一样啦。

PWN50:

前面差不多,我也用了getattr这个函数去调用system,

但是最后我并没有去拿shell,而是用"cat *"

列出了所有文件的内容。(因为这里还过滤掉了  .  所以不能"cat flag.txt")

转载于:https://www.cnblogs.com/7o8v/p/6920348.html

2017CUIT校赛-线上赛相关推荐

  1. 2019年第十二届全国大学生信息安全实践创新赛线上赛Writeup

    本文章来自https://www.cnblogs.com/iAmSoScArEd/p/10780242.html  未经允许不得转载! 1.MISC-签到 下载附件后,看到readme.txt打开后提 ...

  2. 首届“陇剑杯”网络安全大赛线上赛圆满结束

    9月14日,集结了各行业领域3020支战队.11135名网络安全精英的首届"陇剑杯"网络安全大赛线上赛圆满结束,成功拉开将于9月25日在甘肃兰州新区举行的总决赛战幕.届时,涵盖网络 ...

  3. 水下机器人线上赛战火升级,目标检测、通信赛项等你来战

    权威目标检测.水声通信赛事火热报名中,更有35万奖金和自然科学基金委认证证书等你来拿! 2021年全国水下机器人大赛-线上赛战火升级啦!新上线水下光学目标检测产业应用.水下声学通信应用产业两大算法赛项 ...

  4. 第十六届全国大学生智能汽车竞赛总决赛 AI视觉组线上赛细则

    简 介: 本文对于参加2021年第十六届智能车竞赛全国总决赛线上比赛室内AI视觉组比赛细则. 关键词: 智能车竞赛,线上比赛,室内视觉AI 一.比赛方式   由于AI视觉组的特殊识别任务,比如分赛区的 ...

  5. 第十六届全国大学生智能汽车竞赛总决赛 AI视觉组线上赛细则草案 - 初步版本

    简 介: 关于室内AI视觉组在线上比赛的特殊性,本文由逐飞起草的比赛细则给出了比赛过程的详细描述. 关键词: 智能车竞赛,室内视觉,线上比赛 §01 比赛方式   由于AI视觉组的特殊识别任务,比如分 ...

  6. 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)...

    2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...

  7. 2022全国水下机器人大赛国际线上赛来啦!“水下感知赛、通信赛”等你来战!

    为打造国内外水下机器人领域顶端赛事,激励高校.科研机构和行业顶尖行业通过大赛的实践应用,加快科学技术转化和创新应用验证,为我国海洋经济和海洋安全做出更大的贡献. 为此,由中国国家自然科学基金委员会指导 ...

  8. 第十七届智能视觉组线上赛比赛流程及相关补充说明

      线上赛规则及流程发布后陆续收到参赛同学和老师们的建议,一部分建议可以使得竞赛过程更完善,故增加此文档对智能视觉组的流程及相关细节进行补充说明. 一.场地准备   在"第十七届全国大学生智 ...

  9. 关于2020西门子杯工业自动化线上赛总结(初赛过控篇)

    关于2020西门子杯工业自动化线上赛总结(初赛过程控制篇) 初赛赛程回顾 PID控制器 三个基本实验 液位+温度?PID调参从入门到放弃 总结与感想 初赛赛程回顾 本来的确不想回顾这个比赛的,自己第一 ...

最新文章

  1. mysql表文件被删_mysql表物理文件被误删的解决方法
  2. iOS混淆 -- 生成define 替换名
  3. 巧用linux版powershell,管理linux下的docker
  4. [转贴]Silverlight Socket 实现收发信息
  5. 中断服务程序设计实验
  6. Lync 2010迁移Lync 2013 PART5:支持旧版Lync
  7. 获取分辨率函数是什么_浅析EDSR——深度学习超分辨率算法
  8. [渝粤教育] 西安建筑科技大学 技术经济学 参考 资料
  9. DGV:人类基因组结构变异数据库
  10. [算法总结] LCA倍增法 dfs
  11. 计算机网络与新媒体就业前景,2018网络与新媒体专业就业前景和就业方向分析...
  12. 解决container_linux.go:262: starting container process caused:
  13. 图片大小自适应垂直居中的方法
  14. 【图表示学习】Graph Representation Learning 读书笔记(一)
  15. python爬取个人信息_Python爬取个人微信朋友信息操作示例
  16. 关于:-1: error: collect2.exe: error: ld returned 1 exit status和The process was ended forcefully.解决方法
  17. B2型水面线计算(含python代码)
  18. Windows系统封装初始化工具sysprep
  19. 低延迟音视频传输技术在直播领域的应用
  20. 作业:山姆公司相开展“会员制营销”和“EMAIL营销”

热门文章

  1. Android 热修复实现原理
  2. 超强干货!7个腾讯最常用的用户研究方法
  3. 通达信公式改成python_python转换通达信股票数据
  4. 2018上海国际专业灯光音响展录音与制作专区来袭
  5. 计算机传感器毕业设计,基于压电传感器的心率计的计算机设计与仿真毕业设计论文.doc...
  6. 获取商品历史价格信息api
  7. 自然用户界面设计:NUI的经验教训与设计原则
  8. 有哪些简单、免费、适合中小型企业的 CRM 软件?
  9. 苹果获iPhone 4设计和MagSafe电源相关专利-铁石社区-TA云测试平台
  10. UG NX 12 视图布局