标签 学习笔记 下的文章 - NianSir's BLOG
首页
关于 | About US
文章协议
友情站点
搜 索
1
【Minecraft | 我的世界】PC存档转移到服务器存档教程
7,872 阅读
2
记一次七日杀(7Days to die)游戏服务器搭建及联机问题和解决方案
1,076 阅读
3
【陌辞论坛】送一批邀请码,带惊喜大礼
932 阅读
4
【免费主机】进行时数据 - 免费1G主机
836 阅读
5
【免费CDN】Faryun - 消除你对公益云的偏见
805 阅读
生活杂谈
好物分享
技术探索
代码杂烩
学习笔记
登录
/
注册
搜 索
标签搜索
学习笔记
网络
CDN
免费
网络安防
Minecraft
Windows
服务器搭建
参赛
奖品
Python
实战
站点优化
PILOT
百乐
优质文具
OurlIMG
免费图床
公益项目
免费主机
NianSir
累计撰写
25
篇文章
累计收到
10
条评论
首页
栏目
生活杂谈
好物分享
技术探索
代码杂烩
学习笔记
页面
关于 | About US
文章协议
友情站点
用户登录
登录
注册
找到
3
篇与
相关的结果
2024-10-25
【CTF WriteUp】2024年NSSCTF秋季招新赛(校外赛道)部分WEB题解题WriteUp
前言近期也是很幸运的接触到了网安领域,大一的时候就听说那时网安方向就业还比较不错,而且很有趣,但一直没有深入了解更别提学习了,正好前段时间九月底学校突然推了个网络安全技术大赛,一开始还以为就是那种写写选择题的,心想着去混混看,结果开赛前一周主办方发来文件的时候一看一个不吱声,30%理论考试70%靠CTF,直接就是一个懵逼 😭 但毕竟都报名了这不是打退堂鼓的时候,寻思着就硬着头皮上吧,从来没接触过这些东西的小小白也是比赛前两天开始跟着一众师傅的足迹摸爬滚打学了点基础功,发现其实还蛮有意思的。但网安学习可不是一两天的事情,太多基础功和基础中的基础需要补了,无奈还有主业在身,只能靠时间慢慢沉淀一些了。前些阵子正好瞥见NSSCTF平台开了个新生赛,难得碰上(NSSCTF真的很棒,不黑不吹,至少VIP真的很划算,工坊内容真的也很精细 😁 顺带一提我临时抱佛脚就是追着NSSCTF里的一众师傅的WP学习的)就参加了一下打了一天(师傅们别骂啦,我是菜鸡 😱 ),但是有一说一,我来写这个WP并不是因为我厉害,至是顺带记录一下我的 解题 摸鱼过程,一定还有很多优秀师傅的解题WP更加精细完美de! 😘概况介绍本篇WP记录的是一部分WEB题(较简单)的解题,还有很多我做不出来呜呜呜 😭 有一些题目甚至是“投机取巧”靠运气得来,另外杂项部分也有几题WP可能考虑后期再发一篇,总之各位师傅就当个乐子看就好啦,当然如果有师傅原意指导一下didi真的感激不尽!!! 😘部分WEB解题WriteUp接下来就是正片了,请各位师傅看乐子:题目1:The future开启环境后进入页面,直接就是看源代码了:一看一个不吱声,总感觉有诈,但是看代码确实没啥明显猫腻,而且分值不高所以直接传个flie参数试试?那就直接根目录下flag吧,结果直接就出来了,这运气哈哈哈哈,一般flag都会出现在根目录下,而且一般是“flag”、“f1ag”这样的命名,不过感觉实际思路应该不是这样的,但是运气嘛,就是这样,此题完结 😉题目2:ez_sql随便丢个参数提交看看结果,因为看题目名字是个sql相关的猜测是sql注入,但是参数提交的时候感觉有点不对味,变字符串了,而且没特殊符号,应该是加密了,分析一下,可以看到是16进制加密,本来想着用sqlmap梭哈但是玩不来(纯小丑了哈哈哈),还是人工尝试吧直接手动构造payload检查是否存在SQL注入:查询框输入2' order 2#虽然少输入了一个by但是弄巧成拙发现直接暴露了sql语句,那现在就好办了,直接手动构造确定四列,直接构造联合查询payload:99' union select version(),@@version_compile_os,database(),user()#为了让我们的联合查询值正确显示出来不被前面的正常数据覆盖,我们选择直接查询一个不存在的id,例如99,成功返回我们需要的目标:此方案可行,并且是root权限用户,先看看数据库还有哪些表,因此我们直接将其他参数改成需要的内容比如查询数据表等,构造联合查询查看ctf内的数据表:99' union select null,null,table_name,table_schema from information_schema.tables where table_schema= 'ctf'#发现flag表,猜解数据表: 成功拿到了数据表内的两个字段:直接查询id和data:99' union select 1,2,id,data from flag#拿下!:还算是很常规的SQL注入漏洞了,基础功打好就可以套公式做出来咯 😁题目3:PHP躲猫猫开启环境进入页面就看到一条提示语让我们传NSS参数值:开局就是让我们随便传NSS尝试使用GET传任意值NSS,发现还不够,再加上POST传NSS,这下可以了,让我们看geifile.php,直接打开发现是一部分源代码,根据源代码逻辑分别构造ATM和CTF参数真不愧是躲猫猫打开hello.php空页面既然都说在f1ag.php里面我们就直接打开看看,结果发现404页面,淦!被逗了!!!这里因为是直接include NSS值,所以不需要管下面那个if NSS=I love CTF了,还记得上面那个hello.php访问是空的吗?直接用PHP伪协议试试:NSS=php://filter/read=convert.base64-encode/resource=hello.php成功拿到一段Base64加密字符串表示的源码内容:PD9waHAgDQokZjFhZ2ZpbGU9J2YxYWflnKguL2YxYWcucGhw6YeM6Z2i77yM5b+r5Y67SW5jbHVkZeeci+eci+WQp++8jOWlh+aAqu+8jOS4uuS7gOS5iOi/mOimgeWGjeivtOS4gOmBje+8jOiOq+S4jeaYr+iXj+S6huS7gOS5iCc7DQovL0luIHRoZSBmdXR1cmUsQ1ZFLTIwMjQtMjk2MSBmaWxlX2dldF9jb250ZW50cygpOiBsZmkgdG8gUkNFLiBEb250IGtvbncgPyBZIHdpbGwga29udy5Hb29kIGx1Y2t5LCBzbWFydCBsaXR0bGUgaGFja2VyDQo=直接拿去解密看看是什么<?php $f1agfile='f1ag在./f1ag.php里面,快去Include看看吧,奇怪,为什么还要再说一遍,莫不是藏了什么'; //In the future,CVE-2024-2961 file_get_contents(): lfi to RCE. Dont konw ? Y will konw.Good lucky, smart little hacker 好像还是没有什么很特别的信息,就只告诉我们是文件包含漏洞,我们试着使用data协议执行ls命令:NSS=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJscyIpPz4=无回显,这下是真gg,现在唯一的线索就是从hello.php中的注释:CVE-2024-2961,看起来还是个很新的漏洞,直接去查一下这个漏洞相关信息:以下内容来自【FreeBUF@知道创宇404实验室】原文地址:CVE-2024-2961 漏洞分析 - FreeBuf网络安全行业门户近期,Linux GLIBC的库函数iconv缓冲区溢出漏洞(CVE-2024-2961)的细节/PoC被公开,目前已知的利用方式是可以让PHP的任意文件读取漏洞升级的远程命令执行漏洞。本文将对公开的漏洞细节和PHP利用思路进行分析研究。1 ICONV漏洞详情CVE-2024-2961本质上是GLIBC中iconv库的漏洞,我认为该漏洞的发现巧合性很大。该漏洞的发现者是通过fuzz php发现该漏洞的,如果单纯的fuzz iconv库是无法导致crash,就算是fuzz php,一般情况下就算触发了该漏洞也很难导致crash。补充(PWN佬狂喜):缓冲区溢出是二进制安全研究领域里很常见的漏洞.所谓缓冲区溢出是指当一段程序尝试把更多的数据放入一个缓冲区,数据超出了缓冲区本身的容量,导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据.攻击者可以利用缓冲区溢出修改计算机的内存,破坏或控制程序的执行,导致数据损坏、程序崩溃,甚至是恶意代码的执行。缓冲区溢出攻击又分为栈溢出、堆溢出、格式字符串溢出、整数溢出、Unicode溢出.基本原理就是 iconv 在转换 ISO-2022-CN-EXT 时出现越界写入,iconv 是 php://filter/ 使用过滤器时会使用的函数.据原作者描述该漏洞影响PHP 7.0.0 (2015) 到 8.3.7 (2024)近十年php版本的任何php应用程序(Wordpress、Laravel 等)。PHP的所有标准文件读取操作都受到了影响:file_get_contents()、file()、readfile()、fgets()、getimagesize()、SplFileObject->read()等。文件写入操作同样受到影响(如file_put_contents()及其同类函数).关于该漏洞的其他利用场景:原作者提出了PHP-MySQL注入到RCE,XXE到RCE,phar的替代品,new $_GET'cls';,文件读取反序列化(unserialize())也可以利用CVE-2024-2961这个漏洞将其升级为远程代码执行。总之,只要能控制文件读取或写入端点的前缀,就可能实现远程代码执行(RCE),具体可以看原作者博客。国内师傅还提出了可以用来绕过disable_functions。不是哥们,这...是不是有点太变态了,140分的web题都这样玩是吧?直接摆烂做法,既然名字叫f1ag,那就直接伪协议碰碰运气,直接查根目录下的/f1ag.php,没有输出,再试试/f1ag,得到一串字符串:TlNTQ1RGezI1ZmJmODkzLWIxMWEtNDEyNi05YjM0LTRkMGU2NGRmM2MwMX0K Base64解码: NSSCTF行了,这辈子真是有了,咳咳,都说运气是实力的一部分,此题完结. 😆题目4:UploadBaby为数不多的即经典又简单的文件上传题:可恶的前端不让我传world马很经典的前端验证绕过上传题,直接无脑BP抓包修改就行,随便点个文件上传,发现限JPG文件:写好一句话🐎,这里用剑蚁经典一句话,写好后改名后缀jpg并在BP浏览器内开启拦截执行上传操作:拦截后改后缀为PHP放行:观察页面,很明显上传成功:直接拿到地址连接剑蚁或者直接post传参,接着就是经典ls+cat组合拳了:毫不费力拿下分数 😋题目5:怎么多了个没用的PHP文件描述:notion.php 是一个没啥用的php文件,不知道被设计出来是干什么的,出题人傻啦?(这个题目当时解题没截图,抱歉了只能暂时文字说明了)咋一看页面和上面一个前端验证一模一样,难道是出题人真傻了?显然不是,同样的套路不会出现两次,既然上一个是前端验证,那这一个很可能就是后端验证了,尝试上传一些常见/不常见php文件后缀,都被拦截了,很明显不是这样。出题人特意提醒了有个“没用的php文件”显然不是真的没用,我们访问一下这个页面发现是空白页,肯定也不是直接从这个文件上上手,这个时候我突然想到一个问题,就是所有上传文件都是直链,而且至是限制了一些可执行文件的上传,那么我们思考一下web服务器机制,当我们上传了一个站点的完整文件的时候这个upload目录岂不是就成了一个站点目录?再想想出题人虽然不让我们上传一个php文件但是允许我们上传其他文件,我们试试ini文件是否被ban,结果意料之中上传成功。那这个时候我们就可以利用站点配置文件的特性了 “当站点任意php被执行时都会检查当前站点的 .user.ini 内的配置并应用” ,那我们就可以通过在 .user.ini 里写入一项包含配置让所有php被执行时都会插入我们的目标内容:auto_prepend_file=abc.txt我们在abc.txt内写入PHP一句话木马,分别上传txt文件和这个ini文件,再访问notion.php,尝试使用ls指令:成功!!!直接cat flag!:此题完结!(说实话这题确实是考的有点刁了哈哈哈一开始差点没想出来 😂 )剩下几题要么是没做出来要么是没截图就没发啦!后期有机会再写wp吧。感谢各位师傅观看,不足之处还请批评指正呐 😜 祝各位师傅遇啥啥会,蒙都全对!
2024年10月25日
18 阅读
0 评论
4 点赞
2024-09-05
记一次Vue-CLI安装遇到的问题及解决方案
前言在前端开发中,Vue.js是一种流行的JavaScript框架,而Vue CLI是Vue.js的官方脚手架工具,用于快速搭建Vue.js项目。然而,在使用Vue CLI进行安装的过程中,有时会遇到各种问题,本篇文章将记录我在安装Vue CLI过程中遇到的问题以及解决方案,希望能够帮助到其他同志。 😀 为了更贴合生产环境(大多数是Linux系统)我选择了Git Bash作为操作终端,这样可以直接使用Linux指令进行操作,不过Windows自带的PowerShell同样可以执行大部分的Linux指令大家根据喜好自行选择就好; 😋 首先,我们确保电脑已经正确安装配置了Node.js(前置条件),如果没有下载安装可以直接前往官网下载:https://nodejs.org/zh-cn 选择TLS稳定版本即可,由于本篇文章主要解决Vue-CLI的安装问题,因此node.js具体安装中的选项等此处不赘述,有疑问可以在网上查阅其他优秀博主的文章。问题复现——终端使用npm指令安装无响应/失败确保安装好Node.js后我们可以在终端输入 node -v 检查是否成功返回node.js版本号,成功返回则表示安装配置成功。 接下来我们使用npm指令(npm在安装Node.js的时候就会默认安装)进行Vue-cli的全局安装,使用以下指令:npm install -g @vue/cli接下来发现Git Bash终端长时间无响应/进度变化,初步猜测npm官方源无法正常连通,果断切换到其他国内镜像,使用以下指令切换npm默认源:设置源: npm config set registry http://mirrors.cloud.tencent.com/npm/ 验证当前使用的源: npm config get registry 另外附常用优秀镜像地址: npm官方原始镜像:https://registry.npmjs.org 淘宝 NPM 镜像:https://registry.npmmirror.com 阿里云 NPM 镜像:https://npm.aliyun.com 腾讯云 NPM 镜像:https://mirrors.cloud.tencent.com/npm 华为云 NPM 镜像:https://mirrors.huaweicloud.com/repository/npm 网易 NPM 镜像:https://mirrors.163.com/npm 中科院大学开源镜像站:http://mirrors.ustc.edu.cn 清华大学开源镜像站:https://mirrors.tuna.tsinghua.edu.cn发现切换源后再次执行vue-cli安装指令报错,提示没找到这个目标,去浏览器检查了这几个源站发现镜像源基本都没有vue-cli,同时意外发现npm官方源其实可以访问,再次尝试使用npm安装指令,依然无效 😥 :$ npm install vue-cil@2.9.x -g npm ERR! code ECONNRESET npm ERR! syscall read npm ERR! errno ECONNRESET npm ERR! network request to https://registry.npmjs.org/vue-cil failed, reason: read ECONNRESET npm ERR! network This is a problem related to network connectivity. npm ERR! network In most cases you are behind a proxy or have bad network settings. npm ERR! network npm ERR! network If you are behind a proxy, please make sure that the npm ERR! network 'proxy' config is set properly. See: 'npm help config' npm ERR! A complete log of this run can be found in: C:\xxxxxx\npm-cache\_logs\2024-09-05T01_52_19_802Z-debug-0.log 猜测是npm官方源中的下载地址无法连通, 😂 果断放弃npm方案,之前偶然了解到cnpm是一个npm的替代方案,指令和npm一样但是更好用,尝试通过cnpm解决。使用CNPM替代NPM执行首先通过npm安装cnpm,这个各大镜像都有同步,大家选一个访问速度还行的就行,这里我使用了阿里源:npm install -g cnpm -registry=http://registry.npmmirror.com成功安装:added 1 package in 25s使用 cnpm -v 检查是否成功安装:$ cnpm -v cnpm@9.4.0 (D:\xxx\v21.7.0\node_modules\cnpm\lib\parse_argv.js) npm@9.9.2 (D:\xxx\v21.7.0\node_modules\cnpm\node_modules\npm\index.js) node@21.7.0 (C:\Program Files\nodejs\node.exe) npminstall@7.12.0 (D:\xxx\v21.7.0\node_modules\cnpm\node_modules\npminstall\lib\index.js) prefix=C:\Program Files\nodejs win32 x64 10.0.19045 registry=https://registry.npmmirror.com发现成功输出,说明cnpm安装成功,接下来就可以使用cnpm替代npm指令进行操作了,同样我们直接全局安装vue-cli,仅需将之前的指令中的npm替换成cnpm即可:cnpm install -g @vue/cli接下来会下载大约35个mod并完成安装,等待安装完成后我们进入我们的项目目录执行下面的命令构建一个新的Vue项目 😃 (注意项目名字母只能小写):vue create demo01过程中需要按几次yes/回车,最后成功创建:(node:43144) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (Use `node --trace-deprecation ...` to show where the warning was created) ? Your connection to the default yarn registry seems to be slow. ? Your connection to the default yarn registry seems to be slow. Use https://registry.npmmirror.com for faster installation? Yes ? Please pick a preset: (Use arrow keys) ? Please pick a preset: Default ([Vue 3] babel, eslint) ? Pick the package manager to use when installing dependencies: (Use arrow keys) ? Pick the package manager to use when installing dependencies: Yarn ✨ Creating project in E:\CodeProject\HTML\VueDemo\Test01\demo01. 🗃 Initializing git repository... ⚙️ Installing CLI plugins. This might take a while... yarn install v1.22.22 info No lockfile found. [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... success Saved lockfile. Done in 28.14s. 🚀 Invoking generators... 📦 Installing additional dependencies... yarn install v1.22.22 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... success Saved lockfile. Done in 8.00s. ⚓ Running completion hooks... 📄 Generating README.md... 🎉 Successfully created project demo01. 👉 Get started with the following commands: $ cd demo01 $ yarn serve 使用指令进入项目目录并启动项目:#进入项目目录 cd demo01 #启动项目服务 cnpm run serve启动后即可通过本地8080端口访问(默认) 😊 :> demo01@0.1.0 serve > vue-cli-service serve INFO Starting development server... DONE Compiled successfully in 7089ms13:52:53 App running at: - Local: http://localhost:8080/ - Network: http://192.168.0.xxx:8080/ Note that the development build is not optimized. To create a production build, run yarn build. 使用浏览器打开地址:通过以上解决方法,我们成功解决了在安装Vue CLI时遇到的网络连接问题,顺利完成了安装过程。在前端开发中,遇到问题是很常见的,关键在于如何找到并解决问题。希望这篇博客能够帮助到其他朋友;以上就是我在安装Vue CLI过程中遇到的问题及解决方案的记录。如果你有类似问题或其他技术困惑,欢迎留言交流讨论。您还可以通过微信公众号“NianSir年先生”交流学习更多~感谢支持!
2024年09月05日
86 阅读
0 评论
6 点赞
2024-07-31
【学习笔记】从零开始学习Kotlin开发-Day1:基础语法与基础数据类型
前言Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。Kotlin基础语法KotLin虽然是运行在JVM上的编程语言,但其内部与Java存在着诸多不同,例如在语法定义,编码风格上存在较大差异,例如观察下面的代码:package com.niansir.demo fun main() { val text = "Hello World" println(text) }看起来似乎很正常,甚至感受不到什么差别?我想如果接触过PHP等其他弱类型编程语言的同学会本能的将 val 理解为类似PHP中 var 这样的数据类型,但其实在Kotlin中val、var并不是基础数据类型,严格的讲它只是一个权限修饰符,类似Java中的 final 这样,简单的讲,在Kotlin中val是仅允许赋值一次的变量(如果在val前面再加一个const组成 const val 则是常量),var则是允许多次覆写的变量,那可能就要问了数据类型怎么表示?请看下方代码:package com.niansir.demo const val PI = 3.14 fun main() { val text = "Hello World" var age : Int val name:String = "NianSir" println(text) println(name) age = 1 age = 18 println(age) }这段代码的运行结果是:com.niansir.demo.Study001Kt Hello World NianSir 18 进程已结束,退出代码为 0如果是像NianSir这样的小白的话第一眼看上去应该是这个表情吧:😰 是不是脑瓜子嗡嗡的?好像看上去没啥问题但又好像看不太明白? 没错,Kotlin同样可以先声明再赋值,并且尾部可以不用加 ; 结束;除此之外,你也可以在赋值时声明类型也可以不声明让系统自动判断,并且 😂 kotlin语法格式是先写变量名再冒号数据类型: 变量名:数据类型 除了初期接触会不适应外倒也没啥,另外常量只能在函数体外定义(这点很好理解,常量本来就该是初始就不会变的固定值,类似于系统基础参数这样的,如果在函数体内定义则只有该函数运行时才会动态生成值,与常量定义相悖) 我们再来看看标准的函数定义方法:fun sum(a: Int, b: Int): Int { // Int 参数,返回值 Int return a + b }除此之外还可以表达式作为函数体,返回类型自动推断:fun sum(a: Int, b: Int) = a + b public fun sum(a: Int, b: Int): Int = a + b // public 方法则必须明确写出返回类型 还可以构造类似void的无返回类型函数:fun printSum(a: Int, b: Int): Unit { print(a + b) } // 如果是返回 Unit类型,则可以省略(对于public方法也是这样): public fun printSum(a: Int, b: Int) { print(a + b) } 另外,对于传入参数函数传参数(长度)不固定时,可以使用 vararg 关键字进行标识:fun vars(vararg v:Int){ for(vt in v){ print(vt) } } // 测试 fun main(args: Array<String>) { vars(2,0,2,4) // 输出2024 }...晚点继续连载,累了 😂
2024年07月31日
47 阅读
0 评论
12 点赞