BUUCTF Web CyberPunk WriteUp

想直接查看payload的点这里
前言
二次注入(Second-Order Injection)是指攻击者在应用程序中注入恶意数据,然后在稍后的操作或不同的上下文中再次使用该恶意数据,导致安全漏洞。它通常发生在数据库查询、数据导出、报告生成等过程中。
典型的二次注入示例包括在用户注册时注入恶意代码,然后在管理员操作中触发执行,或者在数据库操作中注入恶意代码。为防止二次注入,应采取综合的安全措施,包括输入验证、参数化查询、代码审计和安全编码实践。
对于SQL注入问题,使用参数化查询或预编译语句,并对用户输入进行严格验证和过滤,可防止恶意SQL代码注入。对于二次注入,还需考虑应用程序的整体逻辑和数据流程,确保数据在后续处理中也得到适当处理和过滤,以防再次执行恶意代码。
正文
查看源码,发现提示,有可能存在文件包含

还在源码看到存在index.php,change.php,comfirm.php,delete.php,search.php这些文件
可以用php伪协议fenbie依次读取这些文件:
?file=php://filter/convert.base64-encode/resource=index.php
php://filter/convert.base64-encode/resource=index.php 是一个针对 PHP 文件的路径表达式,它使用了 php://filter 伪协议和 convert.base64-encode 过滤器。
它的含义是将目录下的 index.php 文件内容以 Base64 编码的形式读取。

查看index.php代码可以发现,提交订单的数据要通过confirm.php校验,其中没有校验address地址值。

再查看change.php代码可以发现,修改订单时只用addslashes函数对address函数进行了转义。

再看change.php中最关键一行sql语句:
$sql = "update `user` set
`address`='".$address."', `old_address`='".$row['address']."
' where `user_id`=".$row['user_id'];
它把在index.php中提交的旧地址(old_address)重新保存到数据库里。
所以可以在index.php提交订单的时候,在地址里输入sql注入语句,然后在change.php中修改订单时当时的sql注入语句被执行,这就是二次注入。
这里使用报错注入,然后因为updatexml最多一次显示32个字符,所以用两个payload分开读取flag。
payload:
1'and updatexml(1,concat(0x7e,(select substr(load_file('/flag.txt'),1,30)),0x7e),1)#
1'and updatexml(1,concat(0x7e,(select substr(load_file('/flag.txt'),30,30)),0x7e),1)#
提交订单:

修改订单成功读取到flag:

同理再提交订单修改订单获取后半段的flag:

flag{5cd7240e-e619-4ddf-8bfc-7300b3e1841d}
提交flag

相关文章:
MySQL 文件读写
探索php://filter在实战当中的奇技淫巧
updatexml mysql_深入浅出带你玩转sqlilabs
BUUCTF Web CyberPunk WriteUp的更多相关文章
- XCTF攻防世界Web之WriteUp
XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...
- BuuCTF Web Writeup
WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> ...
- jarvis OJ WEB题目writeup
0x00前言 发现一个很好的ctf平台,题目感觉很有趣,学习了一波并记录一下 https://www.jarvisoj.com 0x01 Port51 题目要求是用51端口去访问该网页,注意下,要用具 ...
- 31C3 CTF web关writeup
0x00 背景 31c3 CTF 还是很人性化的,比赛结束了之后还可以玩.看题解做出了当时不会做的题目,写了一个writeup. 英文的题解可以看这:https://github.com/ctfs/w ...
- 实验吧 Web的WriteUp
每次看别人的Writeup都有一种感觉,为什么有了WriteUp我还是不会,每次都打击自己的积极性,所以自己尝试写一篇每个萌新都能看懂的Writeup. 0x01 天下武功唯快不破 题目提示 : 看看 ...
- BUUCTF WEB
BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...
- 第一周Web类WriteUp
Forms 看到这题目第一反应就是先抓个包试试,抓包之后效果如图所示 看到一个showsource=0,那就想着把它改成1看看会出现什么效果,改成1之后forward,发现网页上变成了这个样子 根据这 ...
- 实验吧 web题writeup
1.http://ctf5.shiyanbar.com/web/wonderkun/web/index.html 用户名我输入:or'xor"and"select"uni ...
- ISG2018 web题Writeup
0x01.命令注入 这题可以使用burpsuite扫出来,但是可能需要测一下. 得知payload为:i%7cecho%20gzavvlsv9c%20q9szmriaiy%7c%7ca%20%23'% ...
- 2019强网杯web upload writeup及关键思路
<?phpnamespace app\web\controller; class Profile{ public $checker; public $filename_tmp; ...
随机推荐
- Solution -「CF 1096E」The Top Scorer
Description Link. 小明在打比赛,包括小明自己一共有 \(p\) 名选手参赛,每个人的得分是一个非负整数.最后的冠军是得分最高的人,如果得分最高的人有多个,就等概率从这些人中选一个当冠 ...
- Redis漏洞总结--未授权--沙箱绕过--(CNVD-2015-07557)&&(CNVD-2019-21763)&&(CVE-2022-0543)
Redis未授权--沙箱绕过--(CNVD-2015-07557)&&(CNVD-2019-21763)&&(CVE-2022-0543) 环境复现 采用Vulfocu ...
- day1项目配置
项目初始化 本项目使用vite进行构建,vite参考官网 pnpm包管理:performant npm,意味"高性能的npm".pnpm由npm/yarn衍生而来,解决了npmly ...
- 【matplotlib 实战】--堆叠面积图
堆叠面积图和面积图都是用于展示数据随时间变化趋势的统计图表,但它们的特点有所不同.面积图的特点在于它能够直观地展示数量之间的关系,而且不需要标注数据点,可以轻松地观察数据的变化趋势.而堆叠面积图则更适 ...
- 非全自研可视化表达引擎RuleLinK可视化之路
导读 上一篇<非全自研可视化表达引擎-RuleLinK>介绍了RuleLink的V1.0版本,虽说一定程度上消除了一些配置相关的样板式代码,也肉眼可见的消除了一些研发资源的浪费:RuleL ...
- centos服务器搭建https
一.环境 OS:CentOS Linux release 8.2.2004 (Core) 硬件:某外网云服务器虚拟机 二.安装命令 1.安装nginx yum install nginx 2.安装签发 ...
- 【NOI 2023 春测】 游寄
3.2 发出发通知单:9:40 3.3 旷操,把背包扔到 \(\texttt{JF}\) 底下,和 Kaguya 一起去吃早饭. 在桥下面被老班抓到了() 我用椅子给 apj 搭了一张床. Apj 给 ...
- Nacos注册中心有几种调用方式?
Spring Cloud Alibaba Nacos 作为近几年最热门的注册中心和配置中心,也被国内无数公司所使用,今天我们就来看下 Nacos 作为注册中心时,调用它的接口有几种方式? 1.什么是注 ...
- 交互式数据分析和python笔记
1.安装conda 类似npm的n https://www.jianshu.com/p/544a4c8a8186 # 安装python 以及依赖 conda create -n joy python= ...
- java 处理常量字符串过长 & springboot 项目读取 resouces 文件夹下的文件内容
长字符串起因 项目里面有一长串的加密字符串(最长的万多个字符),需要拼接作为参数发送给第三方. 如果我们使用 枚举 定义的话,idea 编译的时候就会出现编译报错 Error: java:常量字符串过 ...