解题赛
Misc
Png先生的秘密
看了一下压缩包里有一个png图片,没有注释,尝试使用文件名进行解压缩,无果
猜测zip伪加密,找到压缩源文件目录区对应的50 4B找到,修改09 00为00 00
然后用bandizip解压缩打开,得到png图片
用010打开png先生的秘密.png,可以看到缺少png文件头
添加上文件头以后,还是无法打开
可以看到下面还是提示checksum,网上搜了下长宽也是crc校验的范围,猜测是长宽的问题
import struct
import zlib
def hexStr2bytes(s):
b = b""
for i in range(0, len(s), 2):
temp = s[i:i + 2]
b += struct.pack("B", int(temp, 16))
return b
str1 = "49484452" # (IDCH)
str2 = "0806000000" # (IHDR)的后五位字节
bytes1 = hexStr2bytes(str1)
bytes2 = hexStr2bytes(str2)
wid, hei = 1125, 300 # 图片的宽、高
crc32 = "0x082b810d" # 填入CRC校验码
for w in range(wid, wid + 2000):
for h in range(hei, hei + 2000):
width = hex(w)[2:].rjust(8, '0')
height = hex(h)[2:].rjust(8, '0')
bytes_temp = hexStr2bytes(width + height)
if eval(hex(zlib.crc32(bytes1 + bytes_temp + bytes2))) == eval(crc32):
print(hex(w), hex(h))
最后得到长宽分别为0x480 0x288
修改该长宽以后,还是一样打不开
这时候搜到一个工具,pngcheck,运行一下,得到下面的结果,有一个EASY节无法解析
png的关键节主要是IHDR、PLTE、IDAT、IEND,尝试把EASY修改成IDAT,即
flag为:
flag{da4f0a96-82f2-d124-11d0-bcf232a5ce87}
Web
老生常谈的注入
先用bp抓一下包,并保存为post.txt
用sqlmap注入一下,先撞库
python sqlmap.py -r "/home/kali/Desktop/post.txt" -p "passwd" --random-agent --batch --dbs
然后爆表
python sqlmap.py -r "/home/kali/Desktop/post.txt" -p "passwd" --random-agent --batch -D "security" --tables
python sqlmap.py -r "/home/kali/Desktop/post.txt" -p "passwd" --random-agent --batch -D "security" -T "flag" --columns
尝试找了很多关于"unable to retrieve column names for table"的方法,还是不行,根据sqlmap提供的payload,进行手动注入
最终的flag为:
flag{6TGswghZSJhBO01E7vm9wLQnKV3QUXcSSDIcbPTV}
bibibi
bibibibibibi
用dirsearch跑了一下,发现网站下面只有两个网页,index.html和robots.txt
在robots.txt下面给了提示,/fl4gi5Here.php页面
flag为
flag{yOGywj3w9pG2dSLjQC237Yw5o6tfZ0xkZ8t7YCt3}
Z-Blog-1
这是一个网站,但里面有份秘密文件
先用dirsearch跑着,根据上一题,可以尝试一下先看看robots.txt,可以看到禁止爬虫访问两个目录,一个是zb_users,另一个是zb_system
可以访问一下看看,zb_users下有一个This-is_flag.php文件,非常可疑
打开以后会发现为空,应该是一个干扰项
moreandno
是一个代码审计
运维赛
题目信息
1.请根据主机上的一份日志文件对发送请求最多的IP进行ssh限制登录;
2.要求中需要30天修改一次密码的同时必须隐藏apache版本信息;
3.禁止删除root密钥文件,因root密钥问题导致后续checker无法运行由选手自行负责;
4.应急响应过程中不能影响正常的业务功能和作业计划,请勿修改ssh和web服务的端口或使用防火墙策略阻止ssh和web连接;
5.部分文件中的修复是命令必须彻底删除,而不是注释,否则会影响最后checker检测的成绩.
6.主机中运行的服务和端口:mysql-3306、ssh-22(账号root密码root)、http-80、http-8000,上述服务选手可根据需要可以自行重启服务器但是需要保证端口信息不变化,否则会被判断checker失败;
1、根据主机上的一份日志文件对发送请求最多的IP进行ssh限制登录
ls当前目录,发现存在log.log文件
使用以下命令,查询出发送请求最多的IP
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10
linux 服务器通过设置/etc/hosts.allow和/etc/hosts.deny这个两个文件,hosts.allow许可大于hosts.deny可以限制或者允许某个或者某段IP地址远程 SSH 登录服务器,方法比较简单,且设置后立即生效,不需要重启SSHD服务
hosts.allow和hosts.deny两个文件同时设置规则的时候,hosts.allow文件中的规则优先级高,按照此方法设置后服务器只允许192.168.0.1这个IP地址的SSH登录,其它的IP都会拒绝。
2、30天修改一次密码
输入以下命令编辑 /etc/login.defs
文件
vim /etc/login.defs
找到 PASS_MAX_DAYS
选项,该选项控制着用户密码的最长时间。默认情况下,该选项设置为 99999,表示用户密码永不过期。将其更改为 30,如下所示
强制所有用户在下次登录时更改其密码
chage --maxdays 30 root
多加了这句,系统直接挂了,后面就没机会写了