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

WEB

localview

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


    安恒杯6月月赛部分解题报告_第1张图片
    图片.png

    2.查看源代码


    安恒杯6月月赛部分解题报告_第2张图片
    图片.png

    结合题目提示猜测本地访问,但是主页XFF访问结果一样
    3.扫描目录发现存在admin.php页面,但是拒绝访问
    安恒杯6月月赛部分解题报告_第3张图片
    图片.png

    4.在请求头添加参数进行访问,这里有个坑,要加host参数,值为localhost


    安恒杯6月月赛部分解题报告_第4张图片
    图片.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月月赛部分解题报告_第5张图片
    图片.png

2.根据提示查看hosts文件

安恒杯6月月赛部分解题报告_第6张图片
图片.png
  1. 尝试访问临近ip ,发现内网服务器,发现是一个任意文件包含
安恒杯6月月赛部分解题报告_第7张图片
图片.png
  1. 但是没有其他服务,不好直接获取shell,于是扫描端口:


    安恒杯6月月赛部分解题报告_第8张图片
    图片.png

发现 25 端口开放 smtp 协议, 于是思路为通过 gopher 打 smtp 协议,然后通过包含smtp 日志 来获取 webshell

  1. 使用 gopherus 生成 poc :
安恒杯6月月赛部分解题报告_第9张图片
图片.png
  1. 通过二次编码 gopher 协议攻击内网 smtp 服务,污染日志
安恒杯6月月赛部分解题报告_第10张图片
图片.png
  1. 通过 lfi 获取 webshell 在根目录下发现 flag
安恒杯6月月赛部分解题报告_第11张图片
图片.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月月赛部分解题报告_第12张图片
图片.png

FLAG:flag{raI1fEnce_Easy}

你认识我吗?

  • 题目描述
    提交你找到的字符串的md5值,答案提交flag{}括号内的值。
  • 解题过程
    下载下来得打两份文件,一个是加密脚本,另外一个是输出的密文
from message import plainText
from message import key

pla_len = len(plainText)
key_len = len(key)

print "plainText length is %d" % pla_len
print "key length is %d" % key_len

pla_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月月赛部分解题报告_第13张图片
解密.png

FLAG:flag{You_Are_Amazing}

MISC

日志分析脚本
分析日志,可以找到盲注的重点在 361 行开始, mid 函数从第一个字符,每次截取一个字符,一直 到结束,每次尝试范围都是 0 - 9 , a - z,{}, 延时 3 秒,观察发现如果盲注正确的话,两条盲注语句都是在同一时刻,将 361 行之后的 sql 盲注内容复制到文本文件当中 ,首先 url 解码


安恒杯6月月赛部分解题报告_第14张图片
图片.png

那么将时间间隔设置为 0 秒或者 1 秒,就得到了正确的结果


安恒杯6月月赛部分解题报告_第15张图片
图片.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+1

    print(tmp[36:38])
    if tmp[36:38]==line[36:38]:
        if tmp[145]=="'":
            flag+=tmp[146]
        else:
            flag+=tmp[145]
    tmp = line

print(flag)
p = "50f1ea7cf1544106e3555ccc2cf4087"
print(len(p))

有一个坑,第28位前后两个间隔1秒,最终

FLAG:50f1ea7cf1544106e3555c4cc2cf4087

我的密码

解题过程

  1. 使用 file 命令查看三个文件,发现都是 windows 注册表文件 , 如下图所示 :
安恒杯6月月赛部分解题报告_第16张图片
图片.png
  1. 题目提到“我的密码”,想来应该是 windows 密码了,从注册表恢复 windows hash 可以使用 cain 工具或者 impacket 工具包
    C ain 参考 https://wenku.baidu.com/view/63cca30a0166f5335a8102d276a20029bd646368.html

  2. 使用 impacket 工具包中的 secretsdump.py 文件即可得到 windows hash ,如下图所示:

安恒杯6月月赛部分解题报告_第17张图片
图片.png

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

你可能感兴趣的:(安恒杯6月月赛部分解题报告)