Browse Source

update score

root 2 years ago
parent
commit
ffafb81def
7 changed files with 135 additions and 9 deletions
  1. 70 0
      crypty-2/index.html
  2. 13 5
      index.html
  3. 10 0
      js/score.js
  4. 14 3
      log/index.html
  5. 28 1
      score/index.html
  6. BIN
      score/tutor/5.png
  7. BIN
      score/tutor/tamper.crx

+ 70 - 0
crypty-2/index.html

@@ -0,0 +1,70 @@
+<head>
+	<meta charset="UTF-8">
+	<title>crypty</title>
+	<script src="../js/jquery-1.7.2.js"></script>
+	<script src="../js/aes.js"></script>
+	<script src="../js/pad-pkcs7.js"></script>
+	<script src="../js/mode-ecb.js"></script>
+	<!-- <link async rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
+        integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous"> -->
+	<link rel="stylesheet" href="../css/bootstrap.min.css" crossorigin="anonymous">
+	<link rel="preconnect" href="https://fonts.gstatic.com">
+	<link href="https://fonts.loli.net/css2?family=Anonymous+Pro:ital,wght@0,400;0,700;1,400;1,700
+&family=Noto+Serif+SC:wght@300;400;500;600;700&display=swap" rel="stylesheet">
+	<link rel="stylesheet" href="../css/style.css">
+	<style>
+		.sel:hover {
+			background-color: rgb(220, 220, 220);
+			cursor: pointer;
+		}
+
+		.sel input:hover {
+			cursor: pointer;
+		}
+
+		textarea {
+			outline: none;
+			border: 4px double grey;
+			border-radius: 5px;
+		}
+	</style>
+	<script>
+		const key = CryptoJS.enc.Utf8.parse("abcdefgabcdefg12");
+		function aesDecrypt(encrypted) {
+			var cipherParams = CryptoJS.lib.CipherParams.create({ ciphertext: CryptoJS.enc.Hex.parse(encrypted) })
+			var decrypted = CryptoJS.AES.decrypt(cipherParams, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
+			return decrypted.toString(CryptoJS.enc.Utf8);
+		}
+		function aesEncrypt(encrypted) {
+			return CryptoJS.AES.encrypt(encrypted, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).ciphertext.toString();
+		}
+		$().ready(e=>{
+			$("#dec").val('aes~~~\nuses pad-pkcs7, ecb\nkey=abcdefgabcdefg12')
+			$('#enc').val(aesEncrypt($("#dec").val()))
+		})
+	</script>
+</head>
+
+<body>
+	<a class="btn btn-info" href="/" style="text-shadow: rgb(85, 85, 85) 3px 2px 4px;"><span
+			class="glyphicon glyphicon-home" aria-hidden="true"></span>&nbsp;返回</a>
+	<div>
+		<div class="row">
+			<div class="col-lg-6 col-md-6 col-xs-12">
+				明文:
+				<textarea class="col-xs-12" rows="10" name="message" id="dec" class="text_source"
+					onclick="this.select();" style="resize:vertical"
+					oninput="$('#enc').val(aesEncrypt($(this).val()))"></textarea>
+			</div>
+		</div>
+		<div class="row">
+			<div class="col-lg-6 col-md-6 col-xs-12">
+				<div>密文:</div>
+				<textarea rows="10" class="col-xs-12" name="cipher" id="enc" onclick="this.select();"
+					style="resize:vertical" oninput="$('#dec').val(aesDecrypt($(this).val()))"></textarea>
+			</div>
+		</div>
+	</div>
+</body>
+
+</html>

+ 13 - 5
index.html

@@ -137,13 +137,14 @@
                 $('body,.btn,.btn-xs,code,.secret').toggleClass('gee')
                 console.log(e)
             })
-            if(document.domain=='43.143.233.184')$('.alert').hide();
+            if (document.domain == '43.143.233.184') $('.alert').hide();
         })
     </script>
 </head>
 
 <body itemscope itemtype="http://schema.org/WebPage" style="height:100vh">
-    <div class="alert alert-warning">注意:正在将网站迁移至<a href="http://43.143.233.184/">http://43.143.233.184/</a>,此页面内容可能已经过时。</div>
+    <div class="alert alert-warning">注意:正在将网站迁移至<a href="http://43.143.233.184/">http://43.143.233.184/</a>,此页面内容可能已经过时。
+    </div>
     <script src="js/cursorEffects.js"></script>
     <script type="text/javascript">
         new cursoreffects.bubbleCursor();
@@ -203,15 +204,22 @@
     <div class="col-md-10">
         <hr>
         <h3>> 小工具</h3>
-        <p>
+        <div>
             <a class="btn btn-danger" id="score" href="/score/"><span class="glyphicon glyphicon-stats"
                     aria-hidden="true"></span>&nbsp;&nbsp;成绩整理</a>
-            <a class="btn btn-info" href="/crypty/">Crypty</a>
+            <div class="btn-group">
+                <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown">Crypty&nbsp;
+                    <span class="caret"></span></button>
+                <ul class="dropdown-menu">
+                    <li><a href="/crypty/">Crypty</a></li>
+                    <li><a href="/crypty-2/">Hardcoded AES</a></li>
+                </ul>
+            </div>
             <a class="btn btn-info" id="log" href="/log/"><span class="glyphicon glyphicon-list"
                     aria-hidden="true"></span>&nbsp;日志</a>
             <a class="btn btn-warning" id="chem" href="/chem/"><span class="glyphicon glyphicon-fire"
                     aria-hidden="true"></span>&nbsp;化学</a>
-        </p>
+        </div>
     </div>
     <div class="col-md-2">
         <hr><button class="btn btn-danger btn-dang"><span class="glyphicon glyphicon-heart"

+ 10 - 0
js/score.js

@@ -608,6 +608,16 @@ function processFiles(isFirstTime = 0) {
         oChart2.setOption(oOp2);
         oChart3.setOption(oOp3);
         oChart4.setOption(oOp4);
+        window.onresize = function () {
+            setTimeout(function () {
+                sChart1.resize()
+                sChart2.resize()
+                oChart1.resize()
+                oChart2.resize()
+                oChart3.resize()
+                oChart4.resize()
+            }, 300)
+        }
     }
     reader.readAsText(file);
 }

+ 14 - 3
log/index.html

@@ -90,15 +90,26 @@
         <h1>网站日志</h1>
     </div>
 
+    <h3>
+        2022.12.17
+        <small><a href="https://greasyfork.org/zh-CN/scripts/456705-wangshaui-simulator">TamperMonkey</a></small>
+    </h3>
+    <p>写了个集修改 localStorage,替换 javascript,伪造老师身份于一身的用户脚本,但技术能力有限,还得要用户手动屏蔽原来的 javascript。</p>
+    <p>给图表加上了令人舒适的自适应窗口变化功能。</p>
+    <p>准备写各科的分析,现在能拿到接口数据了,还得研究怎么处理。</p>
+    <p>为了方便调试,把心意答接口的加密过程硬编码了一下,以后就可以直接从<a href="/crypty-2">这里</a>处理了。</p>
+    <hr>
+
     <h3>
         2022.12.16
         <small><a href="http://36.112.23.77/">36.112.23.77</a></small>
     </h3>
     <p>这个心意答,简直就是活靶子,循循善诱地让人把他完全攻破。</p>
-    <p>它还有个合适的难度曲线,从未加密的接口里偷数据,到双向加密的接口进行解密,到虚伪的 uuid 验证,每一步都能放出刺激而又吓人的新信息。</p>
+    <p>它还有个合适的难度曲线,从未加密的接口里偷数据,到双向加密的接口进行解密,到伪造 cookie 和 localStorage,再到骗过虚假的 uuid 验证,每一步都能放出刺激而又吓人的新信息。</p>
     <p>我们只能期望,不要有太多人来想着攻击这些接口,不然来一个攻破一个,到时候大家的成绩都成公开的秘密了。</p>
-    <p>我们说它蠢事做尽,还好它坏事没做到底,至少阅卷的权限还握在登陆验证手里。可是,既然会登陆验证了,其他各种东西,如每次考试的成绩单、详细的分析,这些却都完全不需要登陆验证。只要在客户端合适的位置写好老师的校园号(可以从校园邮箱里检索),再模仿网页进行潦草的加密,你就得到了老师的身份,全校所有人的各种信息都暴露无遗。</p>
-    <p>它在加密上也完全没有用心,只草草加了一层 base64 和 AES,密码竟然明文放在 javascript 文件里。而且,这样危险的接口完全不是这么加密来的吧!理应在每个有敏感信息的接口都放上登陆验证,这才能体现出对学生隐私的重视。</p>
+    <p>我们说它蠢事做尽,还好它坏事没做到底,至少阅卷的权限还握在登陆验证手里。可是,既然会登陆验证了,其他各种东西,如每次考试的成绩单、详细的分析,这些却都完全不需要登陆验证。只要在客户端合适的位置写好老师的校园号(可以从校园邮箱里检索),再模仿网页进行加密,或是直接篡改网页的 javascript,你就得到了老师的身份,全校所有人的各种信息都暴露无遗。</p>
+    <p>它在加密上也完全没有用心,只草草加了一层 base64 和 AES,密码竟然明文放在 javascript 文件里,加密函数的名称也没有混淆。而且,这样危险的接口完全不是这么加密来的吧!理应在每个有敏感信息的接口都放上登陆验证,这才能体现出对学生隐私的重视。<b>问题出在哪儿?问题就出在开发者犯懒。</b></p>
+    <p>话又说回来,要是它加上了登陆验证,我还怎么偷你们的成绩呢??也许我可以学学机房大佬,用易语言开发一个木马,然后把老师的账号密码偷过来。或者远程控制老师的电脑,用惊悚图片把老师吓跑,再趁机操作他的帐号。</p>
     <hr>
 
     <h3>

+ 28 - 1
score/index.html

@@ -16,6 +16,10 @@
     <!-- <link rel="stylesheet" href="/css/style.css"> -->
     <script type="text/javascript" src="../js/score.js"></script>
     <style>
+        body {
+            transition-duration: 300ms;
+        }
+
         #controls {
             position: fixed;
             bottom: 20px;
@@ -47,11 +51,16 @@
             box-shadow: inset 0 3px 3px rgb(0 0 0 / 5%);
         }
 
-        .btn.btn-how{
+        .btn.btn-how {
             border-bottom: none;
             border-bottom-left-radius: 0;
             border-bottom-right-radius: 0;
         }
+
+        img {
+            border: 3px dotted grey;
+            width: 30%;
+        }
     </style>
     <title>
         实验中学成绩整理
@@ -147,6 +156,7 @@
             <li class="active"><a href="#chart" data-toggle="tab">图表</a></li>
             <li><a href="#data" data-toggle="tab">数据</a></li>
             <li><a href="#single" data-toggle="tab">单科</a></li>
+            <li><a href="#other" data-toggle="tab">;</a></li>
         </ul>
         <div class="tab-content well well-sm">
             <div class="tab-pane fade in active" id="chart">
@@ -165,6 +175,23 @@
             </div>
             <div class="tab-pane fade" id="single">
             </div>
+            <div class="tab-pane fade" id="other">
+                <p>你是否还想看看别人考的怎么样?</p>
+                <p>想看别人考的怎么样,首先你得安装并启用<a href="https://greasyfork.org/zh-CN/scripts/456705-wangshaui-simulator"
+                        target="_blank">这个脚本</a>。</p>
+                <p>假如你安装脚本都费劲,那无论如何你得先装上 Chrome 浏览器,我已经帮你把 Tampermonkey 搞来了,你只需要<a href="tutor/tamper.crx">下载</a>,Chrome
+                    大概率会自动安装,你再<a href="https://greasyfork.org/zh-CN/scripts/456705-wangshaui-simulator"
+                        target="_blank">从这里</a>就能直接安装脚本了。</p>
+                <p>随后进入心意答界面。多刷新几次,你会发现你来到了后台,然后你得进入学情分析页。</p>
+                <p>这时按
+                    <kbd>F12</kbd> 打开 DevTools 界面,从顶栏分页找到 Network,再刷新一次。
+                </p>
+                <p>此时应出现一堆文件的列表,从里面找到以 'app.9739...'
+                    开头的那个文件,右键选择 Block request URL 屏蔽它。</p>
+                <p>不要关闭 DevTools,再次刷新,你就能看到别人考的怎么样了。假如你还想从不同老师的视角看,可以点击顶端的
+                    changeId 按钮,至于老师的 id 是多少,你可以上数字校园邮箱里面翻一翻。</p>
+                <img async src="tutor/5.png">
+            </div>
         </div>
     </div>
 

BIN
score/tutor/5.png


BIN
score/tutor/tamper.crx