当前位置:网站首页>闪电十六鞭
闪电十六鞭
2022-08-08 06:22:00 【Joker. .】
php代码审计
<?php
error_reporting(0);
require __DIR__.'/flag.php';
$exam = 'return\''.sha1(time()).'\';';
if (!isset($_GET['flag'])) {
echo '<a href="./?flag='.$exam.'">Click here</a>';
}
else if (strlen($_GET['flag']) != strlen($exam)) {
echo '长度不允许';
}
else if (preg_match('/`|"|\.|\\\\|\(|\)|\[|\]|_|flag|echo|print|require|include|die|exit/is', $_GET['flag'])) {
echo '关键字不允许';
}
else if (eval($_GET['flag']) === sha1($flag)) {
echo $flag;
}
else {
echo '马老师发生甚么事了';
}
echo '<hr>';
highlight_file(__FILE__);可以看到需要get一个flag变量,第一个绕过
else if (strlen($_GET['flag']) != strlen($exam)) {
echo '长度不允许';
}flag的长度要等于exam=49

第二个绕过,flag,echo,[ ]等被过滤,
else if (preg_match('/`|"|\.|\\\\|\(|\)|\[|\]|_|flag|echo|print|require|include|die|exit/is', $_GET['flag'])) {
echo '关键字不允许';
}第三个绕过,这里传入的flag值要等于原本的flag的sha1值,但是flag根本不知道,,所以这里就要利用eval函数的短标签绕过了
else if (eval($_GET['flag']) === sha1($flag)) {
echo $flag;
}
(不知道为什么,从我的笔记复制过来就有显示问题,就用图片来代替吧)
拿到
从输出了“马老师发生甚么事了”可以看到我们其实是没有让传入的flag=sha1($flag)的,而是直接让eval函数输出flag
边栏推荐
猜你喜欢
随机推荐
独立成分分析ICA/FastICA
最完整的分布式架构设计图谱
Neo4j service configuration
模板引擎art-template
YoloV4训练自己的数据集(六)之Yolo -Tiny
人机对话中得意图识别(关键词提取,svm工具)
网络安全:系统文件属性
10道集合框架面试题(含解析),来看看你会多少
2-SAT
JS截取字符串最后一个字符,截取“,”逗号前面字符,赋值集合
“独家全新”MySQL进阶套餐,你确定不看吗?
Kingbase ES创建过程,报错:PL/SQL block not end correctly
数组对象方法
docker修改mysql配置文件
使用pyQt 网格布局(QGridLayout)创建一个计算器
学生管理系统
【分布式】链路追踪 jaeger
学习残差神经网络(ResNet)
在AWS CodeBuild中更新Lambda导致进程被占用(status error 255)的解决方案
Anaconda安装使用









