You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mabbs/_posts/2021-09-06-offlinectf.md

7.3 KiB

layout title tags
post 记一次线下的信息安全比赛
CTF
渗透
信息安全

感觉还是现实中的渗透有意思……

起因

近些年来,我体验过线上的CTF,也体验过成为CTF的举办方,但是由于各种各样的原因,我没有参加过线下的这种信息安全比赛。正好最近四川某学校组织了一场线下的信息安全比赛,我们学校就让我和同学们去参加了。
在我们的队伍中,除了我之外,其他人都是信息安全专业的,这让我这个网络工程的人怎么办😂。不过好歹我还发现过漏洞自制过网站引擎,也在维护网站的过程中对网络攻防有一定的了解,加上上面的经验,至少我在知识面上还是能和信息安全专业的人比较的吧。

体验与过程

在这次比赛中有两部分的内容第一部分是CTF第二部分是内网渗透。除此之外线下和线上的区别有一点就是每个队伍会单独给靶机听说Flag好像有些题也是唯一的。另外有一个挺大的区别就是线下的电脑不允许联网包括手机信号也会屏蔽。不过据说貌似屏蔽的只有4G以下的信号和2.4G的WiFi信号与蓝牙信号5G移动网络和5GWiFi并没有受到影响另外也提供一台可联网的电脑可以限时查资料。所以这整的我就有点看不懂这个操作了。另外我通过社工的办法偷偷的整到了他们校园网的密码所以其实我可以正常连接到互联网。

CTF部分

虽然我玩过CTF但是实际上我对CTF还是一窍不通Crypto部分的题看不懂也不知道用什么工具Misc题简直就是感觉能做可惜工具不够。Web题还好至少会一点但是我还是不会SQL注入。其他什么Pwn会用Reverse之类的题就基本上和我们无缘了反正我们小组的人都不会另外也没工具。
其实说实话我到现在为止都看不出来CTF在现实生活中有什么用逆向和Web可能有点用Crypto这种来个正常点的AES加密能有人不靠暴力破解还有Misc那种是在考验什么脑筋急转弯吗我原创个加密算法就是有漏洞能有人会解
总之CTF感觉其实意思不大不过说是那么说呢我也还是分享些我能做出来然后有点意思的题吧。
在这次的Web题里面有一个挺有意思的就是MD5和它自身相等的一个题。不过目前貌似以人类的科技还没有找出这样的值。大概代码就是这样

<?php
include 'flag.php';
highlight_file("index.php");
if(isset($_GET["a"])){
  $a = $_GET["a"];
  if($a == md5($a)){
    echo $flag;
  }
}

虽然和原题不太一样不过大概意思就是这个意思。我看到之后最先想到的就是去百度找有没有这样的值不过最后似乎发现人类还没找到。接下来我就去搜php中MD5常见的漏洞最终发现就是在使用“==”判断的时候如果说后面的md5是“0e+一串数字”PHP就会认为它是0。我本来想找0e开头的md5也为0e的但是垃圾百度怎么找都只会找到像“QNKCDZO”这种垃圾值。那算了反正知道原理了我就直接自己写一个脚本算吧脚本内容如下

from hashlib import md5
for i in range(1,999999999):
    a = md5(("0e"+str(i)).encode()).hexdigest()
    if a[0:2] == "0e":
        try:
            int(a[2:])
            print(i)
        except:
            aaa = 0

因为时间比较紧张所以就随便写了一下反正能用就行。最终算出来第一个值是“0e215962017”然后就可以了因为它的md5是“0e291242476940776845150308577824”对于PHP来说相当于“0 = 0”。垃圾百度真的是除非直接搜这个值才能出现少量的结果其他真的是怎么都搜不到……
其他题我都不会做CTF就到这里吧。

内网渗透部分

内网渗透相比CTF来说还是有点意思尤其对我这种网络工程的人来说至少各种连接还是比较容易的。而且其实吧我也是在现实中玩过渗透的像学校网络都比比赛中的网络渗透起来简单。另外我也写过任意连接两个网络的文章,所以这一部分我做起来就会更加得心应手一些。
不过通过这次比赛我还是发现比赛本身并没有多大意义比如说我们比赛的时候进入的入口是一个叫做beescms的CMS然而比赛举办方也不给代码让我们盲猜这倒也不是不行在这个CMS的很多地方都能看到有可能会被SQL注入的点然而我们队伍用了很多办法试都失败了。最后才在百度上找到一篇文章说可以直接在主页POST一串

_SESSION[login_in]=1&_SESSION[admin]=1&_SESSION[login_time]=99999999999

这样的东西就可以直接修改Session绕过登录😓……我TM这东西不审计能找到这种漏洞最终才成功在上面找到了4个flag然后进入下一个内网。
在下一个内网里面有两个MySQL数据库和一个Tomcat网站另外还有一个网站上面写着后台管理但是看不出来是什么框架的。根据提示说那个Tomcat和数据库都是弱口令最后猜出来Tomcat的用户名是“tomcat”密码是“tomcat123”。数据库有个问题是我们能成功登录但是相关的工具不知道咋回事连不上代理……我因为不是信息安全的所以没有什么工具那个有工具的全局代理坏掉了不知道为啥连不上……所以没办法……另外那个数据库进去之后竟然也不给个flag也真是够小气的估计flag是在文件系统里面吧听说用UDF提权就可以。Tomcat是进入第二层网络的跳板我在上面搭了两层代理之后就可以进去那个网络了。在那个网络中有一个PHPOA的系统、一个Weblogic的网站和一个应该是Windows7的系统。 看起来只开了SMB的端口感觉好像应该是用永恒之蓝打……听大佬说好像是用IPC$?)不过具体的因为队友的工具连不上……所以就没办法。
PHPOA的那个资料不多不过我还是通过百度搜到了相关资料/ntko/upLoadOfficeFile.php这个路径有个任意文件上传的漏洞,我人麻了,这不给代码不给网络我难不成靠先知知道这个漏洞?
Weblogic那个网上虽然搜到了教程说可以用/console/css/%252e%252e%252fconsole.portal这个地址直接跳过登录,但是我没怎么用过那个平台不知道怎么部署也不知道怎么改密码所以最后也失败了……
到最后成绩还不错做了6道题给了1k多分还拿了一个一血和二血。

总结

最后比赛结束成绩还可以我们队拿了个三等奖。不过这次比赛之后我发现还是在现实中去破解个认证啊啥的比CTF有用多了去真实的环境搞渗透比在比赛中有意思多了所以真想玩就在现实中玩吧。当然对于这次机会我感觉也是有意思的通过Flag的方式在一定程度上来说能给我带来些乐趣也是挺不错的经历了。