2017湖湘杯Writeup
RE部分
0x01 Re4newer
解题思路:
Step1:die打开,发现有upx壳。

Step2:脱壳,执行upx -d 文件名即可。

Step3:IDA打开,shift+F12看字符串。

点进去,F5看伪代码如图。

Step4:逆算法。点进sub_401080可以看到关键函数的算法。

是简单的取字节异或,比较对象是v4-v14的值。

可以看到,这里可以分成44个两位16进制的数,并且顺序与箭头所指的数的大小有关。
Step4:得到flag。
pyhon脚本如下:
a = [0x45,0x43,0x4E,0x44,
0x13,0x4A,0x76,0x59,
0x71,0x4B,0x7D,0x51,
0x54,0x7D,0x63,0x7D,
0x7D,0x5B,0x50,0x11,
0x52,0x4F,0x4B,0x51,
0x70,0x7D,0x47,0x4E,
0x67,0x67,0x70,0x70,
0x7D,0x57,0x7D,0x67,
0x71,0x51,0x63,0x52,
0x5F,0x56,0x13,0x7D]
flag = ''
for i in range(11):
for j in [3,2,1,0]:
flag += chr( a[i*4+j]^0x22)
print(flag)
0x02 简单的android
解题思路:
Step1:直接apk_tool打开,点jadx,得到flag。
MISC部分
0x03 流量分析
解题思路:
Step1:直接打开,文件->导出对象->HTTP,可以看到flag.zip,保存下来。

Step2:flag.zip里面有很多数字,目测是RGB,于是写脚本形成图片。


Step3:从上图可以猜想图片是宽为887,长为111。
脚本如下:得到flag。
#-*- coding:utf-8 -*-
from PIL import Image
import re
x = 887 #x坐标 通过对txt里的行数进行整数分解
y = 111 #y坐标 x*y = 行数
im = Image.new("RGB",(x,y))#创建图片
file = open('ce.txt') #打开rbg值文件
#通过一个个rgb点生成图片
for i in range(0,x):
for j in range(0,y):
line = file.readline()#获取一行
rgb = line.split(",")#分离rgb
im.putpixel((i,j),(int(rgb[0]),int(rgb[1]),int(rgb[2])))#rgb转化为像素
im.show()
0x04 MISC200
解题思路:
压缩包里一个apk和一个疑似被加密的flag,先把apk拖到apktools里看下源码,

可以看到一个EncryptImageActivity,貌似有点用
可以看到很useful的函数

继续往下看

这就是对文件进行加密的具体函数了,可以看到,使用key对文件逐位异或得到cipherText,联系上面的关键函数,可以得知,这个程序的工作流程:
1选择一个文件
2输入密码
3使用密码的md5值对原始文件进行逐位异或
4将加密后的cipherText写入新文件并输出
由于异或的特性,使用password的md5值对已经加密的文件再次加密能够得到原来的文件,所以我们的任务就是逆向找到password了!!
上一句划掉
那么麻烦干嘛,扔到手机里运行一下(才不说我专心逆向找password,怕手机被加密另开了手机分身运行应用呢),发现密码已经是“记住”状态了,把flag.encrypted扔进去点击encrypt就会提示成功的创建了文件,只要提出来在Linux里直接能显示出图片了。

Flag:
出题人你出来,自己选砖头!神™字迹辨认
0x05 Misc300
解题思路:
Step1:文件是pxl后缀,于是上网搜了一下。
>>> import pickle
>>> f = open('pixels.jpg.pkl')
>>> print(pickle.load(f))
用这个脚本打开文件,发现是一堆坐标,联想到是黑白图片的坐标,出现的位置为1,否则为0。

Step2:将这堆数据处理成如图形式,执行第二张图片所示的代码,可以得到一张图片。


将所得图片倒置反色得到如图

可知是一个卡通人物,是熟悉的Bill Watterson创造的,于是得到flag{小写名字}。
WEB部分
0x06 Web200
解题思路:
Step1:看到题目是文件上传,于是构造payload试试。

Step2:
http://118.190.87.135:10080/?op=php://filter/read=convert.base64-encode/resource=flag
得到flag的base64编码,解码得到flag。
总结
1.这次的Re主要就试了一下脱壳,最后那道400分的pyc怼不出来....
2.Misc部分第一次做流量包分析的题目,也算学习了一波,这次有两道题都是要用脚本或库形成图片的;
0x03是需要将所给的RGB值转换成图片,0x05是需要将坐标转换为黑白图片中RGB为0或1;
这里附上M4x大佬的博客http://www.cnblogs.com/WangAoBo/p/6950547.html
3.Web部分太菜了就搞了一道,文件上传之前也看到过类似的题,在钿神的提示下拿flag.php的内容就A了。
作者: LB919
出处:http://www.cnblogs.com/L1B0/
该文章为LB919投入了时间和精力的原创;
如有转载,荣幸之至!请随手标明出处;
2017湖湘杯Writeup的更多相关文章
- 2017湖湘杯复赛writeup
2017湖湘杯复赛writeup 队伍名:China H.L.B 队伍同时在打 X-NUCA 和 湖湘杯的比赛,再加上周末周末周末啊,陪女朋友逛街吃饭看电影啊.所以精力有点分散,做出来部分题目,现在 ...
- CTF 湖湘杯 2018 WriteUp (部分)
湖湘杯 2018 WriteUp (部分),欢迎转载,转载请注明出处! 1. CodeCheck(WEB) 测试admin ‘ or ‘1’=’1’# ,php报错.点击登录框下面的滚动通知,URL ...
- 【CTF】2019湖湘杯 miscmisc writeup
题目来源:2019湖湘杯 题目链接:https://adworld.xctf.org.cn/task/answer?type=misc&number=1&grade=1&id= ...
- 2019 湖湘杯 Reverse WP
0x01 arguement 下载链接:https://www.lanzous.com/i7atyhc 1.准备 获取到信息: 32位的文件 upx加密文件 在控制台打开文件 使用"upx ...
- Bugku Writeup —文件上传2(湖湘杯)
我们先来看下题目,题目说明是文件上传 我们可以尝试通过构造payload来进行测试 php://filter/read=convert.base64-encode/resource=flag 获取到f ...
- 湖湘杯2020 writeup
这个平台中间卡的离谱,卡完过后交了flag分还掉了 Web 题目名字不重要 也算是非预期吧,赛后y1ng师傅也说了因为要多端口环境必须这样配,预期解很难 NewWebsite 后台弱口令admin a ...
- 2018湖湘杯web、misc记录
1.题目名 Code Check 打开题目,右键发现有id参数的url,简单base64解码以后发现不是明文,说明利用了其他的加密方式,那么应该会有具体的加密方式给我们,于是试试常见的文件泄露,可以发 ...
- 湖湘杯2020_ReMe
查壳后发现是由Python2.7环境下编译得到的exe可执行文件 由此想到可将exe转为pyc文件再反编译成py文件 且该方法只适用于py2 无混淆 因为py3的字节码结构有些许变化 step1: 在 ...
- 2017年蓝桥杯B组C/C++决赛题解
2017年蓝桥杯B组C/C++决赛题目(不含答案) 1.36进制 ok 求36进制,类比二进制转10进制,36^3 + 36^2 + 36^1 + 36^0 2.磁砖样式 ok dfs搜索 我自己写的 ...
随机推荐
- Python学习笔记(十三)
Python学习笔记(十三): 模块 包 if name == main 软件目录结构规范 作业-ATM+购物商城程序 1. 模块 1. 模块导入方法 import 语句 import module1 ...
- BZOJ-3709-[PA2014]Bohater(贪心)
Description 在一款电脑游戏中,你需要打败n只怪物(从1到n编号).为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值.任何时候你的生命值都不能降 ...
- 读Zepto源码之Data模块
Zepto 的 Data 模块用来获取 DOM 节点中的 data-* 属性的数据,和储存跟 DOM 相关的数据. 读 Zepto 源码系列文章已经放到了github上,欢迎star: reading ...
- Win10开启“上帝模式”
win10的上帝模式就是win10的全部功能展示模式,因为功能太强大,所以被戏称为"上帝模式".要开启win10的上帝模式,需要按下面的步骤来操作:1.在window桌面新建一个普 ...
- Redis 学习笔记-入门
Redis特点: 1.速度快 2.支持丰富的数据类型:字符串.哈希列表.集合 3.操作具有原子性,所有Redis操作都是原子操作 4.多实用工具,可应用如缓存,消息队列,应用程序中任何短期数据,如we ...
- 深入理解Java中的迭代器
迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节. 概述 Java集合框架的集合类,我们有时候称之为容器.容器的种类有很多种,比如ArrayList.Li ...
- Android+ESP8266+路由器实现远程控制(基于花生壳域名方式访问)
x先说一下实现的功能,其实就是远程控制 和这篇文章的控制 http://www.cnblogs.com/yangfengwu/p/5295632.html 应该说是这篇文章的升级,解决这篇文章由 ...
- 从零起步学python计划及感想
从纯传统bi转型过来的技术顾问,比较有优势的是对业务的熟悉,对数据有敏感度,熟悉数据模型.但是长年累月基本都是用sql处理问题.目前还没有经历过sql解决不了的问题,一个sql解决不了就用临时表,几个 ...
- SpringBoot初体验(续)
1.如果你还不知道SpringBoot的厉害之处,或者你不知道SpringBoot的初级用法,请移步我的上一篇文章,传送门 2.SpringBoot中的表单验证 所谓验证,无非就是检验,对比,正如ja ...
- my dream
我的梦想(践踏一切可以践踏的,放弃一切必须放弃的,然后朝着自己认为的方向努力,只要自己认为对了就可以了(但是最好能考虑方面全一点,这就叫尽力了)我想要的生活怎么那么醉我想要的食物怎么那么碎我最爱的女孩 ...