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

网站备案网站名称湘乡新闻头条

网站备案网站名称,湘乡新闻头条,wordpress免费公司官网主题,wordpress 头像地址029-安全开发-JS应用DOM树加密编码库断点调试逆向分析元素属性操作 #知识点#xff1a; 1、JS技术-DOM树操作及安全隐患 2、JS技术-加密编码及数据安全调试 演示案例#xff1a; ➢JS原生开发-DOM树-用户交互 ➢JS导入库开发-编码加密-逆向调试 ➢两…029-安全开发-JS应用DOM树加密编码库断点调试逆向分析元素属性操作 #知识点 1、JS技术-DOM树操作及安全隐患 2、JS技术-加密编码及数据安全调试 演示案例 ➢JS原生开发-DOM树-用户交互 ➢JS导入库开发-编码加密-逆向调试 ➢两则案例分析-解析安全登录调试 #JS原生开发-DOM树-用户交互 DOM文档操作对象 浏览器提供的一套专门用来操作网页代码内容的功能实现自主或用户交互动作反馈 在Web开发中浏览器将HTML文档解析为DOM树的结构。DOM树由节点Nodes组成节点可以是元素节点、文本节点、注释节点等。每个节点都有与之相关联的属性、方法和事件。通过使用DOM您可以通过JavaScript或其他支持DOM的编程语言来访问和操作HTML文档的内容、结构和样式。您可以使用DOM提供的方法和属性来选择元素、修改元素的属性和内容、添加或删除元素以及响应用户交互等。 1、获取对象 标签直接写 Class加上符号. id加上符号#r 具体来说document 是代表整个文档的对象而 querySelector() 是在文档中查找与指定选择器匹配的第一个元素的方法。 !-- 这是标题 -- h1 idmyHeader onclickgetValue()这是标题/h1!-- 选择第一个 h1 元素 -- document.querySelector(h1)!-- 选择所有具有 id 类的元素 -- document.querySelector(.id)!-- 选择具有 myHeader id 的元素 -- document.querySelector(#myHeader)2、获取对象属性 **console.log():** 是一个用于在控制台输出信息的方法。它是由浏览器或其他 JavaScript 运行环境提供的调试工具。通过调用 console.log()您可以在控制台中输出消息、变量的值、调试信息等以便在开发过程中进行调试和测试。 例如 console.log(Hello, world!); 这行代码将在控制台输出字符串 Hello, world!。**const:** 是 JavaScript 中的一个关键字用于声明一个只读的常量变量。使用 const 声明的变量不能被重新赋值。一旦被赋值后它的值就不能再改变。 例如 const PI 3.14159; 这行代码声明了一个常量 PI其值为 3.14159。由于是常量PI 的值不能再被修改。总结console.log() 是一个用于输出信息到控制台的方法而 const 是一个关键字用于声明只读的常量变量。它们在功能和用途上是完全不同的。 !-- HTML代码 -- h1 idmyHeader onclickgetValue()这是标题/h1!-- JavaScript代码 -- script// 选择第一个 h1 元素const h1 document.querySelector(h1);**// 获取 h1 元素的 id 属性const id h1.id;// 输出 id 到控制台console.log(id);** /script3、操作元素数据 innerHTML 解析后续代码 var element document.getElementById(myElement); var htmlContent element.innerHTML; // 获取元素的内容包括 HTML 标记 **element.innerHTML bNew Content/b; // 设置元素的内容并解析 HTML 标记**innerText 不解析后续代码 var element document.getElementById(myElement); var textContent element.innerText; // 获取元素的纯文本内容 **element.innerText New Text Content; // 设置元素的纯文本内容**innerHTML 解析后续代码 h1 idmyHeader onclickupdate1()这是标题/h1 scriptfunction update1(){const h1document.querySelector(h1)**h1.innerHTML这是小迪Hr**console.log(str)} /scriptinnerText 不解析后续代码 h1 idmyHeader onclickupdate1()这是标题/h1 scriptfunction update1(){const h1document.querySelector(h1)**h1.innerText这是小迪Hr**console.log(str)} /script4、操作元素属性 可以实现强制转换图片 img srciphone.jpg width300 height300br scriptfunction update(){**const sdocument.querySelector(img)s.srchuawei.pngconsole.log(s.src)//如果这里huawei.png为一个变量由用户传递决定那么就会造成DOM XSS**} /script安全问题 本身的前端代码通过DOM技术实现代码的更新修改但是更新修改如果修改的数据可以由用户来指定就会造成DOM-XSS攻击 网易云翻译可以使用带外dns造成数据库ip泄露 update1 函数通过 innerHTML 插入带有 onerror 事件的 img 元素这可能导致 XSS跨站脚本攻击漏洞。在实际应用中需要谨慎处理用户提供的内容以防止安全漏洞。 h1 idmyHeader onclickupdate1()这是标题/h1 script function update1(){const h1document.querySelector(h1)**h1.innerHTMLimg src# οnerrοralert(1)**console.log(str)} /script#JS导入库开发-编码加密-逆向调试 //Base64 MD5 !-- 引入 md5.js 脚本 -- script srcjs/md5.js/script!-- JavaScript 代码 -- script// 定义字符串变量var str1 xiaodi jichu No1;// 使用 md5.js 中的 md5 函数对字符串进行加密var str_encode md5(str1);// 输出加密后的字符串到控制台console.log(str_encode); /script输出afe5119ec0ab46b55432fc5e24f1dc62 SHA1 !-- 引入 crypto-js.js 脚本 -- script srcjs/crypto-js.js/script!-- JavaScript 代码 -- script// 定义字符串变量var str1 xiaodisec;// 使用 CryptoJS.SHA1 函数对字符串进行 SHA-1 加密并将结果转为字符串var str_encode CryptoJS.SHA1(str1).toString();// 输出加密后的字符串到控制台console.log(str_encode); /script输出ce22eaa1c5ebd3dfb3f4474b66f6d3612d4cb3ee HMAC !-- 引入 crypto-js.js 脚本 -- script srcjs/crypto-js.js/script!-- JavaScript 代码 -- script// 定义密钥和字符串变量var key key;var str1 xiaodisec;// 使用 CryptoJS.HmacSHA256 函数生成 HMAC-SHA256 散列var hash CryptoJS.HmacSHA256(key, str1);// 将散列结果转为十六进制字符串var str_encode CryptoJS.enc.Hex.stringify(hash);// 输出加密后的字符串到控制台console.log(str_encode);// 输出示例11a7960cd583ee2c3f1ed910dbc3b6c3991207cbc527d122f69e84d13cc5ce5c /script输出08ac6dc8773bd34dcadeffb2b90a8b8f5be9453a9dce7cf09d4da2fcb363d9e7 AES script srcjs/crypto-js.js/script script typetext/javascriptvar aseKey 12345678 // 定制秘钥长度必须为8/16/32位, 长度不一致也没问题var message xiaodisec; // 需要加密的内容// 加密 DES/AES切换只需要修改 CryptoJS.AES CryptoJS.DESvar encrypt CryptoJS.AES.encrypt(message, CryptoJS.enc.Utf8.parse(aseKey), // 参数1密钥, 参数2加密内容{mode: CryptoJS.mode.ECB, // 为DES的工作方式padding: CryptoJS.pad.Pkcs7 // 当加密后密文长度达不到指定整数倍(8个字节、16个字节)则填充对应字符}).toString(); // toString转字符串类型console.log(encrypt);var decrypt CryptoJS.AES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(aseKey), // 参数1密钥, 参数2解密内容{mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8); // toString转字符串类型,并指定编码console.log(decrypt); // xiaodisec /script输出g4ohopaiYA34XXLsV92Udw xiaodisec DES script srcjs/crypto-js.js/script script typetext/javascriptvar aseKey 12345678 // 定制秘钥长度必须为8/16/32位 长度不一致也没问题var message xiaodisec; // 需要加密的内容// 加密 DES/AES切换只需要修改 CryptoJS.AES CryptoJS.DESvar encrypt CryptoJS.DES.encrypt(message, CryptoJS.enc.Utf8.parse(aseKey), // 参数1密钥, 参数2加密内容{mode: CryptoJS.mode.ECB, // 为DES的工作方式padding: CryptoJS.pad.Pkcs7 // 当加密后密文长度达不到指定整数倍(8个字节、16个字节)则填充对应字符}).toString(); // toString转字符串类型console.log(encrypt); // 控制台打印 CDVNwmEwDRM//解密var decrypt CryptoJS.DES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(aseKey), // 参数1密钥, 参数2解密内容{mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8); // toString转字符串类型,并指定编码console.log(decrypt); // 控制台打印 i am xiaozhou ?/script输出WVSwdlodMcV2n1FH72uXgw xiaodisec RSA script srcjs/jsencrypt.js/script script typetext/javascript// 公钥 私匙是通过公匙计算生成的不能盲目设置var PUBLIC_KEY -----BEGIN PUBLIC KEY-----MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALyBJ6kZ/VFJYTV3vOC07jqWIqgyvHulv6us/8wzlSBqQ2eOTX7s5zKfXY40yZWDoCaIGktP/sc0D6dQzjaxECAwEAAQ-----END PUBLIC KEY-----;//私钥var PRIVATE_KEY -----BEGIN PRIVATE KEY-----MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvIEnqRn9UUlhNXe84LTuOpYiqDK8e6W/q6z/zDOVIGpDb545NfuznMp9djjTJlYOgJogaT60/xzQPp1DONrEQIDAQABAkEAu7DFsqQEDDnKJpiwYfUE9ySiIWNTNLJWZDN/Bu2dYIV4DO2A5aHZfMe48rga5BkoWq2LALlY3tqsOFTe3M6yoQIhAOSfSAU3H6jIOnlEiZabUrVGqiFLCb5Ut3Jz9NN5p59AiEA0xQDMrxWBBJ9BYq6RRY4pXwa/MthX/8Hy3GnvNw/yUCIG/3Ee578KVYakq5pih8KSVeVjO37C2qj60d3Ok3XPqBAiEAqGPvxTsAuBDz0kcBIPqASGzArumljkrLsoHHkakOfU0CIDuhxKQwHlXFDO79ppYAPcVO3bph672qGD84YUaHFpQ-----END PRIVATE KEY-----;//使用公钥加密var encrypt new JSEncrypt();//实例化加密对象encrypt.setPublicKey(PUBLIC_KEY);//设置公钥var message xiaodisec // 需要加密的数据var encrypted encrypt.encrypt(message);//对指定数据进行加密console.log(encrypted) // JQ83h8tmJpsSZcb4BJ3eQvuqIAs3ejepcUUnoFhQEvum8fA8bf1Y/fGDO1bSIVNJF6EOZKe4wa0njv6aOar9w//使用私钥解密var decrypt new JSEncrypt(); // 创建解密对象decrypt.setPrivateKey(PRIVATE_KEY); //设置私钥var uncrypted decrypt.decrypt(encrypted); //解密 xiaodisecconsole.log(uncrypted); /script输出Fw1H5KoC6zZnwAzLee8z5ubmQYSqaVqu711VINBavYT9bkWpzxUtZHmbSUvLbuCblPO96NdfoQHtPe9TURo6A xiaodisec ‘admin’ OR 11 — ‘的含义 首先让我们逐步解析这个语句的含义。在MySQL中’admin’表示一个字符串常量OR关键字表示逻辑或运算符而11是一个恒定为真的条件。最后的’– ‘表示注释使得引号后的内容成为注释而不被解析。 换句话说这个语句在条件中使用了11这个条件总是为真因此结果总是返回真。这就可以绕过许多条件验证让用户以admin的身份执行相关操作。 举个例子假设SQL语句如下 SELECT * FROM users WHERE username admin OR 11 -- AND password 123456这个语句的意图是从users表中选择username为’admin’且password为’123456’的记录。然而由于’admin’ OR 11 — ‘这个条件恒为真实际上会选择所有的记录而不仅仅是admin账户。 逆向调试 浏览器控制台比对发出疑问如果加密格式不显示出来怎样判断密码加密的方式是什么 小迪渗透吧-提供最专业的渗透测试培训,web安全培训,网络安全培训,代码审计培训,安全服务培训,CTF比赛培训,SRC平台挖掘培训,红蓝对抗培训-登录 (xiaodi8.com) 打开页面选择密码右击鼠标打开检查 找到相关id值edtPassWord并进行搜索$(#btnPost).click(function() 加#后证明是想取id值中的edtPassWord input typetext **idedtUserName** nameedtUserName size20 value tabindex1找到密码的加密方式$(#password).val(**MD5**(strPassWord)); 为MD5 尝试传递数据发现提交的表达数据中密码确实加密的btnPost%E7%99%BB%E5%BD%95usernameadminpassworde10adc3949ba59abbe56e057f20f883esavedate1 分析代码过程发出疑问如果加密格式不显示出来怎样判断加密的方式是什么 可以借助检查的控制台尝试输入获取加密后的密码值再和提交表单的加密值进行比对若一致则证明识别出。一般安全防护比较强的不会把运行的所以东西全加载到浏览器上 **MD5(xiaodi) bb1be44c4f8e615aeba54e9d233c23b6**断点调试一般安全防护比较强的不会把运行的所有东西全加载到浏览器上所以要执行断点调试 申通快递会员中心-登录 (sto.cn) 打开页面选择密码右击鼠标打开检查找到相关id值**numPassword** 并进行搜索 找到密码的加密格式但是没有明文展现出来 logindata.UserName encodeURI(encrypt.encrypt(numMobile)); logindata.Mobile encodeURI(encrypt.encrypt(numMobile));; //加密密码 logindata.Password encodeURI(encrypt.encrypt(numPassword));采用之前的方式在控制台中输入相应的代码encodeURI(encrypt.encrypt(numPassword))报错encrypt is not defined有一些文件只在服务器本地执行不会加载到浏览器中 必须采用调试断点的方式来通过服务器获取其执行文件然后修改对应的返回密文即可 对应地方打上断点点击登录进入断点调试发现右侧出现输入的账号密码内容 点击最右侧按钮进入调试再次打开控制台并输入encodeURI(encrypt.encrypt(numPassword))发现成功回显加密后的密码 encodeURI(encrypt.encrypt(numPassword)) YvnVBFSz/w0kv1st6gqlzu5bqnTJ/0L8aDnQIr2Vgy5QRfwYJ9a7/eUWdFTZ/N0ppU7SYYcdwYH8Iu8Kpr32mXVHZh/2HgoAcnrukiTUfeJthrkczLnmE9y9CW2d9jq4BRdfbh8uLzX1k5JxHrGI8IKyZTGQTXCZhVouI/qw将其修改为SQL注入的语句也成功返回加密内容
http://www.zqtcl.cn/news/645136/

相关文章:

  • 快站公众号工具台州网站制作系统分析怎么写
  • 品牌网站制作方案如何写推广软文
  • o2o营销seo薪酬如何
  • 网站开发公司 网站空间推广网站制作
  • 鞍山网站制作小程序WordPress网盘下载插件
  • 保山市建设厅官方网站郑州建设信息网站
  • clh网站建设公司h5网站源代码
  • 做装修的网站怎么做好服装市场调网站建设的目的
  • 佛山网站建站电子工程网名又知道你是做工程
  • 桐乡网站二次开发商城购物网站建设
  • 大连微网站制作公司网页多钱
  • 郑州网站托管助企网络营销推广合作
  • 做电商网站用什么软件企业网站建设方案范本
  • o2o商城网站搭建潍坊定制网站搭建
  • 网站建设费用说明青岛网站建设方案公司
  • 佛山市建设企业网站服务机构优化seo是什么
  • 仿70网站分类目录源码市场营销策划ppt免费模板
  • 广东圆心科技网站开发网站模板设计网页程序代码
  • 网站平台定制开发一级a做爰网站下载
  • 网站如何做流媒体wordpress导出软件
  • 电商网站流程图esp8266做网站
  • 细胞医疗 网站模版免费网址软件
  • app地推网企业seo解决方案
  • php网站转移网吧手机网站模版
  • 北京建设教育网站今天的国内新闻
  • 江苏省建设银行网站天心区网站建设公司
  • 网站分享设计网站备案收费么
  • 手机网站专题关于asp sql网站开发的书籍
  • 网站建设属于什么领域小米发布会在哪里看
  • 免费空间访客领取网站提高网站互动性