PHP代码审计入门--爆破token脚本学习

14 篇文章 0 订阅
4 篇文章 0 订阅

0x00  写在前面

从零学习php,最终目的实现代码审计入门,软件采用sublime text,环境使用phpstudy搭建,数据库是navicat,需要有基本的前端基础、简单的php+mysql后端基础、渗透知识和漏洞原理,看看曾经遥不可及的代码审计能不能慢慢啃下来。

本章为代码审计入门第十篇,做靶场看到,既然和php代码相关,即使简单也学习记录一下,本题是有关爆破token的md5值。

0x01  函数展示

substr()函数

代码实例展示,唯一需要注意的是如果是证书是从0开始数的,也就是说下面的a是第0位,b才是第一位。

intval函数

较为基础不说了。

 0x02  代码部分

题目代码部分

<?php                         //爆破token的md5值
error_reporting(0);

include('flag.php');
if(isset($_GET['token'])){       //get 传参
    $token = md5($_GET['token']);   //token进行md5加密
    if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){
    //如果token的md5值的第一位等于第十四位等于17位
        if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){
            //并且token的第一位+第十四位+第十五位/第一位等于第三十一位
            echo $flag;
            //输出flag,
        }
    }
}else{
    highlight_file(__FILE__);

}
?>

 如何解决

第一个条件满足

<?php

	for($i=0;$i < 10000;$i++){  		//书写循环,跑0到10000
		$token =md5($i);
		if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){
				echo 'token = '.$i.' md5='.$token;    //满足条件后把i的值返回,把token值返回
		}
}
?>

本地进行查看

添加第二个条件

<?php

	for($i=0;$i < 10000;$i++){  		//书写循环,跑0到10000
		$token =md5($i);
		if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){
			if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){
				echo 'token = '.$i.' md5='.$token;    //满足条件后把i的值返回,把token值返回
		}
}
}

满足条件的参数遍历出来了

0x03  总结

这段时间忙于其它事情,没有写博客,现在回归正轨。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值