做题一时爽,期末火葬场,一晚上水了三题,跪求期末不挂,老老实实去复习。祝各位表哥冬令营玩的开心。

中二的成长之路


很容易发现图片本身就是个压缩包,里面还有个图片,但是加密了

所以需要我们求出压缩包的密码。
观察图片,有个二维码,扫描得到密文3ukka4wZf2Q9H8PEI5YKFA==
继续观察图片

  1. 有红色字样,写着aes,说明是AES加密
  2. 有黑色加粗字样,写的QR,猜测key值与QR有关,后来根据题目提示,key应该是QR的MD5值
    写脚本解密密文
  1. from Crypto.Cipher import AES
    import binascii
    import base64
    obj2 = AES.new('66c35cd8077f7e1db5faefbc048a646a', AES.MODE_CBC,'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0')
    print obj2.decrypt(base64.b64decode('3ukka4wZf2Q9H8PEI5YKFA=='))

得到压缩包密码1Znmpr4jzChwxXqB,解密压缩包,得到另一个二维码

扫描得到密文bqIGBfOGuOsxLYV16OI7xRNAZrcFdYLJtHaDym2O7so=,
还是同样的套路,aes解密,其中aes的key是图片的名字s776051080zum92N,要注意的是这个密文包括了两段aes,分别解出XCTF{W0W_U_G0T_T和H3_FL4G},连在一起就是flag。

返老还童

大概看一下源码,发现密文格式是xxxx-xxxx-xxxx-xxxx,根据’-‘符号把密文分成了四组。
先对密文做了检验,必须是大小写字母或数字。

主程序是一大段等式判断,把其中两位参数a、b传到check_flag.html并调用了o0O0oo0o0o0o0oO函数检验是不是满足条件,其中a要大于b,a小于100。

  public static void b(String str) {
String[] split = str.split("-");
char[] toCharArray = split[0].toCharArray();
char[] toCharArray2 = split[3].toCharArray();
if (toCharArray[0] == toCharArray2[1] - 3 &&
toCharArray[3] == ((char) (toCharArray2[2] | 1)) &&
toCharArray2[2] % 2 != 1) {
a = toCharArray2[3] ^ 55; 91 108 l
if (toCharArray2[2] == toCharArray[2] + (toCharArray.length * 2) &&
toCharArray2[0] == toCharArray[0] - (toCharArray.length / 2) &&
toCharArray2[1] == ((char) (toCharArray[3] ^ 18)) &&
toCharArray[1] * 2 == toCharArray[2] - 8 &&
toCharArray2[3] == toCharArray[2]) {
toCharArray = split[1].toCharArray();
toCharArray2 = split[2].toCharArray();
if ((split.length * 3) + toCharArray[1] == toCharArray[3] &&
toCharArray2[1] * 2 == toCharArray[3] - 11) {
b = (toCharArray[2] - toCharArray2.length) ^ 113;
if (toCharArray[0] + toCharArray2[0] == 187 &&
toCharArray[0] + toCharArray2[3] == 210 &&
(toCharArray[3] ^ toCharArray[2]) == 47 &&
(toCharArray[0] ^ toCharArray[1]) == 15 &&
(toCharArray2[2] ^ toCharArray[1]) == 5 &&
a > b &&
a < 100) {
MainActivity.b.getSettings().setUserAgentString(MainActivity.b.getSettings().getUserAgentString() + ";" + a + ";" + b);
}
}
}
//d2lu-bmVy-Y7hp-bgtl
//100-50-108-117
//98-109-86-121
//89-55-104-112
//98-103-116-108



观察check_flag.html函数,

主要需要满足的条件是

a*a-b*b=8(a+b)
a-b=8
a*a+a*b+b*b>10000
a*a+a*b-b*b>10000
gcd(a,b)=7

,写脚本爆破,发现就一组满足条件

根据a,b的值带入程序方程组很容易就能求出所有密文的值d2lu-bmVy-Y7hp-bgtl,即为flag。

神秘的TXT

发现有三个横坐标,三个纵坐标,因为是mobile题目,猜测对应着手机键盘密码。

因为不知道坐标顺序,所以把8种可能的反转情况都列出来,一个一个试,其中有一个是对的

XCTF{974856321}
XCTF{932658741}
XCTF{398652147}
XCTF{178452369}
XCTF{712458963}
XCTF{314256987}
XCTF{136254789}
XCTF{796854123}

好像是第四个,忘了。

Xman冬令营writeup的更多相关文章

  1. Jarvis OJ - [XMAN]level1 - Writeup

    Jarvis OJ - [XMAN]level1 - Writeup M4x原创,转载请表明出处http://www.cnblogs.com/WangAoBo/p/7594173.html 题目: 分 ...

  2. Jarvis OJ - [XMAN]level3 - Writeup——ret2libc尝试

    这次除了elf程序还附带一个动态链接库 先看一下,很一般的保护 思路分析 在ida中查看,可以确定通过read函数输入buf进行溢出,但是并没有看到合适的目标函数 但是用ida打开附带的链接库,可以看 ...

  3. Jarvis OJ - [XMAN]level2 - Writeup

    简单利用"/bin/sh"夺权 简单看一下 放到ida中发现了"/bin/sh"串,和system函数,可以利用== 所以只要在vuln函数返回时跳转到syst ...

  4. Jarvis OJ - [XMAN]level1 - Writeup——简单shellcode利用

    100分的pwn 简单查看一下,果然还是比较简单的 放到ida中查看一下,有明显的溢出函数,并且在函数中打印出了字符串的地址,并且字符串比较长,没有NX保护 所以我们很容易想到构造shellcode, ...

  5. Jarvis OJ - [XMAN]level0 - Writeup

    差不多最简单的pwn了吧,不过本菜鸟还是要发出来镇楼 分析一下,checksec 查看程序的各种保护机制 没有金丝雀,没有pie 执行时输出Hello,World,在进行输入,溢出嘛  开工 丢到id ...

  6. xman随机数相关题目

    参加xman夏令营,大佬给我们带来了密码学课程.其中随机数部分感受颇深,记录下几个脚本. 1. 以时间作为种子的随机数 https://www.jarvisoj.com/ 的[xman2019]bab ...

  7. Jarvis OJ - 栈系列部分pwn - Writeup

    最近做了Jarvis OJ的一部分pwn题,收获颇丰,现在这里简单记录一下exp,分析过程和思路以后再补上 Tell Me Something 此题与level0类似,请参考level0的writeu ...

  8. [XMAN筛选赛](web)ctf用户登录

    0x00 题目概述 就只写了几道web题,有些考察点比较明显,所以个人感觉来说web总体不难. 一航的writeup写得差不多,我这写个他没写的wirteup. 看题: 链接点进去是一个登录页面,习惯 ...

  9. 2016第七季极客大挑战Writeup

    第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...

随机推荐

  1. python3.6 错误: ModuleNotFoundError:No module named "Crypto"

    原因及处理:在使用python是经常会用到import一个第三方库,但是有时候会提示某个模块不存在,如Crypto其实是因为Python3里面这个模块的名字变了, pip install pycryp ...

  2. 【wqs二分 || 决策单调性】cf321E. Ciel and Gondolas

    把状态看成层,每层决策单调性处理 题目描述 题目大意 众所周知,贞鱼是一种高智商水生动物.不过他们到了陆地上智商会减半.这不?他们遇到了大麻烦!n只贞鱼到陆地上乘车,现在有k辆汽车可以租用.由于贞鱼们 ...

  3. 小猿圈-IT自学人的小圈子 https://book.apeland.cn/details/54/

    笔记链接   https://book.apeland.cn/details/54/ 学习视频   https://www.apeland.cn/python

  4. HDU 6044 - Limited Permutation | 2017 Multi-University Training Contest 1

    研究一下建树 : /* HDU 6044 - Limited Permutation [ 读入优化,笛卡尔树 ] | 2017 Multi-University Training Contest 1 ...

  5. Binary Stirling Numbers

    http://poj.org/problem?id=1430 题目: 求 第二类 斯特林数 的 奇偶性  即 求 s2 ( n , m ) % 2 : 题解: https://blog.csdn.ne ...

  6. fhq Treap(无旋Treap)

    先吹一波fhq dalao,竟然和我一个姓,我真是给他丢脸. 昨天treap就搞了一下午,感觉自己弱爆了.然后今天上午又看了一个上午的无旋treap再次懵逼,我太弱了,orzorz. 所以写个博客防止 ...

  7. 7.6 T1 深度优先搜索(dfs)

    深度优先搜索(dfs) [题目描述] sol:50pts随便写写,就是大众分了,直接n2dpOK,100分要找点规律,需要数学头脑 官方题解 //#include <bits/stdc++.h& ...

  8. PHP处理kafka消息队列

    在安装php-kafka 扩展后,就可以开始编写 php 消费消息的脚本了,php-rdkafka 扩展提供了几种消息处理的方式 低级方式(Low level) 这种方式没有消费组的概念 <?p ...

  9. Spring Boot教程(三十四)使用Redis数据库(2)

    除了String类型,实战中我们还经常会在Redis中存储对象,这时候我们就会想是否可以使用类似RedisTemplate<String, User>来初始化并进行操作.但是Spring ...

  10. Oracle实现分页,每页有多少条记录数

    分页一直都是关系数据库的热门,在数据量非常多的情况下,需要根据分页展示,每页展示多少条记录,以此减轻数据的压力; 1实现原理,根据rownum取记录数,根据公式(页数-1)*每页想要展示的记录数 AN ...