标签:his _id 数据 special 编辑 logs control 后缀 删除文件
前台SQL时间盲注
在前台作品评分处
Lib\Home\Action/CommAction.class.php
第56行
$ting_id = $_GET["id"];
第133行
$ting_gold = $mod->where("ting_id=‘$ting_id‘")->getField("ting_gold");
导致了可以时间盲注 因为回显不明确
后台GetShell
后台附件设置处
fuzz过程 输入php 被过滤成空 所以 phphpp 提交之后就会变成php
跟踪到\Lib\Admin\Action\AdminAction.class.php
$config["upload_class"] = trim(str_replace(array("php", "asp", "apsx", "txt", "asax", "ascx", "cdx", "cer", "cgi", "jsp", "html", "html", "htm", ",,"), "", strtolower($config["upload_class"])), ",");
抓包 跟踪一下 发现同样的操作
$upload_class = str_replace(array("php", "asp", "apsx", "txt", "asax", "ascx", "cdx", "cer", "cgi", "jsp", "html", "html", "htm", ",,"), "", strtolower(C("upload_class"))); var_dump(strtolower(C("upload_class")));
附件配置处的地方替换一次后写进config.php 这里从config.php中读出来的时候再替换一次 所以在附件设置的地方就该未雨绸缪构造一个两次替换后才是php的后缀
这里我用的是ptxtptxthtxtptxthtxtp
替换一次是pphphp
替换两次就是php
后台任意文件删除
模板文件管理的地方和数据库恢复的地方
public function del(){ $id = admin_gxl_url_repalce(str_replace(‘*‘,‘.‘,trim($_GET[‘id‘]))); //die($id); if (!substr(sprintf("%o",fileperms($id)),-3)){ $this->error(‘无删除权限!‘); } @unlink($id); if (!empty($_SESSION[‘template_jumpurl‘])) { $this->assign("jumpUrl",$_SESSION[‘template_jumpurl‘]); }else{ $this->assign("jumpUrl",‘?s=Admin/Template/Show‘); } $this->success(‘删除文件成功!‘); }
没有过滤 可以任意文件删除
任意文件下载
GET /index.php?s=Admin-Data-Down-id-20170805_2978_1.sql HTTP/1.1
public function down(){ $filepath = DATA_PATH.‘_bak/‘.$_GET[‘id‘]; //die($filepath); if (file_exists($filepath)) { $filename = $filename ? $filename : basename($filepath); $filetype = trim(substr(strrchr($filename, ‘.‘), 1)); $filesize = filesize($filepath); header(‘Cache-control: max-age=31536000‘); header(‘Expires: ‘.gmdate(‘D, d M Y H:i:s‘, time() + 31536000).‘ GMT‘); header(‘Content-Encoding: none‘); header(‘Content-Length: ‘.$filesize); header(‘Content-Disposition: attachment; filename=‘.$filename); header(‘Content-Type: ‘.$filetype); readfile($filepath); exit; }else{ $this->error(‘出错了,没有找到分卷文件!‘); } }
依然没有过滤 构造的时候用\\..\\..\\跨目录
任意文件读取
后台添加广告的地方 抓包
//后置操作 public function _after_insert(){ $array = $_POST; var_dump($array); //die(‘./‘.C(‘admin_ads_file‘).‘/‘.$array[‘ads_name‘].‘.js‘); write_file(‘./‘.C(‘admin_ads_file‘).‘/‘.$array[‘ads_name‘].‘.js‘,t2js(stripslashes(trim($array[‘ads_content‘])))); $this->success(‘添加广告位成功!‘); }
这里没有过滤 把js文件写在Template\gxlcms目录下
模板管理的地方就可以编辑 点编辑
public function add(){ $filename = admin_gxl_url_repalce(str_replace(‘*‘,‘.‘,trim($_GET[‘id‘]))); if (empty($filename)) { $this->error(‘模板名称不能为空!‘); } $content = read_file($filename); $this->assign(‘filename‘,$filename); $this->assign(‘content‘,htmlspecialchars($content));
就可以跳目录读取任意文件了 但是很遗憾 更新的地方他写死了 只能修改白名单内的文件 所以不能getshell
尝试生成tt/2.js 然后访问tt 不能进行目录遍历
任意文件下载
这里跟上面形成的原因一样 都是没有过滤造成的
Gxlcms时间盲注+后台任意文件删除读取下载+getshell
标签:his _id 数据 special 编辑 logs control 后缀 删除文件
原文地址:http://www.cnblogs.com/test404/p/7291992.html