安恒杯6月月赛部分解题报告

WEB localview

  • 题目描述
    有个傲娇的管理员,只能从本地才能看到想要的~答案提交flag{}括号内的值。
  • 解题步骤
    1.打开网页是熟悉的图片

    安恒杯6月月赛部分解题报告
    文章图片
    图片.png
    2.查看源代码

    安恒杯6月月赛部分解题报告
    文章图片
    图片.png
    结合题目提示猜测本地访问,但是主页XFF访问结果一样
    3.扫描目录发现存在admin.php页面,但是拒绝访问
    安恒杯6月月赛部分解题报告
    文章图片
    图片.png
    4.在请求头添加参数进行访问,这里有个坑,要加host参数,值为localhost

    安恒杯6月月赛部分解题报告
    文章图片
    图片.png
FLAG:flag{h0st_And_iP_a1l_faKe}
easypentest 题目描述

解题思路
  1. 首先访问页面,是代码审计题目,有flag.php文件,但是有过滤使用php的一个bug 绕过过滤读
    flag.Php,二次url编码,绕过读取提示
    php BUG:https://bugs.php.net/bug.php?id=76671&edit=1
    安恒杯6月月赛部分解题报告
    文章图片
    图片.png
2.根据提示查看hosts文件
安恒杯6月月赛部分解题报告
文章图片
图片.png
  1. 尝试访问临近ip ,发现内网服务器,发现是一个任意文件包含
安恒杯6月月赛部分解题报告
文章图片
图片.png
  1. 但是没有其他服务,不好直接获取shell,于是扫描端口:

    安恒杯6月月赛部分解题报告
    文章图片
    图片.png
发现 25 端口开放 smtp 协议, 于是思路为通过 gopher 打 smtp 协议,然后通过包含smtp 日志 来获取 webshell
  1. 使用 gopherus 生成 poc :
安恒杯6月月赛部分解题报告
文章图片
图片.png
  1. 通过二次编码 gopher 协议攻击内网 smtp 服务,污染日志
安恒杯6月月赛部分解题报告
文章图片
图片.png
  1. 通过 lfi 获取 webshell 在根目录下发现 flag
安恒杯6月月赛部分解题报告
文章图片
图片.png CRYPTO 石头剪刀布
  • 题目描述
    发现秘密了吗?答案提交flag{}括号内的值。
  • 解题过程
    通过nc连接发现是石头剪刀布的比较游戏,但是对手的手势顺序是伪随机数,一共20局,每次发送必须在限定的时间内,不然会报错,适合写脚本爆破
from pwn import * flag="211200012210120121120" sh = remote("101.71.29.5",10003) def sendflag(flag): sh.recv() for i in flag: sh.sendline(i) print sh.recv() sh.close()sendflag(flag)

逐位爆破,最后将结果拼接出来得到f{1calrfesaaE_ygInE}
猜测是栅栏密码,进行解密得到flag
安恒杯6月月赛部分解题报告
文章图片
图片.png FLAG:flag{raI1fEnce_Easy}
你认识我吗?
  • 题目描述
    提交你找到的字符串的md5值,答案提交flag{}括号内的值。
  • 解题过程
    下载下来得打两份文件,一个是加密脚本,另外一个是输出的密文
from message import plainText from message import keypla_len = len(plainText) key_len = len(key)print "plainText length is %d" % pla_len print "key length is %d" % key_lenpla_matrix = [] for i in range(0,pla_len,key_len): pla_matrix.append(list(plainText[i:i+key_len]))ord_key = [] for k in key: ord_key.append(ord(k))ord_key = sorted(ord_key)output_order = []for i in ord_key: output_order.append(key.find(chr(i)))for i in output_order: for s in pla_matrix: print s[i], print "\n"

算法的步骤大概是把明文共计77个字母分成7组,然后各组按照一定的排列顺序进行打乱,然后输出,秘钥决定打乱的顺序,因此根据单词的关联系,进行相应的调整,得到解密后的代码如下:
安恒杯6月月赛部分解题报告
文章图片
解密.png FLAG:flag{You_Are_Amazing}
MISC 日志分析脚本
分析日志,可以找到盲注的重点在 361 行开始, mid 函数从第一个字符,每次截取一个字符,一直 到结束,每次尝试范围都是 0 - 9 , a - z,{}, 延时 3 秒,观察发现如果盲注正确的话,两条盲注语句都是在同一时刻,将 361 行之后的 sql 盲注内容复制到文本文件当中 ,首先 url 解码

安恒杯6月月赛部分解题报告
文章图片
图片.png
那么将时间间隔设置为 0 秒或者 1 秒,就得到了正确的结果

安恒杯6月月赛部分解题报告
文章图片
图片.png
先对原来的日志进行URL解码,然后进行相应的处理,根据前后两次的访问时间进行判断是否进行延时
i = 0 tmp = "" flag = "" f2 = open("data.txt") for line in f2: if i==0: tmp = line i=i+1 continue i=i+1print(tmp[36:38]) if tmp[36:38]==line[36:38]: if tmp[145]=="'": flag+=tmp[146] else: flag+=tmp[145] tmp = lineprint(flag) p = "50f1ea7cf1544106e3555ccc2cf4087" print(len(p))

有一个坑,第28位前后两个间隔1秒,最终
FLAG:50f1ea7cf1544106e3555c4cc2cf4087
我的密码 解题过程
  1. 使用 file 命令查看三个文件,发现都是 windows 注册表文件 , 如下图所示 :
安恒杯6月月赛部分解题报告
文章图片
图片.png
  1. 题目提到“我的密码”,想来应该是 windows 密码了,从注册表恢复 windows hash 可以使用 cain 工具或者 impacket 工具包
    C ain 参考 https://wenku.baidu.com/view/63cca30a0166f5335a8102d276a20029bd646368.html
  2. 使用 impacket 工具包中的 secretsdump.py 文件即可得到 windows hash ,如下图所示:

安恒杯6月月赛部分解题报告
文章图片
图片.png
接下来就是破解 hash 了,可以使用 john 直接破解( emm ... .. ,我 john 出了点问题
因为 windows hash 被截成两部分, LMhash 和 NTLMhash , 所以 将 NTLM 部分放到 https://www.cmd5.com/ , 类型选择 NTLM , 即可得到破解后的密码 (经过测试,只有 【安恒杯6月月赛部分解题报告】

    推荐阅读