---
layout: post
title: 记一次线下的信息安全比赛
tags: [CTF, 渗透, 信息安全]
---

  感觉还是现实中的渗透有意思……<!--more-->    
  
# 起因
  近些年来，我体验过[线上的CTF](/2019/12/16/ctf.html)，也体验过[成为CTF的举办方](/2020/11/24/createctf.html)，但是由于各种各样的原因，我没有参加过线下的这种信息安全比赛。正好最近四川某学校组织了一场线下的信息安全比赛，我们学校就让我和同学们去参加了。   
  在我们的队伍中，除了我之外，其他人都是信息安全专业的，这让我这个网络工程的人怎么办😂。不过好歹我还[发现过漏洞](/2021/05/15/vulnerability.html)，[自制过网站引擎](/2019/07/01/mabbs.html)，也在维护网站的过程中[对网络攻防有一定的了解](/2019/02/17/break.html)，加上上面的经验，至少我在知识面上还是能和信息安全专业的人比较的吧。   

# 体验与过程
  在这次比赛中有两部分的内容，第一部分是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
<?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”这种垃圾值。那算了，反正知道原理了我就直接自己写一个脚本算吧，脚本内容如下：   
```python
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来说还是有点意思，尤其对我这种网络工程的人来说至少各种连接还是比较容易的。而且其实吧我也是在现实中玩过渗透的，像学校网络都比比赛中的网络渗透起来简单。另外我也写过[任意连接两个网络](/2021/05/07/ssh.html)的文章，所以这一部分我做起来就会更加得心应手一些。   
  不过通过这次比赛，我还是发现比赛本身并没有多大意义，比如说我们比赛的时候进入的入口是一个叫做beescms的CMS，然而比赛举办方也不给代码，让我们盲猜，这倒也不是不行，在这个CMS的很多地方都能看到有可能会被SQL注入的点，然而我们队伍用了很多办法试都失败了。最后才在百度上找到[一篇文章](https://www.anquanke.com/post/id/98574)说可以直接在主页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的那个资料不多，不过我还是通过百度搜到了[相关资料](https://blog.csdn.net/weixin_39788986/article/details/110226286)说`/ntko/upLoadOfficeFile.php`这个路径有个任意文件上传的漏洞，我人麻了，这不给代码不给网络我难不成靠先知知道这个漏洞？   
  Weblogic那个网上虽然搜到了教程，说可以用`/console/css/%252e%252e%252fconsole.portal`这个地址直接跳过登录，但是我没怎么用过那个平台不知道怎么部署也不知道怎么改密码所以最后也失败了……   
  到最后成绩还不错，做了6道题，给了1k多分，还拿了一个一血和二血。   
  
# 总结
  最后比赛结束成绩还可以，我们队拿了个三等奖。不过这次比赛之后我发现还是在现实中去破解个认证啊啥的比CTF有用多了，去真实的环境搞渗透比在比赛中有意思多了，所以真想玩就在现实中玩吧。当然对于这次机会我感觉也是有意思的，通过Flag的方式在一定程度上来说能给我带来些乐趣，也是挺不错的经历了。
