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 Set -「ARC 124」
「ARC 124A」LR Constraints Link. 我们可以把 \(1\sim n\) 个盒子里能放的球的编号集合全部求出来.然后就直接来. 注意题目已经给出了 \(k\) 个球的位置,所以 ...
- 【效率提升】maven 转 gradle 实战
一.灵魂三问 1.gradle 是什么? 一个打包工具, 是一个开源构建自动化工具,足够灵活,可以构建几乎任何类型的软件,高性能.可扩展.能洞察等.其中洞察,可以用于分析构建过程中数据,提供分析参考, ...
- c语言代码练习7
//输出0-100的三倍数字#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int i = 0; int ...
- Linux系列教程——Linux发展介绍、Linux系统安装、查看Linux内核版本和系统版本、Centos7安装jdk1.8
文章目录 1 Linux发展介绍 零 什么是Linux 一 Linux前身 二 Linux诞生 三 开源文化 四 Linux系统特点 五 Linux分支 2 Linux系统安装 Linux虚拟机安装 ...
- MySQL系列之MyCat——架构图、准备、安装、配置文件、垂直分表、MyCAT核心特性——分片(水平拆分)、范围分片、枚举分片、Mycat全局表、E-R分片
文章目录 1. MyCAT基础架构图 2. MyCAT基础架构准备 2.1 环境准备: 2.2 删除历史环境: 2.3 创建相关目录初始化数据 2.4 准备配置文件和启动脚本 2.5 修改权限,启动多 ...
- Oracle的差异增量备份和累积增量备份
在rman增量备份中,有差异增量和累积增量的概念. 差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式累积增量:是备份上级备份以来所有变化的块 累积增量是备份上级备份以来所 ...
- Zuul 2.1.5 设计分析
前言 https://github.com/Netflix/zuul zuul 是 SpringCloud 家族老兵,使用 Java 微服务大部分都在使用 zuul 作为网关.既然他如此重要,那么我们 ...
- Sentinel源码改造,实现Nacos双向通信!
Sentinel Dashboard(控制台)默认情况下,只能将配置规则保存到内存中,这样就会导致 Sentinel Dashboard 重启后配置规则丢失的情况,因此我们需要将规则保存到某种数据源中 ...
- 用Python实现将txt中的中文和中文标点保留下来
用正则表达式就可以实现这个操作. 中文标点的正则表达式: [\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u30 ...
- 洛谷P1990
这是一道dp的题,好像也不算dp.需要递推,感觉能训练思维!!!很棒的一道题. 覆盖墙壁 关于这道题的分析 状态表示:f[i][0]表示前i列全部填满的所有方案,f[i][1]表示前i列全部填满缺一个 ...