Skip to main content

🏁第十一届山东省大学生网络安全技能大赛WP

·449 words
CTF
Yalois
Author
Yalois
freedom
Table of Contents

收获
#

拿了团体二等奖和个人二等奖,还不错

18e882aa9b30d36caccc6993ce88b79f_720

c634cedc7a107d5fda3f7b3156f8b18e

我们团队和团体一等奖就差一名,真是太可惜了。我pwn题签到没做出来,后悔…

一定抽空好好学学pwn

部分WriteUp
#

misc
#

签到
#

直接提交给出的flag

ezpic
#

附件:ezpic.png

image-20241028213356311

strings命令文件末尾有半段flag

$ strings ezpic.png            
IHDR
IDATx
FDT$
&ffH
iRDB$
...
...
...
...
a73b2de7499d614c}

拖入Stegsolve , 蓝色图层有二维码,扫描得到 flag{cf74bc8a2233179e

image-20241028213417995

flag{cf74bc8a2233179ea73b2de7499d614c}

简单编码
#

题目信息:60=?+?

附件信息

DJ?ELCaecBfBa?eeCAABBD?AfgBghDChab_N

ROT47+ROT13

img

异常的流量
#

附件:异常的流量.pcap

观察流量包,一个dns查询一个响应,只要一个就行,用命令导出二进制数据

img

tshark -r 异常的流量.pcap -T fields -Y “ip.src==172.16.178.145” -e dns.qry.name > dnst1.txt

把dnst1.txt的多于的部分删除只留下0和1

img
观察发现,除去换行符,每行40个字符,共40行,方的,制作二维码

from PIL import Image
from zlib import *

MAX = 40 
pic = Image.new("RGB",(MAX,MAX))
str = "这里放置除去换行符的0和1数据"
i=0
for y in range(0,MAX):
    for x in range(0,MAX):
        if(str[i] == '1'):
            pic.putpixel([x,y],(0,0,0))
        else:pic.putpixel([x,y],(255,255,255))
        i = i+1
pic.show()
pic.save("1.png")

生成1.png

img

拖入windows上的PS,或者LINUX上的GIMP 拿铅笔工具画二维码的定位符

img

扫描得出二维码

Crypto
#

古典之美
#

题目提示:

凯撒?好像不只是凯撒

题目信息

yzabliviiszwve{blbekmnehedtmltfxrhsxhn}

第一层用凯撒到前四个字符一个括号

img
第二次层我瞎几把点点出来的,奇了怪了。

工控
#

Busss
#

附件:Busss.pcapng

modbus流量

挨个看发现有用的数据在modbus.regval_uint16 字段,导出(ip.src为了筛选Query的数据)

tshark -r Busss.pcapng -T fields -Y “ip.src==192.168.87.171” -e modbus.regval_uint16 > bus.txt

img

Web
#

fly_car
#

f12打开控制台搜索带flag字样的地方,发现一个rankrankrank.php

img

访问之后修改coookie的guest为admin就可以得到flag

Re
#

exchange
#

签到题

#include<stdio.h>
int main(void)
{
    int v7[38];
    int v8[38];
    int flag[38];
    v7[0] = 0;
    v7[1] = 1;
    v7[2] = 2;
    v7[3] = 3;
    v7[4] = 4;
    v7[5] = 13;
    v7[6] = 28;
    v7[7] = 5;
    v7[8] = 20;
    v7[9] = 29;
    v7[10] = 7;
    v7[11] = 26;
    v7[12] = 34;
    v7[13] = 18;
    v7[14] = 14;
    v7[15] = 8;
    v7[16] = 35;
    v7[17] = 24;
    v7[18] = 19;
    v7[19] = 12;
    v7[20] = 23;
    v7[21] = 15;
    v7[22] = 10;
    v7[23] = 36;
    v7[24] = 31;
    v7[25] = 6;
    v7[26] = 27;
    v7[27] = 17;
    v7[28] = 25;
    v7[29] = 32;
    v7[30] = 22;
    v7[31] = 11;
    v7[32] = 30;
    v7[33] = 21;
    v7[34] = 33;
    v7[35] = 9;
    v7[36] = 16;
    v7[37] = 37;
    v8[0] = 102;
    v8[1] = 108;
    v8[2] = 97;
    v8[3] = 103;
    v8[4] = 123;
    v8[5] = 52;
    v8[6] = 55;
    v8[7] = 101;
    v8[8] = 98;
    v8[9] = 102;
    v8[10] = 48;
    v8[11] = 48;
    v8[12] = 56;
    v8[13] = 57;
    v8[14] = 57;
    v8[15] = 97;
    v8[16] = 51;
    v8[17] = 54;
    v8[18] = 97;
    v8[19] = 57;
    v8[20] = 53;
    v8[21] = 98;
    v8[22] = 99;
    v8[23] = 101;
    v8[24] = 48;
    v8[25] = 49;
    v8[26] = 53;
    v8[27] = 53;
    v8[28] = 101;
    v8[29] = 102;
    v8[30] = 101;
    v8[31] = 51;
    v8[32] = 50;
    v8[33] = 98;
    v8[34] = 56;
    v8[35] = 100;
    v8[36] = 97;
    v8[37] = 125;

    for(int i=0;i<38;i++)
    {
        flag[v7[i]]=v8[i];
    }
    for(int j=0;j<38;j++)
    {
        printf("%c",flag[j]);
    }

    return 0;
}

数据安全
#

数据脱敏
#

给了一批数据要加星号。

一、姓名脱敏

在处理姓名信息时,采用“姓氏+脱敏字符”的方式进行脱敏。具体而言,如果用户的真实姓名是“张三”,那么脱敏后的姓名将显示为“张*”;若用户的真实姓名为“张三丰”,则脱敏后的姓名应呈现为“张*丰”。

二、身份证号码脱敏

对于身份证号码的脱敏处理,我们采取保留前6位和后4位(包括校验码),而中间部分则用“*”号替代的方式。例如,一个原始的身份证号码为“34052419800101001X”,经过脱敏处理后,它将显示为“340524********001X”。

三、手机号脱敏

在进行手机号脱敏时,我们采用隐藏中间四位数字的策略。举例来说,一个原始的手机号为“13800138000”,经过脱敏后,它将显示为“138****8000”。

用python写脚本,读取文件,然后字符串的切片,切好再写入

ls=""
with open("./person.txt") as f:
    for i in f.readlines():
        si=i
        si=si.split(',')
        name=""
        idcard=""
        phone=""
        if(len(si[0])==3):
            #三个字
            name=si[0][0]+"*"+si[0][2]
        elif(len(si[0])==2):
            #两个字
            name=si[0][0]+"*"
        else:
            print("error")
        idcard=si[1][:6]+"********"+si[1][-4:]
        phone=si[2][:3]+"****"+si[2][7:]
        new=name+","+idcard+","+phone
        ls+=(new)
with open("./sss.txt","w",encoding="UTF-8") as e:
    e.write(ls)

很石的代码,别骂我。

data_analy
#

这题主要是从给的csv中提取不标准的数据
给了一个个人信息数据规范文档.pdf
主要就是下面的数据有问题:
1. 月份不在12个月之内
2. 出生日期和身份证对不上
3. 身份证校验码不对
4. 身份证奇偶性别不对

这题没做出来,因为要提交md5值,这题后来上个提示,题目方把CRLF和LF的弄混了。清洗出了100个数据,但是没法交上去,代码太石了,不给看。

总结
#

这个比赛蛮简单的,pwn的签到题没做出来,知道偏移值和后门地址,脚本没写好。。。拿不到flag。。抽空还是要学一学pwn的。