CTF 中如何欺骗 AI

CS6200交换机在CTF攻防赛中的高阶用法:用AM功能实现靶机访问控制+防ARP欺骗实战 本文详细解析了神州数码CS6200交换机在CTF攻防赛中的高阶防御应用,重点介绍了AM功能实现靶机访问控制和防ARP欺骗的实战技巧。通过MAC-IP绑定、DHCP Snooping和ARP报文速率限制等技术,构建了多层防御体系,有效提升竞赛网络安全性,特别适用于信息安全管理与评估赛项。 阅读详情

在这里插入图片描述
近年来,笔者在国内外 CTF 竞赛中见到不少与 AI 相关的题目。有一些是需要选手自行实现一个 AI,来自动化某些操作;有些是给出了一个目标 AI 模型,要求选手进行破解。本文主要谈论后者——在 CTF 竞赛中,我们如何欺骗题目给出的 AI?

CTF 中的欺骗 AI 问题一般分成两类:基于神经网络的和基于统计模型的。如果题目要求选手欺骗神经网络,一般会给出白盒的模型(往往是图像分类任务);如果是要求选手欺骗统计学习模型,有些题目会给出白盒的模型参数,也有的提供训练数据集。

我们先从一道很简单的欺骗统计学习模型看起,来体验这类问题的主要求解过程

欺骗 kNN:[西湖论剑2020] 指鹿为马

任务目标

有一个 AI 模型,要求选手上传一张图片,与 dear.png 的差异很小,但被 AI 判别为马。

import numpy as np
from PIL import Image
import math
import operator
import os
import time
import base64
import random

def load_horse():
    data = []
    p = Image.open('./horse.png').convert('L')
    p = np.array(p).reshape(-1)
    p = np.append(p,0)
    data.append(p)
    return np.array(data)

def load_deer():
    data = []
    p = Image.open('./deer.png').convert('L')
    p = np.array(p).reshape(-1)
    p = np.append(p,1)
    data.append(p)
    return np.array(data)

def load_test(pic):
    data = []
    p = Image.open(pic).convert('L')
    p = np.array(p).reshape(-1)
    p = np.append(p,1)
    data.append(p)
    return np.array(data)


def euclideanDistance(instance1, instance2, length):
    distance = 0
    for x in range(length):
        distance += pow((instance1[x] - instance2[x]), 2)
    return math.sqrt(distance)


def getNeighbors(trainingSet, testInstance, k):
    distances = []
    length = len(testInstance) - 1
    for x in range(len(trainingSet)):
        dist = euclideanDistance(testInstance, trainingSet[x], length)
        distances.append((trainingSet[x], dist))
    distances.sort(key=operator.itemgetter(1))
    neighbors = []
    for x in range(k):
        neighbors.append(distances[x][0])
        return neighbors


def getResponse(neighbors):
    classVotes = {}
    for x in range(len(neighbors)):
        response = neighbors[x][-1]
        if response in classVotes:
            classVotes[response] += 1
        else:
            classVotes[response] = 1
    sortedVotes = sorted(classVotes.items(), key=operator.itemgetter(1), reverse=True)
    return sortedVotes[0][0]


def getAccuracy(testSet, predictions):
    correct = 0
    for x in range(len(testSet)):
        if testSet[x][-1] == predictions[x]:
            correct += 1
    return (correct / float(len(testSet))) * 100.0

def check(pic):
    source_p = Image.open('deer.png')
    try:
        c_p = Image.open(pic)
    except:
        print("Please upload right picture.")
        exit()
    diff_pixel = 0
    a, b = source_p.size
    if c_p.size[0] != a and c_p.size[1] != b:
        print("Please upload right picture size("+str(a)+','+str(b)+')')
        exit()
    for y in range(b):
        for x in range(a):
            diff_pixel += abs(source_p.getpixel((x, y)) - c_p.getpixel((x, y)))
    return diff_pixel

def main():
    while 1:
        print('-' * 134)
        print('''      ____       __            _          _   _                _                              _   _            _                         
     |  __ \     / _|          | |        | | | |              | |                            | | | |          | |                        
     | |__) |___| |_ ___ _ __  | |_ ___   | |_| |__   ___    __| | ___  ___ _ __    __ _ ___  | |_| |__   ___  | |__   ___  _ __ ___  ___ 
     |  _  // _ \  _/ _ \ '__| | __/ _ \  | __| '_ \ / _ \  / _` |/ _ \/ _ \ '__|  / _` / __| | __| '_ \ / _ \ | '_ \ / _ \| '__/ __|/ _ \\
     | | \ \  __/ ||  __/ |    | || (_) | | |_| | | |  __/ | (_| |  __/  __/ |    | (_| \__ \ | |_| | | |  __/ | | | | (_) | |  \__ \  __/
     |_|  \_\___|_| \___|_|     \__\___/   \__|_| |_|\___|  \__,_|\___|\___|_|     \__,_|___/  \__|_| |_|\___| |_| |_|\___/|_|  |___/\___|
    ''')
        print('-'*134)
        print('\t1.show source code')
        print('\t2.give me the source pictures')
        print('\t3.upload picture')
        print('\t4.exit')
        choose = input('>')
        if choose == '1':
            w = open('run.py','r')
            print(w.read())
            continue
        elif choose == '2':
            print('this is horse`s picture:')
            h = base64.b64encode(open('horse.png','rb').read())
            print(h.decode())
            print('-'*134)
            print('this is deer`s picture:')
            d = base64.b64encode(open('deer.png', 'rb').read())
            print(d.decode())
            continue
        elif choose == '4':
            break
        elif choose == '3':
            print('Please input your deer picture`s base64(Preferably in png format)')
            pic = input('>')
            try:
                pic = base64.b64decode(pic)
            except:
                exit()
            if b"<?php" in pic or b'eval' in pic:
                print("Hacker!!This is not WEB,It`s Just a misc!!!")
                exit()
            salt = str(random.getrandbits(15))
            pic_name = 'tmp_'+salt+'.png'
            tmp_pic = open(pic_name,'wb')
            tmp_pic.write(pic)
            tmp_pic.close()
            if check(pic_name)>=100000:
                print('Don`t give me the horse source picture!!!')
                os.remove(pic_name)
                break
            ma = load_horse()
            lu = load_deer()
            k = 1
            trainingSet = np.append(ma, lu).reshape(2, 5185)
            testSet = load_test(pic_name)
            neighbors = getNeighbors(trainingSet, testSet[0], k)
            result = getResponse(neighbors)
            if repr(result) == '0':
                os.system('clear')
                print('Yes,I want this horse like deer,here is your flag encoded by base64')
                flag = base64.b64encode(open('flag','rb').read())
                print(flag.decode())
                os.remove(pic_name)
                break
            else:
                print('I want horse but not deer!!!')
                os.remove(pic_name)
                break
        else:
            print('wrong choose!!!')
            break
    exit()

if __name__=='__main__':
    main()

我们详细看一遍代码,发现这个 AI 模型是 k-邻近(k-Nearest Neighbor, KNN),而且还是个 k=1 的情形,且训练集中,鹿和马各只有一张图片。题目将选手的图片读进去,做的事情如下:

  1. 检查选手上传的图片与 deer 的像素差是否小于 100000。如果超过限制,则报告错误。
  2. 求选手图片与 deer 和 horse 的欧几里得距离。离谁更近,就判定为哪个分类。
  3. 如果选手图片被判定为马,则选手获胜。

deer 和 horse 都是灰度图,如下:

在这里插入图片描述

笔者建议在做机器学习类 CTF 题的时候,采用 jupyter notebook 或者 jupyter lab,并用好 matplotlib
来可视化当前的结果。这会大大提升工作效率。

我们现在的目标就是在 deer 的基础上进行小幅度修改,使得它与 horse 之间的的欧氏距离小于其与 deer 的。

尝试:随机噪声

为了构造出合法的图片,我们需要回去看「修改幅度」的衡量方式。其代码如下:

for y in range(b):
    for x in range(a):
        diff_pixel += abs(source_p.getpixel((x, y)) - c_p.getpixel((x, y)))
return diff_pixel

它衡量的是图片 A 与 B 之间每个像素点的距离之和。换句话讲,这是曼哈顿距离。笔者遇到的大部分 CTF 欺骗 AI 题目,衡量修改幅度都是采用曼哈顿距离。

这张图片共有 5184 个像素点,也就是说,平均下来,每个像素点允许 19 的偏差。事实上,这是非常宽松的值,我们随便演示一个合法的修改:

在这里插入图片描述
输出的图片就像老式电视一样。那么它能否骗过 AI 呢?
在这里插入图片描述
很遗憾,其与鹿之间的欧氏距离,小于其与马之间的欧氏距离。我们现在要开始反思一个问题:把 100000 个差异值随机平摊到每个像素上,是最好的解法吗?

解法:修改差异大的像素

在二维平面上考虑这个问题。假设我们想让一个点在欧氏距离的衡量下远离 (0, 0),但要保持曼哈顿距离不超过 2。如果选择 (1, 1),则欧氏距离为 sqrt(2);如果选择 (0,2),则欧氏距离可以达到 2,这是更优的选择。

那么,我们相应地猜测:对于本题,我们应该把一些像素点直接改到与 horse 的对应像素相等;其他的像素点可以放弃。而那些应当修改的点,是 deer 与 horse 像素差异最大的点。

在这里插入图片描述
生成了一张很怪的图。来验证一下是否满足要求:
在这里插入图片描述
可见与鹿的距离是 4003,与马的距离是 2538,骗过了 AI。像素差异是 99999,我们成功完成了题目指定的目标。

数学上的证据

我们刚刚基于「差异越大的像素越应该修改」这个猜测,成功地解决了问题。这里给出为什么 it works 的证明。不爱看证明的读者可以跳过。
在这里插入图片描述
在这里插入图片描述
所以,我们从数学上证明了为什么「差异越大的像素点,越值得更改」。并且从数学推导中,我们还可以发现另一个结论:将像素点改成马的对应像素值,并非最优解。要改就改彻底:要么改成 0,要么改成 255。不过本题的像素差异限制 100000 是一个很松的界,所以我们之前不那么优秀的算法也可以成功。

总结

回顾我们的做题过程,我们从一个原图片 X 出发,施加一个很小的扰动向量,获得样本 Y,且 AI 对 Y 的表现与对 X 的表现非常不同。这样的样本被称为「对抗样本」,如何构造高质量的对抗样本、利用对抗样本来改进模型的鲁棒性,是机器学习研究中逐步受到重视的一个方向。

需要注意的是,攻击统计学习 AI 模型,往往需要进行一些数学推导。如果读者有兴趣,笔者推荐了解一下 kNN、kmeans、混合高斯模型等经典的统计学习方法。

欺骗白盒神经网络

概述

神经网络能解决大量传统模型难以解决的问题,近年经历了飞速发展。神经网络一般是由多层神经元构成的,每个神经元有自己的参数。下图是一个简单的神经网络模型(多层感知机):
在这里插入图片描述
图源 IBM。本文假定读者已经对神经网络有一些了解;如果从零学起的话,笔者推荐看一看 3Blue1Brown 的机器学习教程、PyTorch 的官方教程。

以上图描述的神经网络为例。在图像分类任务中,图像的每个像素点被输入到第一层,然后传导到第二层、第三层……直到最后一层。最后一层的每个神经元代表一个分类,其输出是「图像是否属于本类」的打分。我们一般取打分最高的那一类,作为分类结果。

CTF 中的欺骗神经网络题一般如下:给定一个预训练好的分类模型(PyTorch 或者 TensorFlow),再给定一张原图。要求小幅度修改原图,使得神经网络将其误分类为另一个类别。

攻击手段

我们训练神经网络时,一般采用梯度下降的方法。每一轮迭代可以理解为下面的过程:首先输入 X,然后运行 net(X) 获取输出,根据网络输出与期望输出的不同,来反向传播,修改网络模型的参数。

那么,我们现在要攻击这个网络,可以采取什么办法呢?首先还是给网络提供原图 X,得到输出 net(X),接下来,我们根据「网络分类的结果」与「我们想要误导的结果」的差异计算 loss 值,进行反向传播。但是需要注意,我们不修改网络参数,而是将原图减去其梯度。这样迭代若干次,直到成功误导 AI 为止。

下面,我们以识别手写数字(MNIST数据集)的任务为例,从训练网络开始,演示一下攻击方法。

实践:训练神经网络

这里采用 PyTorch 来实现神经网络。首先是导入数据集:

import torch
import torchvision
import torch.nn as nn
import torchvision.transforms as transforms
import torch.nn.functional as F
import numpy as np

import matplotlib.pyplot as plt

trans_to_tensor = transforms.Compose([
    transforms.ToTensor()
])

data_train = torchvision.datasets.MNIST(
    './data', 
    train=True, 
    transform=trans_to_tensor, 
    download=True)

data_test = torchvision.datasets.MNIST(
    './data', 
    train=False, 
    transform=trans_to_tensor, 
    download=True)

data_train, data_test

在这里插入图片描述
实现一个 DataLoader,作用是生成随机打乱的 mini batch 用于训练:

train_loader = torch.utils.data.DataLoader(
    data_train, 
    batch_size=100, 
    shuffle=True)

来看一个 mini batch。

在这里插入图片描述
接下来定义网络。我们采用一个很原始的模型:将输入的 28*28 的灰度图展开为一维数组,然后经过 100 个神经元的全连接层,激活函数为 ReLu。接下来再通过 10 个神经元的全连接层,激活函数为 sigmoid,作为预测值输出。

class MyNet(nn.Module):

    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(28*28, 100)
        self.fc2 = nn.Linear(100, 10)

    def forward(self, x):
        x = x.view(-1, 28*28)
        x = self.fc1(x)
        x = F.relu(x)
        x = self.fc2(x)
        x = torch.sigmoid(x)

        return x

net = MyNet()

如果图像中的数字是 c,我们希望输出的 10 维向量中仅有第 c 位是 1,其余都是 0。所以我们采用交叉熵损失函数以及 Adam 优化器:

criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(net.parameters())

接下来就是训练这个网络。

def fit(net, epoch=1):
    net.train()
    run_loss = 0

    for num_epoch in range(epoch):
        print(f'epoch {num_epoch}')

        for i, data in enumerate(train_loader):
            x, y = data[0], data[1]

            outputs = net(x)
            loss = criterion(outputs, y)

            optimizer.zero_grad()
            loss.backward()
            optimizer.step()

            run_loss += loss.item()

            if i % 100 == 99:
                print(f'[{i+1} / 600] loss={run_loss / 100}')
                run_loss = 0

                test(net)

def test(net):
    net.eval()

    test_loader = torch.utils.data.DataLoader(data_train, batch_size=10000, shuffle=False)
    test_data = next(iter(test_loader))

    with torch.no_grad():
        x, y = test_data[0], test_data[1]

        outputs = net(x)

        pred = torch.max(outputs, 1)[1]
        print(f'test acc: {sum(pred == y)} / {y.shape[0]}')

    net.train()

来看 5 个 epoch 之后的结果:
在这里插入图片描述
我们训练出了测试准确率 97.89% 的网络。接下来,我们开始针对网络进行攻击。

实践:欺骗白盒多层感知机

目前网络的所有参数我们都是知道的。在 CTF 中,一般会提供训练网络的代码,以及通过 torch.save() 导出的预训练模型,选手通过 model.load_state_dict() 即可导入模型参数。

我们随便选择一个数据,作为原图:
在这里插入图片描述
我们的模型以很强的信心,将其分类为 2。接下来,我们篡改原图,使得网络将其误分类为 3。过程如下:

  1. 将图片输入网络,得到网络输出。
  2. 将网络输出与期望输出求 loss 值(这里采用交叉熵)。
  3. 将图片像素减去自己的梯度 * alpha,不改变网络参数。

重复以上过程,直到误导成功为止。代码如下:

def play(epoch):
    net.requires_grad_(False)     # 冻结网络参数
    img.requires_grad_(True)      # 追踪输入数据的梯度

    loss_fn = nn.CrossEntropyLoss()   # 交叉熵损失函数

    for num_epoch in range(epoch):
        output = net(img)
        target = torch.tensor([3])    # 误导网络,使之分类为 3
        loss = loss_fn(output, target)

        loss.backward()               # 计算梯度
        img.data.sub_(img.grad * .05) # 梯度下降
        img.grad.zero_()

        if num_epoch % 10 == 9:
            print(f'[{num_epoch + 1} / {epoch}] loss: {loss} pred: {torch.max(output, 1)[1].item()}')

        if torch.max(output, 1)[1].item() == 3:
            print(f'done in round {num_epoch + 1}')
            return

img = origin.view(1, 28, 28)

play(100)

在这里插入图片描述
我们成功地构造出了一个对抗样本,我们人类看显然还是 2,但模型将其识别为 3。至此成功完成任务。对比图如下:
在这里插入图片描述

总结

很多 CTF 欺骗神经网络题目,都可以采用上面这一套代码。训练网络的代码选手不用自己写,只需要导入预训练好的模型即可。在迭代时,选手应该选取合适的学习率 alpha(笔者的代码中是 0.05)、添加一些特殊约束(例如对每个像素的修改距离不能超过特定值)。无论如何,欺骗白盒神经网络的主要思想,往往都是「固定网络参数、通过梯度下降修改原图」。

更进一步的讨论

我们已经一步步完成了对白盒神经网络的欺骗。但日常生活中,很少有神经网络会把自己的参数广而告之,这使得我们不能采用上面的套路去攻击。此外,我们上面生成的那张图片很不「自然」,有大量的背景噪声,而这是正常的数字图片中不会存在的。

关于这些问题,ICLR2018 的一篇论文 Generating natural adversarial examples 可以提供一些启发。该论文提出的方法不要求预先知道网络参数,甚至不要求知道网络模型。而且该方案能生成比较自然的对抗样本,如下所示:
在这里插入图片描述
那么,他们是如何做到的呢?下面简要描述一下原理。首先,通过类似于 CycleGAN 的思路,训练一个从 latent space 到图片的生成器、一个从图片反推 z 的编码器。接下来,把原图编码成向量 z,并在 z 的附近随机选择很多的 z’,利用生成器从这些 z’ 生成图片,然后交给目标模型去判断。如果有图片成功误导了模型,则报告成功。
在这里插入图片描述
论文作者给出了该方法用于 CV 和 NLP 两个领域的成效,并成功地攻击了谷歌翻译。他们的代码开源在 Github 上。

这是一个适用范围比较广的方案,不过笔者认为可能不适合用于 CTF 出题。这是因为训练 GAN 是一件费时费力、且需要机器学习技巧的工作,已经超出了 CTF 一般的考察范畴;且由于出题人模型是黑盒的,可能训练模型技巧较好、使用的判别模型与出题人差异较大的选手反而难以成功。

总而言之,对抗样本是一条很有趣的研究方向。笔者今天介绍了 CTF 竞赛中欺骗 AI 的一般步骤,希望对 CTF 选手有所帮助。

[网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及防御机理 这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了中间人攻击或ARP欺骗攻击,从ARP原理到局域网配置进行描述。这篇文章将详细讲解DNS欺骗(DNS投毒)及钓鱼网站原理知识,并通过Ettercap工具复现某购物网站的钓鱼漏洞,本文的重点是让您对ARP欺骗、DNS欺骗和钓鱼攻击有一定认识。真心希望这篇基础文章对您有所帮助,也欢迎大家讨论。 阅读详情

相关推荐

金蝶ERP元数据解析:字段属性与表结构映射实战

本文深入解析金蝶ERP元数据的核心价值与应用实践,详细介绍了字段属性与表结构映射的关键技术。通过缓存获取与工具类直连两种方案对比,结合实际案例展示元数据在数据库校验、动态表单生成等场景的应用,帮助开发者高效解决二次开发中的常见问题。

weixin_33738555的博客 433

CTF新题型--AI

AI类题目通常涉及到使用或修改AI模型来解决特定的问题。这类题目可能要求选手利用算法对数据进行修改、运算,以实现解题目的.例如,字节跳动安全与风控团队发起的安全AI挑战赛就涵盖了图像文本识别、海量数据分析等方向,而WMCTF2020和TJUCTF新生赛中也有AI相关的题目.在这些题目中,有的是基于神经网络的欺骗AI问题,如通过生成对抗样本来欺骗AI图像识别系统;最近的比赛中又出现了新题型 – AI,在CTF竞赛中引入AI题目,可以测试选手对当前最前沿技术的理解和应用能力.早期题目都比较简单,如欺骗 ai;

是我的博客 8352

CTFshow-CRYPTO(持续更新)

密码学签到 }wohs.ftc{galf 将字符串逆序即可 letters = '}wohs.ftc{galf' a = list(letters) a.reverse() for letters in a: print(letters,end='') crypto2 打开浏览器的控制台,复制粘贴回车即可得到flag crypto3 这一题同上 crypto4 如图填写即可,一开始e填写的是17,一直回答错误,后来经过群内大佬提醒软件的e是十六进制的,17转十六进制就是0x11 cr

i_kei的博客 1万+

NSSCTF AI 大模型攻防挑战专题 writeup

大模型越狱挑战

blackpeach的博客 1万+

【学习笔记】人群归因分数 PAF 以及combined PAF

人群归因风险比例(Population Attributable Fraction,PAF)是一个流行病学指标,它估计了在总体中,如果能消除一个特定的危险因素,能预防多少百分比的疾病或健康结果。简单来说,PAF回答的是:“如果没有这个风险因素,总体中会有多少病例是可以避免的?

weixin_53499537的博客 4898

Xilinx FPGA 100G RDMA开发实战:基于AXI Lite配置的ROCE V2高速通信系统搭建

本文详细介绍了在Xilinx FPGA上搭建100G ROCE V2高速通信系统的实战过程。通过分析RDMA技术优势与FPGA实现的必要性,重点阐述了基于AXI Lite接口配置ERNIC IP核的关键步骤,包括硬件系统构建、驱动开发及与商用网卡的互通测试,旨在实现兼具高性能与灵活性的网络加速方案。

js777的博客 575

TJUCTF新生赛-AI安全专栏write up

CTF AI安全专栏

qq_42940521的博客 1万+

麒麟V10等保三级配置实战:从auditd规则到PAM锁定的可信基线构建

Linux安全基线是信息系统可信运行的基础能力,其核心在于身份鉴别、访问控制与安全审计三大机制的协同落地。在国产化信创环境中,麒麟V10作为深度适配飞腾/鲲鹏平台的操作系统,其等保三级合规并非简单套用CentOS加固脚本,而是需围绕内核审计(auditd)、可插拔认证模块(PAM)及国产安全增强机制(如kysec)进行精细化编排。技术价值体现在将抽象条款(如GB/T 22239-2019中6.1.2、6.3.3条)转化为可验证的命令行操作,确保登录失败可锁定、关键行为可追溯、时间偏差不致日志失效。典型应用场

weixin_29969209的博客 594

AICTFer一天速成指南

传统CTF:靠个人积累的知识储备、熟练的工具使用、长期的经验沉淀AI加持的CTF:外置智库大脑,实时获取建议、快速生成工具、降低知识门槛核心变化:从"我会什么"到"我能问什么" ——提问能力成为新的核心竞争力⭐⭐ (5星最难)⭐⭐⭐⭐⭐ (AI几乎可以全包)第1天:编码识别(Hex、Base64、Base32)第2-3天:古典密码(凯撒、栅栏、维吉尼亚)第4-5天:现代密码(RSA基础、AES)第6-7天:数学攻击(费马分解、共模攻击)✅ 编码识别 → AI判断 + 写脚本。

泷羽Sec-静安 1万+

水很深的深度学习(四): 卷积神经网络CNN

深度学习-CNN,卷积神经网络的概念 上世纪60年代,Hubel等人通过对猫视觉皮层细胞的研究,提出了感受野这个概念,到80年代,Fukushima在感受野概念的基础之上提出了神经认知机的概念,可以看作是卷积神经网络的第一个实现网络,神经认知机将一个视觉模式分解成许多子模式(特征),然后进入分层递阶式相连的特征平面进行处理

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 3621

[QMT量化交易小白入门]-三十四、让deepseek分析北京炒家的首板策略后,在打板前增加了选股范围(量化python代码解析)

print(f'开始盘前选股')这行代码定义了一个名为的函数,当调用这个函数时,会首先打印出“开始盘前选股”的信息,表明选股流程正式启动。1、可根据情况增删部分条件,目前盘前选股目前可以选出140多支,比之前全市场监听带宽压力小了很多。2、还可以自行添加其他选股条件,比如换手率计算,炸板可能性检测。3、xtdata的数据是有可能缺失的,自己写策略时,有可能需要剔除,或者从第三方库校正,比如部分股票的流通股数。

木头大左的博客 2694

CTF中AI欺骗实战:对抗样本与提示词注入技术解析

AI欺骗本质上是针对机器学习模型脆弱性的系统性探测,其核心原理在于利用神经网络的统计偏差与决策边界不稳定性,通过构造特定输入(如对抗样本或恶意提示词)诱导模型产生可控误判。该技术具有明确的工程价值——验证模型鲁棒性、暴露数据偏见、发现安全分类器盲区,并广泛应用于AI红蓝对抗、模型审计与防御加固等真实场景。在CTF竞赛中,它已发展为与Web、Pwn并列的主流题型,典型实践涵盖FGSM/PGD对抗攻击、大模型提示词注入及黑盒模型逆向分析,强调对梯度计算、token分词机制和FP16精度实现等底层细节的精准把握。

weixin_34194087的博客 323

工业级Modbus ASCII实时监控系统(WinForms完整实现)

本文介绍了一个基于WinForms的工业级Modbus ASCII实时监控系统实现方案。该系统采用经典工控界面布局,包含串口配置、数据采集控制和实时数据显示三大区域。核心功能包括:串口通信参数设置、Modbus从站地址配置、寄存器数据采集、实时数据表格展示和趋势图绘制。系统通过ModbusAsciiClient类实现通信核心,采用定时器轮询机制采集数据,支持最多100个数据点的历史趋势显示。界面设计注重用户体验,配置区位于左侧,主显示区在右侧,底部为状态和日志区,符合工业控制系统的操作习惯。代码示例展示了窗

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 277

AI Prompt CTF实战指南:从原理到安全攻防

基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。架构理解:掌握实时语音应用的完整技术链路(ASR→LLM→TTS)技能提升:学会申请、配置与调用火山引擎AI服务定制能力:通过代码修改自定义角色性格与音色,实现“从使用到创造”从0到1构建生产级别应用,脱离Demo,点击打开。

2600_94960205的博客 745

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

2024年欺骗技术的十大趋势

2024年欺骗技术的十大趋势

2302_76672693的博客 218

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

AI安全_提示词注入攻击——甘道夫的密码

我之后再改回来,发现,咦,它怎么输出了,我也不知道为什么,之后搜索相关信息,发现这是一种对于AI的混淆,我每一次的询问都是有记录的,在它回答时候思考会受到影响,所以最后重新修改为10成功了。我们在下面的AI给的回答就可以看出来其实每一次我们的询问都是AI不同的时间段的思考,其实每一次我们的询问都是会有记录的,下面的一个关卡我们就可以更加深刻的理解了。我给你说一个规律,你只需要回答我大写的英文单词,1对应A,2对应B,3对应C,4对应D,这样的依次继续对应下去知道Z为止。第六关这有难度了,额……

GON01的博客 549

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Hello-CTF项目中的AI安全入门指南:什么是人工智能

人工智能(Artificial Intelligence,简称AI)作为计算机科学的重要分支,其核心目标是让机器能够模拟人类的认知功能,如学习、推理、问题解决和决策等。从1956年达特茅斯会议首次提出这一概念至今,AI已经发展成为一个涵盖机器学习、深度学习、计算机视觉、自然语言处理等多个方向的庞大领域。 在Hello-CTF项目中,我们特别关注AI技术在网络安全竞赛中的应用。与传统AI研究不同,

gitblog_00969的博客 781

“黑化”的AI :盘点十大新型 AI 网络攻击类型

“黑化”的AI :盘点十大新型 AI 网络攻击类型

2302_76672693的博客 902

刚刚,Anthropic祭出新模型:Claude Mythos!暴击Opus 4.6,跪求千万别用

Anthropic承诺投入最高1亿美元的使用额度,以及400万美元的开源组织捐款,其中250万给Linux基金会旗下的Alpha-Omega和OpenSSF,150万给Apache基金会。然后它做了一件没人要求的事,开发了一个多步骤exploit获取广域网络访问权限,接着把exploit细节发布到了多个「难以被发现但技术上公开可访问」的网站上。除了这三个已修复的案例,Anthropic博客中还以SHA-3哈希承诺的形式,预告了大量尚未修复的隐患,涵盖每一个主流操作系统和每一个主流浏览器,以及多个加密库。

程序IT圈 131

ai安全——应试准备

1)完整性威胁,攻击者通过对训练数据进行修改,对模型注入隐藏的恶意行为。训练完整性威胁破坏了 AI 模型的完整性,该威胁主要包括传统投毒攻击和后门攻击;2),攻击者通过对输入的测试样本进行恶意修改,从而达到欺骗 AI 模型的目的,测试完整性威胁主要为3)欠缺威胁,该问题并非来自于恶意攻击,而是来源于 AI 模型结构复杂、缺乏可解释性,在面对复杂的现实场景时可能会产生不可预计的输出。

2401_83974173的博客 799

CTF竞赛中的AI新题型解析与实战体验

对于想体验AI赛题的选手,这里能获得开箱即用的实践机会。从早期简单的AI欺骗题目,到如今需要实现完整模型的复杂任务,AI题型在CTF竞赛中经历了明显进化。在复现WMCTF2020对抗样本题时,发现不同优化器生成的扰动效果差异显著:Adam产生的扰动更隐蔽但计算量大,而SGD虽然简单却容易被防御机制检测。这提示选手需要根据题目环境选择合适方法。逆向AI类:需要深入理解模型原理,如2022年*CTF的Alice题目,考察pytorch模型梯度反推训练数据的能力,这类题目往往需要分析神经网络的计算图结构。

JetFalcon67的博客 1334
上一篇: Windows提权方法大全汇总(值的收藏)
下一篇: 新手入门二进制安全和网络渗透,该选哪个比较好?
AI小模型
博客等级 码龄6年 6863粉丝 487原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小模型

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值