ctfshow--web10 php代码逻辑漏洞with rollup注入
dirsearch没有扫到文件
查看源代码发现 有个style.css文件点击查看

查看index.phps代码
又是代码审计
点击查看代码
<?php
$flag="";
function replaceSpecialChar($strParam){
$regex = "/(select|from|where|join|sleep|and|\s|union|,)/i";
return preg_replace($regex,"",$strParam);
}
if (!$con)
{
die('Could not connect: ' . mysqli_error());
}
if(strlen($username)!=strlen(replaceSpecialChar($username))){
die("sql inject error");
}
if(strlen($password)!=strlen(replaceSpecialChar($password))){
die("sql inject error");
}
$sql="select * from user where username = '$username'";
$result=mysqli_query($con,$sql);
if(mysqli_num_rows($result)>0){
while($row=mysqli_fetch_assoc($result)){
if($password==$row['password']){
echo "登陆成功<br>";
echo $flag;
}
}
}
?>
他这里preg_replace可以用双写绕过,但是过不了他的strlen检测,一时间不知道怎么绕过上网查了一下,发现其实是他php代码的配置不当导致的注入
原理如下:
先介绍一下with rollup的使用方法
with rollup通常和group by一起结合使用他会将每一列的数字相加并汇总到最后一行
例如
我有一个表长这样

我们按school来分组获取每个school的idd的总和
可以看到 因为有with rollup的命令在,他会额外创建最后一行将上面的所有结果相加并显示出来,这就是rollup的作用

现在我们来讲漏洞的原理:
这里我创建了一个表,其中id字段是int类型而passwd字段是char类型

那么我们在mysql中输入这句话
点击查看代码
select count(*),passwd from users group by passwd with rollup
可以看到在最后一行也就是with rollup帮我们汇总的一行,由于count(*)字段下的内容都是int类型能够相加,因此1+1+1=3
但是passwd的字段都是char类型,不能够相加因此出现null

那么利用这个特点构造payload
点击查看代码
admin'/**/or/**/1=1/**/group/**/by/**/password/**/with/**/rollup/**/#
因为password的字段的最后一行是null所以我们密码不用填写,在用户名输入payload即可。
这样就能登录成功了。即可获得flag
ctfshow--web10 php代码逻辑漏洞with rollup注入的更多相关文章
- 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞
目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...
- ECShop全系列版本远程代码执行漏洞复现
前言 问题发生在user.php的display函数,模版变量可控,导致注入,配合注入可达到远程代码执行 漏洞分析 0x01-SQL注入 先看user.php $back_act变量来源于HTTP_R ...
- Office远程代码执行漏洞CVE-2017-0199复现
在刚刚结束的BlackHat2017黑帽大会上,最佳客户端安全漏洞奖颁给了CVE-2017-0199漏洞,这个漏洞是Office系列办公软件中的一个逻辑漏洞,和常规的内存破坏型漏洞不同,这类漏洞无需复 ...
- Office CVE-2017-8570远程代码执行漏洞复现
实验环境 操作机:Kali Linux IP:172.16.11.2 目标机:windows7 x64 IP:172.16.12.2 实验目的 掌握漏洞的利用方法 实验工具 Metaspliot:它是 ...
- nginx文件名逻辑漏洞_CVE-2013-4547漏洞复现
nginx文件名逻辑漏洞_CVE-2013-4547漏洞复现 一.漏洞描述 这个漏洞其实和代码执行没有太大的关系,主要原因是错误地解析了请求的URL,错误地获取到用户请求的文件名,导致出现权限绕过.代 ...
- Web安全测试中常见逻辑漏洞解析(实战篇)
Web安全测试中常见逻辑漏洞解析(实战篇) 简要: 越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,对信息进行增删改 ...
- 应用安全 - Web安全 - 逻辑漏洞整理
短信轰炸 .Fiddler抓包repeat .burpsuite 修改 PHPSESSID ->字典爆破 如选择a-z .burpsuite手机号遍历 防御: 设置图片验证码,每次获取短信验证码 ...
- 基于 burpsuite的web逻辑漏洞插件开发(来自JSRC安全小课堂,柏山师傅)
基于 burpsuite的web逻辑漏洞插件开发 BurpSuite 提供了插件开发接口,支持Java.Python.Ruby语言的扩展.虽然 BApp Store 上面已经提供了很多插件,其中也不乏 ...
- PHP-fpm 远程代码执行漏洞(CVE-2019-11043)复现
简介 9 月 26 日,PHP 官方发布漏洞通告,其中指出:使用 Nginx + php-fpm 的服务器,在部分配置下,存在远程代码执行漏洞.并且该配置已被广泛使用,危害较大. 漏洞概述 Nginx ...
- 逻辑漏洞介绍 & 越权访问攻击 & 修复建议
介绍逻辑漏洞 逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性.一般出现在密码修改.越权访问.密码找回.交易支付金额等功能处.其中越权访问又有水平越权和垂直越权两种,如下所示. ...
随机推荐
- The 2024 ICPC Asia East Continent Online Contest (I) G
Link: The Median of the Median of the Median 考虑二分答案,对中位数进行二分,每次去判断是否比中位数大即可. 我们钦定了一个中位数 \(x\),对于 \(\ ...
- 使用wxpython开发跨平台桌面应用,设计系统的登录界面
一般的系统登统界面,设计好看一些,系统会增色不少,而常规的桌面程序,包括Web上的很多界面,都借助于背景图片的效果来增色添彩,本篇随笔介绍基于WxPython来做一个登录界面效果,并对系统登录界面在不 ...
- HTTP服务七层架构技术探讨
作者: phpkernel 发布时间: 2012-11-26 13:27 阅读: 3998 次 推荐: 8 原文链接 [收藏] 1. 为什么分层? 计算机领域的体系结构普遍采用了分层 ...
- python之APScheduler
介绍 APScheduler是Python中一个强大的第三方库,用于在后台执行定时任务.它允许我们根据设定的时间间隔.日期规则或特定时间来执行任务,适用于定时执行脚本.定时发送邮件.定时处理数据等场景 ...
- MySQL之使用pt-online-schema-change在线修改大表结构
原因: 最近公司上一个功能, 需要为其中某个表中新增字段,但是考虑到线上数据已经达到300w+的级别,同时使用的mysql的版本是5.7而非8.0,这会导致新增字段的时候,对全表进行加锁,直到添加完毕 ...
- 分布式服务发现与配置之Consul
文档: https://www.consul.io/docs/install 一.什么是consul 1.Consul 是 HashiCorp 公司推出的开源软件,用于实现分布式系统的服务发现与配置. ...
- 聊一下怎么十分钟速水CVE
题目是真的.今天晚上刚接触关于CVE的审计和提交.只能说:牛逼的是真牛逼,水的是真水. 我接下来教你,怎么在10分钟里找到一个CVE的中危漏洞并且提交.然后你就可以去咸鱼接单了,一个一铂快 打开htt ...
- bat隐藏窗口运行
在bat脚本开头添加: if "%1" == "h" goto begin mshta vbscript:createobject("wscript. ...
- manim边做边学--文字的创建与销毁
本篇开始介绍Manim中的动画模块,动画模块是整个框架的核心魅力所在. Manim不仅提供了可以直接实现各种各样动画效果的对象, 还提供了设置动画的时长.延迟时间以及运动速率等参数,可以据此发挥自己的 ...
- LeetCode题集-5 - 最长回文子串之马拉车(二)
书接上回,我们今天继续来聊聊最长回文子串的马拉车解法. 题目:给你一个字符串 s,找到 s 中最长的回文子串. 01.中心扩展法优化-合并奇偶处理 俗话说没有最好只有更好,看着O(n^2)的时间复杂度 ...