电子设计竞赛-信安邀请赛writeup

admin 2022年5月17日12:09:48评论19 views字数 8533阅读28分26秒阅读模式

0×00
好久好久没写东西了 中间其实想发两篇省赛的writeup的 可是环境没开 要等之后再次开放我会补上两篇 大概9月的时候
这次是去了西电去参加的电赛 和h3ll0m4n还有whitesilt一起去动态演示 也就是搞站 还有琪琪去做软件 一起去玩耍
比赛是持续了24个小时 从早上9点到次日9点 关在小黑屋里 全封闭的模式 还有手机屏蔽的装置 手机也没法用 比赛很接近于实战 都是拿靶机的形式 比赛限制了外网 只有几台机子有外网 需要外网时 要计时 超时要扣分 flag分为几种 100 200 500 提交flag还要写上报告

0×01 寻找靶机
比赛一开始就没有进展 一开始9点的时候 只是宣布了比赛开始 然后也没有指定靶机什么的 需要我们自己去寻找靶机目标 接入网络之后 自动分配的网段是在169.254的网段,然后我们的思路 自然就是寻找存活的靶机 可是 用nmap扫了整个网段也没法发现什么 就发现了4台机器 3台是我们的自己的 还有一台也没发现什么 估计是网关之类的
还去扫描的一些内网的网段 比如10.10 还有192.168等 但是也没有什么发现 就这样子一个小时多已经过去了 10点多 除了杭电的大神 大家还是没有什么进展 这时候竞赛组公布了一个新的提示 提示说要靠嗅探寻找靶机 既然说要嗅探 我就开了cain试了一下 发现没有什么效果 就用wireshark来抓了一会包观察了一下 因为中间还有我们自己还在扫描 有些噪声 后来把那些nmap停了之后 再去wireshark抓包 就比较好观察了
抓包发现了 有一个10.10.0.102的地址 在发10.10.0.254的ARP包 然后我们就发现了这个奇怪的ip 10.10.0.102 和 10.10.0.254 直接访问上去 发现没有什么 然后改了同一段的ip 设置好掩码 h3ll0m4n发现ip冲突了 这说明这个ip是之前有人占用着的 就是这个了 需要修改自己的本地网段 然后去访问。
发现了10.10.0.101存在了一个80端口 上面有一个resourcespace的cms 这时也就是11点多的时候 主办方放出了靶机的ip的base64的加密的密文 是10.10.0.100到10.10.0.103这4台机子 总算是寻找到了目标 已经花去了两个小时

0×02 iis+oracle
10.10.0.100 这一台机子 上面的配置是iis6.0 还有开放了Oracle的端口 80端口 并没有什么页面 只是一个建设中的提示 然后oracle的 我之前在省赛中遇到过 这次又跪了 砸过oracle的漏洞 还去尝试爆破弱口令 没有尝试出来 比赛结束也没有从这台机子上得分 只有kingdom做出来了 最后比赛完 交流了一下 他告诉我 发现是ms08067的漏洞 还有 oracle是authkey漏洞 我们一开始也砸过 在msf里有 可能是参数没有弄对 或者是需要自己修改代码 最后没搞出来

0×03 resourcespace upload
10.10.0.101 这个机子比较好搞 上去不到一个小时 就拿下来了 他开放了80端口 上去我就到处翻翻文件 发现了有列目录的漏洞 可以列出来目录 然后就寻找那些敏感的网页 来尝试 发现了一个上传的页面:http://10.10.0.101/pages/alternative_files.php 然后尝试上传了个jpg 和php的webshell发现都没有回显 然后我就走了 又去到处翻翻 翻到http://10.10.0.101/filestore/这个目录的时候 突然发现了我之前上传的那种图片 还有一个php文件 也就是之前上传的webshell 得来全不费工夫 就这样子拿到的webshell 在相同的目录下 有出题人原先放置的flag 提交了一个100分
flag1:15e5c558baf869eaf90ba58a389e86f388b567c5
电子设计竞赛-信安邀请赛writeup
然后又去拿到http://10.10.0.101/include/config.php 里面有数据库的密码

$mysql_server = 'localhost';
$mysql_username = 'root'; 
$mysql_password = 'toor@vm2'; 
$mysql_db = 'resourcespace';

然后用菜刀配置一下 连接上去看看 发现了flag数据库
电子设计竞赛-信安邀请赛writeup
里面有flag2:4a91c640e55fadfa9a98ab4b67b71345021d22e4
再提交一个200分 这个题一共拿下了300分 这个题比较简单 基本都做出来了 可是他不能作为跳板 进入内网

0×04 openssh 5.3
10.10.0.102 这个nmap扫了一发 只开发了22端口 看了一下版本是openssh5.3的 然后就先测试了弱口令 还有 溢出之类的漏洞 网上找到了一个openssh<=5.3的远程溢出 没有利用成功 还有一直在尝试着爆破 没有成功

0×05 passwd
10.10.0.103 这个题做出来很莫名其妙的感觉 是一个apache的web容器 有一个index.php 是空白的 我怀疑是个webshell 就用webshell去爆破一下 没发现什么。然后就和其他的机器差不多 是一个linux的 开放了22的openssh服务 然后我们就去用dirb去扫目录 扫出来的结果是有一个文件的test的文件 上面只有test 还有一个passwd的文件 上面一开始空白的 什么都没有 到了吃晚饭的时候 突然发现着上面居然有linux root密码 搞得我怀疑是别人溢出成功之后 没有及时删除留下来的 root password:pwn_skill_get
电子设计竞赛-信安邀请赛writeup
然后登上去后机智的吧 root密码改了
电子设计竞赛-信安邀请赛writeup
可是后来才发现 原来是一个队伍一套环境 弄得我很尴尬 原来一直都在搞自己 啥都不说了 登陆上去之后 先找flag之类的文件 然后在web目录下面发现了一个webshell 还有一个exe 在/root/目录下ls看到了 flaginroot文件 提示如下 pwn_pwn_pwn_done 提交之后获得100分
电子设计竞赛-信安邀请赛writeup

在www目录下发现了一个 flag文件 reverse_win_32_done 也是100分 一共获得500分
电子设计竞赛-信安邀请赛writeup
尴尬的是 我们发现了那个exe之后 就让队伍里的逆向whitesilt去做 他做了好久 终于做出来了 才发现 居然是那个webshell的url 能得到那个url 这才是第一步吗 结果我们一开始就拿到了root密码 把中间的都跳过了 这时间也浪费了
下载alaaladingding.exe

whitesilt的代码

//10.10.0.103逆向alaaladingding.exe
#include 
#include 

int main(void)
{
    char key[] = {0x55,0x8B,0xEC,0x83,0xEC,0x58,0x53,0x56,0x57};
    char toxor[] = {0x6B,0x4C,0xD2,0xE8,0x8E,0x16,0xBB,0xC9,0x1A,0xF5,0x25,0x9D,0xD4,0x93,0x86,0xD4,0xEE,0xBE,0x50,0xEB,0x63,0x44,0xF4,0x43,0x16,0x68,0x70,0x6A,0xD8,0x3D,0xB3,0x75,0x05,0xAD,0x2F,0xE7,0x70,0x79,0x37,0x1A,0x41,0x5D,0x49,0x31,0xBB,0xB1,0x91,0xF1,0xBD,0x20,0x57,0x7F,0xE6,0x70,0x5F,0x47,0xD2,0x35,0x82,0x2C,0x17,0x4C,0x90,0x91,0xD6,0xB9,0xC1,0x23,0x7B,0x88,0x29,0x01,0x98,0x0E,0xA8,0x5C,0xCE,0x58,0xFC,0xFA,0x92,0xD5,0xA6,0x6E,0xD6,0x08,0x41,0xE7,0x36,0xA0,0xB9,0xDE,0x85,0xB3,0xA1,0x34,0xF7,0x02,0x41,0xE2,0xEC,0x95,0x3A,0x06,0xB7,0x0C,0xE3,0xA1,0xBE,0x64,0xF1,0x71,0xAE,0x78,0x9C,0x26,0x18,0xAD,0x85,0x5E,0x7B,0x11,0x98,0xF3,0xCB,0x23,0x58,0xA8,0x9B,0x2D,0x19,0xB5,0x45,0x9F,0xAD,0x90,0x63,0xE4,0x62,0x33,0x6F,0xF7,0x16,0x62,0x5D,0x62,0xEE,0x74,0x1F,0xE8,0x09,0x33,0x86,0xD4,0xE9,0x94,0x29,0x10,0x69,0x14,0x67,0x0D,0x1A,0x96,0xAE,0xF2,0x14,0x99,0x90,0x4D,0x67,0x0C,0x52,0xED,0x4A,0xED,0x8A,0x6D,0xC9,0x7D,0xE3,0xD3,0xF8,0xFC,0xE0,0xC2,0xEA,0xD9,0x88,0x2F,0x23,0x16,0xAA,0xD1,0x09,0x16,0x0C,0x5C,0xB2,0x0A,0x2A,0x85,0x58,0x53,0x8C,0x3B,0x62,0x7C,0xBB,0xC5,0x13,0xC6,0x34,0xC2,0x57,0x77,0x04,0x89,0x5D,0x2E,0x13,0x9E,0x4C,0xF4,0xE7,0x0A,0x6D,0x7B,0x39,0xBC,0x94,0x50,0xF5,0x0B,0x30,0xCF,0xAC,0xE2,0xAA,0xD1,0x19,0x7C,0x42,0xD0,0xFB,0x31,0x35,0xB5,0xE4,0x7F,0xCE,0x81,0x94,0xA7,0xD7,0xCC};
    char nochange[] = {0x20,0x33,0x00,0xF8,0x0C,0xF8,0xF8,0x8B,0x17,0xF8,0x01,0x00,0x45,0x41,0xEB,0x53,0xC2,0x30,0x45,0x8A,0xB9,0x00,0xF4,0x41,0x83,0x16,0x00,0x53,0x33,0x83,0x00,0xCC,0x83,0x01,0x09,0x83,0xC7,0x83,0x88,0x7D,0x8D,0xFC,0x00,0x00,0x8B,0xF8,0x83,0xDC,0x41,0x45,0xC7,0xCC,0x15,0x7D,0x40,0x45,0x00,0x08,0x30,0x00,0x01,0x89,0xC4,0x00,0x8B,0x20,0x50,0xF8,0xCC,0x68,0x8B,0x05,0x45,0x45,0x55,0x74,0x99,0x30,0x88,0x00,0x91,0xF4,0x55,0xEC,0x58,0x09,0x1A,0x7D,0xF8,0xF8,0x4D,0xC0,0x00,0x89,0x8B,0x8B,0x00,0xE8,0x80,0x8B,0x55,0x20,0xD2,0x8B,0x33,0xDA,0x4D,0x45,0xFC,0x00,0x00,0xF3,0x90,0x00,0x41,0x89,0xC1,0x33,0x20,0x50,0x42,0x4D,0x00,0x45,0x07,0x91,0xF5,0x3B,0x19,0xC0,0xF8,0x8A,0xC0,0x88,0x00,0xE8,0x8A,0x15,0x00,0xC2,0x55,0x64,0xF8,0x58,0xCC,0x56,0x8B,0xC7,0x00,0x44,0x88,0x4D,0xF8,0x03,0x33,0xD4,0xF8,0xC7,0xEC,0x8B,0x00,0xEB,0x83,0x00,0xEB,0x44,0x89,0x08,0xD2,0xF0,0xA8,0x01,0xF8,0xC7,0x55,0xE8,0x09,0x57,0x03,0xB8,0xF0,0x03,0xEB,0x00,0xF8,0xC1,0xC0,0xD8,0x30,0xF8,0x7D,0xEB,0x8B,0x8B,0x54,0x4D,0xF8,0x8B,0x83,0x00,0x45,0xEA,0xEB,0x00,0x45,0x00,0x00,0x00,0xFC,0xFC,0x08,0x89,0x4B,0xC0,0x58,0x00,0xF8,0xD6,0x04,0xEB,0x83,0xF8,0xF0,0x0D,0x45,0x00,0x8B,0xAB,0x33,0x83,0x01,0x45,0x00,0x00,0x41,0xE2,0x8B,0x45,0xC2,0x5B,0x7D,0x45,0xFB,0xF8,0xE8,0x45,0x8A,0x7D,0xF4,0xFC,0x83,0x68,0x00,0x41,0xC7,0x45};
    int i, j, m;
    for(i=0; i<sizeof(key); i++)
    {
        for(j=0; j<sizeof(nochange); j++)
        {
            if (nochange[j] == key[i])
            {
                m = toxor[j]^i;
                if ((m>='0'&&m<='9') || (m>='A'&&m<='Z') || (m>='a'&&m<='z'))
                {
                    printf("key[%d]=%c,", j%8, m);
                }
            }
        }
        printf("\n-------------------\n");
     }
     system("pause");
}

电子设计竞赛-信安邀请赛writeup
那个我们根据那些提示 接着输入 第一个flag的提示是 分析pwnme.demo 还有pwnme.ok 可是我在那台103的机子上 find / -name pwnme 什么都没有找到 也没法分析这个文件 倒是那个内网的两台可以做

0×06 ctf
根据跳板机的提示 我们把那个192.168.0的网段用iptables转发了出来 然后就直接访问啊什么的 转发这一步还是比较成功的 3389什么端口都转出来的 有的队伍没有转发完全 一开始想用msf转发的 可是用msf转发只能一个人做题了 用iptables的话 可是设置网关之类的 让大家一起看题 做题 爆破之类的

h3ll0m4n给出的转发方法 让我涨姿势了
打开转发功能

sysctl  net.ipv4.ip_forward=1

设置iptables规则

iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth1 -j MASQUERADE

把从10.0.0.0/8网段的数据通过eth1网卡转发出去

然后访问了80端口 发现了是一个题目的页面 还可以有几种方式进行入侵
电子设计竞赛-信安邀请赛writeup
1发现文件类型 这个分分钟啊 下载dump.zip下来
下载dump.zip
解压后 拿到linux file看一下 发现是mac的doc文件 然后就加上doc的后缀 在win下用word打开,打开发现需要密码 在文件的信息里就看到有一串base64加密过的东西 解码一下 this_is_base64 发现这个就是密码了 用这个密码上去

The server’s passwd like as follow:
User: Administrator
Pass: 4 rows of keyboard

发现了这个东西 然后我们就猜测是1qaz 这样子的密码 可是手工试了很久 还写了字典去爆破 都不行 不知道是要怎么猜 甚至还尝试了手机的键盘 都没正确 比赛最后一刻还在猜这个密码 真难猜 搞不懂意思

半夜我就在看那个抓包的pcap文件
下载tips.zip
那个并不大 不到1M 很好看懂逻辑 需要我们找到远程溢出的方式 来重放达到攻击的目的 首先就要先找到攻击的类型还有shellcode 发现了一个特殊的ip 192.168.18.7 把和这个ip相关的提取出来单独看看 ip.dst == 192.168.18.7 || ip.src == 192.168.18.7 发现了这里是一个ftp的协议 溢出点也是在ftp这里 shellcode我找到了 交给了whitesilt 可是这个时候问题来了 ftp的21号端口 居然没有开放 叫来了工作人员 也发现和原题的设定不一样 最后也没法解决 后来我问了问 貌似大家的21端口都访问不了
电子设计竞赛-信安邀请赛writeup

然后就是 wordpress 还有 jakcms 这两个的入侵
wordpress用wpscan扫了一发 扫了下用户啊什么的 root 我怀疑是插件的问题 wordpress是比较安全的 但是wp插件就不是这样子了 常常出注入什么的漏洞 扫了扫插件就发现了一个xss漏洞 比较鸡肋 就没有去利用 后来看到wordpress的提示 说 是管理员的疏忽还有配置有问题 但是就在想有没有可能是弱口令什么的 就去爆了一发 可惜字典用错了 用了自己做的之前用来爆破webshell的字典 结果就悲剧了15000+什么都没有拿到 比赛最后还是没有爆破出来 非常可惜 赛后和cyrils聊了聊 发现了 原来是 root:toor 这个弱口令 这个弱口令我用来爆过ssh的 就是没想到往wp上试 too young too simple 然后进去之后 还能发现一个config.php.bak的备份 然后可以来拿到mysql的root密码 udf提权拿下这台机子 500分 有6队做出来了

jakcms的这个渗透 就比较悲催了 我们利用宝贵的外网时间 在网上找到了一个exp 是一个上传的exp 打上去没有用 我们就在那里修改exp的代码 改得头昏眼花 就没做出来 打了酱油 哎

0×07 getfile
这个题在比赛的时候 一开始以为是之前见到过的rand()爆破 可惜是linux下的 就知道自己思路错了
这个题给了 user.txt和 pass.txt 使用getfile.php?filename=&accesscode=的方式来获取的 观察一下发现 accesscode是 filename的md5 那个pass.txt是没法access的 就用md5的方法来获取 发现是LMNT hash 给了好多个
再去getfile.php试试看 让这个题变成白盒的代码审计题 获取到了getfile

<?php
$value = time();
$filename = $_GET["filename"];
$accesscode = $_GET["accesscode"];
if (md5($filename) == strtolower($accesscode)){
	echo "Welcome to view $filename!

"; srand($value); if (in_array($filename, array('getfile.php', 'classes.php', 'index.html', 'robots.txt', 'key.txt', 'login.php', 'passwords.txt', 'usernames.txt'))==TRUE){ $data = file_get_contents($filename); if ($data !== FALSE) { if ($filename == "key.txt") { $key = rand(); $cyphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC); echo base64_encode($cyphertext); } else if ($filename == "robots.txt") { $key = rand(); $cyphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB); echo base64_encode($cyphertext); } else if ($filename == "getfile.php") { echo base64_encode($data); } else{ echo nl2br($data); } } else{ echo "File does not exist"; } } else{ echo "File does not exist"; } } else{ echo "You don't have permission to view this file"; } ?>

赛后和kingdom聊 他说这个题是defcon的原题 当时眼泪就掉下来
当时没上网找啊 尴尬了
就是这个 google 第一条 用关键字去搜就能搜到
DEF CON CTF Qualifier 2013 3dub 4 Writeup

平时defcon的题目做少了 关键时候掉链子了
当时是 以为是 rand()的范围还是32767 可惜win下的32767 linux下是2^31-1
这个还只是这个题的前半办法 还要再做一半才能进去 需要拿到shell 看到在/var/flag 的flag文件

比赛做到这里才是第二层 还有第三层内网在等待着我们 实在是太难了 表示平时没有收集字典什么的可惜了 也没好好整理整理 然后就跪了
这里还有h3ll0m4n做的网络拓扑图
电子设计竞赛-信安邀请赛writeup

0×07 后记
最后比赛是第9名 混了个三等奖 中间等待的时候 就一直宅在旅馆里玩琪琪的mc
Minecraft 真好玩 4个人一直玩 出去大雁塔玩的时候 还说要把大雁塔做到我们的世界里去

FROM :appleu0.sinaapp.com | Author:appleu0

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月17日12:09:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   电子设计竞赛-信安邀请赛writeuphttp://cn-sec.com/archives/1012332.html

发表评论

匿名网友 填写信息