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的更多相关文章

  1. 2017湖湘杯复赛writeup

    2017湖湘杯复赛writeup 队伍名:China H.L.B 队伍同时在打 X-NUCA  和 湖湘杯的比赛,再加上周末周末周末啊,陪女朋友逛街吃饭看电影啊.所以精力有点分散,做出来部分题目,现在 ...

  2. CTF 湖湘杯 2018 WriteUp (部分)

    湖湘杯 2018 WriteUp (部分),欢迎转载,转载请注明出处! 1.  CodeCheck(WEB) 测试admin ‘ or ‘1’=’1’# ,php报错.点击登录框下面的滚动通知,URL ...

  3. 【CTF】2019湖湘杯 miscmisc writeup

    题目来源:2019湖湘杯 题目链接:https://adworld.xctf.org.cn/task/answer?type=misc&number=1&grade=1&id= ...

  4. 2019 湖湘杯 Reverse WP

    0x01 arguement 下载链接:https://www.lanzous.com/i7atyhc 1.准备 获取到信息: 32位的文件 upx加密文件 在控制台打开文件 使用"upx ...

  5. Bugku Writeup —文件上传2(湖湘杯)

    我们先来看下题目,题目说明是文件上传 我们可以尝试通过构造payload来进行测试 php://filter/read=convert.base64-encode/resource=flag 获取到f ...

  6. 湖湘杯2020 writeup

    这个平台中间卡的离谱,卡完过后交了flag分还掉了 Web 题目名字不重要 也算是非预期吧,赛后y1ng师傅也说了因为要多端口环境必须这样配,预期解很难 NewWebsite 后台弱口令admin a ...

  7. 2018湖湘杯web、misc记录

    1.题目名 Code Check 打开题目,右键发现有id参数的url,简单base64解码以后发现不是明文,说明利用了其他的加密方式,那么应该会有具体的加密方式给我们,于是试试常见的文件泄露,可以发 ...

  8. 湖湘杯2020_ReMe

    查壳后发现是由Python2.7环境下编译得到的exe可执行文件 由此想到可将exe转为pyc文件再反编译成py文件 且该方法只适用于py2 无混淆 因为py3的字节码结构有些许变化 step1: 在 ...

  9. 2017年蓝桥杯B组C/C++决赛题解

    2017年蓝桥杯B组C/C++决赛题目(不含答案) 1.36进制 ok 求36进制,类比二进制转10进制,36^3 + 36^2 + 36^1 + 36^0 2.磁砖样式 ok dfs搜索 我自己写的 ...

随机推荐

  1. [问题记录]父元素position:relative的深坑

    个人博客迁移至:https://blog.plcent.com/欢迎大家访问 今天在写全屏切换的时候,发现一个问题就是切换时只能滚动第一屏,其他屏死都不动, 全屏滚动的原理: 是每次滚动父元素向上滚动 ...

  2. 03Vue事件

    Vue提供了事件的绑定,方法写在methods对象中. 绑定dom中有两种方法: 方法一:v-on:click/dblclcick/mouseOver/mouseOut="方法名" ...

  3. LINUX 笔记-cal 命令

    显示当前月份日历 命令:cal 显示指定月份的日历 命令:cal 9 2012 显示2016年日历 命令:cal 2016

  4. 如何用CropBox实现头像裁剪并与java后台交互

    如何用CropBox实现头像裁剪并与java后台交互 参考网站:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob 参考: http://blo ...

  5. LeetCode 287. Find the Duplicate Number (找到重复的数字)

    Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro ...

  6. LeetCode 228. Summary Ranges (总结区间)

    Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...

  7. Idea报错Check $M2_HOME environment variable and mvn script match.

    -Dmaven.multiModuleProjectDirectory=$M2_HOME

  8. Windows环境下多线程编程原理与应用读书笔记(8)————信号量及其应用

    <一>线程间同步原因 线程间竞争共享资源: 线程间为完成某个任务而协作: 通过互斥量可以实现线程间由于竞争所需要的同步,通过事件可以实现线程间由于协作所需要的同步. 信号量很好地将互斥量和 ...

  9. HTML5 Geolocation API工作原理[转载]

    大家都知道,HTML5 Geolocation 可以使用 IP 地址.基于 Web 的数据库.无线网络连接和三角测量或 GPS 技术来确定经度和纬度. 问题: 在一个基于地理位置服务的个人业余项目(小 ...

  10. python实现查有道词典

    因为要考英语四级,所以我今天一大早就起来被英语单词,但是作为英语渣渣的我,只能是在网页上挨个查单词的意思.查的多了,心生厌倦,便想着如何才能在终端下查单词,那样速度不就很快了? NOW,我仔细观察每次 ...