当前位置:   article > 正文

2021“安恒·泰山杯”山东省网络安全大赛测试赛部分题目write up_安恒ctf题库

安恒ctf题库

2021“安恒·泰山杯”山东省网络安全大赛测试赛部分题目wp


线上测试赛,两个多小时8道题做出来5道,感觉自己还是太菜,简单记录一下。能down下来的东西都在最后百度云链接里。

web1 adminlogin

扫描得到admin.php
在这里插入图片描述
在这里插入图片描述

得到登录页面,根据提示flag在数据库里,推测是sql注入。
试了一下substr、database等等能过滤的都过滤了,有点烦,想留到最后做结果也没来得及做。

web2 ezphp

Where is flag?
源代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Welcome</title>
</head>
<body >
</div>
<h1 style="text-align: center">Where is flag?</h1>
<!--
foreach ($_POST as $item => $value){
    $$item=$$value;
    $secret = $$item;
}
foreach ($_GET as $key => $value){
    if ($key=='flag'){
        $str=$value;
        $$str=$secret;
    }
}
if (isset($hehe)){
    echo "<center>".$hehe."</center>";
}
//flag+flaag=DASCTF{XXXXXXX}
-->
</body>
<center>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

php手册查一下foreach函数
代码审计一下,是一个变量覆盖漏洞,具体漏洞原理可参考其他大佬的博客:https://www.cnblogs.com/zzjdbk/p/12985530.html
在这里插入图片描述
在这里插入图片描述
将两部分拼一下就能得到flag。

misc1 extractall

wp来自另外一位大神:
先写一个多层zip解压脚本,并且注意到zip文件名似乎是有规律的,这里顺便把文件名也记录了一下。

import zipfile
import os

name = '[REFTQ'

s = []
while True:
    s.append(name)
    with zipfile.ZipFile(name + '.zip', 'r') as ziip:
        ziip.extractall(pwd=name.encode())
        delname = name
        name = ziip.filelist[0].filename[0:6]

        print(s)
    os.remove(delname + '.zip')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

最深处有个图片,调整图片宽高,最下面有个提示who am i
在这里插入图片描述
有点熟悉,百度一下是斐波那契,想到斐波那契数列,再结合文件名的特点,写出下面的脚本。

s = ['[REFTQ', '1RGe0V', '4dHJhY', 'eht8on', '3RhbGx', '8smjtq', 'zmckit', 'fSXNfU', '9rskp5', 'a93su6', 'al0o68', 'p0l2vq', '29fRnV', 'fco9e2', '7ztjka', 'bvn8ta', 'a27s40', 'dxzk1l', 'yq6ik4', 'gec9bl', 'ufQ==]']

print(len(s))
fbnachi = list(map(int, '1、2、3、5、8、13、21'.split('、')))
res = ''
for i in fbnachi:
    res += s[i-1]
print(res)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

base64解密一下即得flag

DASCTF{Extractall_Is_So_Fun}
  • 1

misc2 认真你就输了

在这里插入图片描述
附件是一个Excel文件,但是打开提示文件已经损坏,放到kali里看一下格式。
在这里插入图片描述
binwalk命令看到一大堆压缩包,将文件后缀改为zip,挨个翻一下文件得到flag.txt。
在这里插入图片描述

crypto1 rsa17

给了一段代码:

from Crypto.Util.number import *
import binascii
import gmpy2
flag = '*****************************************'
hex_flag=int(flag.encode("hex"),16)

p=getPrime(256)
q=getPrime(256)
n=p*q

e=0x3
c1=pow(hex_flag,e,n)
c2=pow(hex_flag+1,e,n)


print("n=",hex(n))
print("e=",hex(e))
print("c1=",hex(c1))
print("c2=",hex(c2))

'''
('n=', '0xb28ae8f29f8b90e8b8c5667b2b71e49929446b41f7f7a3e9e45bc52a1e8c45d59c1788be48a9c365d51feee0b2cd3295001cdad1ba5ccf808686b5ce5a269ae5L')
('e=', '0x3')
('c1=', '0x7ba5502ecbc3b15ad8c2db8f30a593eb062dde4d7dfacadf0a28291d1a576389a18dfba0607c0243f843f637449089dd2090d47ee9845d4147f02afd4d891f19L')
('c2=', '0x891ac4f663df41c1f6433ee3513d749c3ba02fe0aacd7f51d791b9bac4f7e5194bd484d78d972c344faf600f7d3aa580485774768efc47ab8ddb67eeeb330fa1L')
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

e=3,想到关联信息攻击
在这里插入图片描述
写一个脚本:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import gmpy2

n = 9351035609579912430580224362406913775216485260866801060250235841497131649675821473038044490729550589638048144137033269711790417615294506088800324197718757
e = 3
c1 =6475853636479050645596496086080582816789963066323389815672770714308619633711541909793891052802547415987144453383534840748034987689956953991901404774080281
c2 =7180748878269451580223627474056868509561249251375351465737365567454518806786657134253453800373864987758778056252628950652794949518011402960483137799524257

def get_m1(a, b, c1, c2, n):
    a3 = pow(a, 3, n)
    b3 = pow(b, 3, n)
    tmp1 = ((c2 + 2*a3*c1 - b3) * b) % n
    tmp2 = ((c2 - a3*c1 + 2*b3) * a) % n
    tmp3 = gmpy2.invert(tmp2, n)
    tmp4 = (tmp1 * tmp3) % n
    return tmp4

m1 = get_m1(1, 1, c1, c2, n)
print(m1)
#m1=0b218774971804085528558358969417603446702511773250904882108354386662296629999644383681650889865769009
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

将十进制转化为字符串得到flag:
在这里插入图片描述

crypto2 移位凯撒

密文:ch\at;X[hUeQZcNU_QL^f
c的ascii码+3=f的ascii码值
h的ascii码+4=l的ascii码值
\的ascii码+5=a的ascii码值
a的ascii码+6=g的ascii码值
t的ascii码+7={的ascii码值
前面拼起来就是flag{
所以是一个变形的凯撒密码,密文和明文的差值从3开始递增

c = r"ch\at;X[hUeQZcNU_QL^f" /  #这里一定要加r,不然\会被当作转义符
move = 3
flag = ""
for i in c:
    flag += chr(ord(i) + move)
    move += 1
print(flag)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

reverse ezgo

在这里插入图片描述
看标题,go语言的逆向,本菜鸡暂时只学过c语言的逆向,时间有限,比赛中暂时搁置了,文件保存了,以后做出来补充。

pwn ez_rop

在这里插入图片描述
时间有限,比赛中暂时搁置了,文件保存了,以后做出来补充。

除了web1都能down下来,百度云链接:链接:https://pan.baidu.com/s/19bdOz9z5i3CHQLqC3P7P4g
提取码:mipu
–来自百度网盘超级会员V5的分享

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/900695
推荐阅读
相关标签
  

闽ICP备14008679号