前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >攻防世界web进阶区web2详解

攻防世界web进阶区web2详解

作者头像
wuming
发布2021-01-21 15:57:18
9350
发布2021-01-21 15:57:18
举报
文章被收录于专栏:wuming_CTF
  1. 1. 题目
    1. 1.1. 解法
      1. 1.1.1. strrev函数
      2. 1.1.2. substr
      3. 1.1.3. ord
      4. 1.1.4. chr()
      5. 1.1.5. str_rot13()

题目

解法

代码语言:javascript
复制
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

function encode($str){
    $_o=strrev($str);
    // echo $_o;
        
    for($_0=0;$_0<strlen($_o);$_0++){
       
        $_c=substr($_o,$_0,1);
        $__=ord($_c)+1;
        $_c=chr($__);
        $_=$_.$_c;   
    } 
    return str_rot13(strrev(base64_encode($_)));
}

highlight_file(__FILE__);
/*
   逆向加密算法,解密$miwen就是flag
*/
?>

我们这里来审计一波for循环,从0到循环到字符串长度从_o开始之后_0长度的字符开始寻找,长度为1的输出给了

php脚本如下

代码语言:javascript
复制
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$miwen=base64_decode(strrev(str_rot13($miwen)));

//echo $miwen;

$m=$miwen;

for($i=0;$i<strlen($m);$i++){
        
    $_c=substr($m,$i,1);
    $__=ord($_c)-1;    # 字符转数字,在减1
    $__=chr($__);      # 数字转字符 

    $_=$_.$__;         # 拼接字符串

    }

echo strrev($_);        # 反转字符串

strrev函数

反转字符串

substr

从第六位开始,返回之后的值

ord

返回第一个字母的ASCII

chr()

从指定的ascii值返回字符 4的十进制ascii是52

str_rot13()

一种编码解码函数 对字符串执行 ROT13 转换,ROT13 编码简单地使用字母表中后面第 13 个字母替换当前字母,同时忽略非字母表中的字符。编码和解码都使用相同的函数,传递一个编码过的字符串作为参数,将得到原始字符串。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
    • 解法
      • strrev函数
      • substr
      • ord
      • chr()
      • str_rot13()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档