SQL注入(3):一次简单的注入过程
一次简单的注入过程
上个笔记我们提及了闭合方式如何判断和判断之后有什么用。这里我们使用union联合注入来演示一次简单的注入,union联合注入就是闭合后可以添加使得原查询和第二个查询同时执行。继续使用less-1来作演示。
根据之前的笔记,我们已经判断出less-1使用的是字符型闭合,然后我们又判断出闭合的方式是使用单引号闭合,然后我们可以使用--+将末尾多余的单引号提出。
判断列数
接下来,我们在'和--+之间可以加入我们想要注入的第二个查询了。union查询我们需要满足一个条件,前面查询的列数与后面查询的列数一致。因此我们还需要判断列,有以下几种方法可以判断列数
group by二分法查询,由于分组不能超过列数,我们可以通过尝试分组数量来判断列数
首先我们尝试一个比较大的列数,发现无法正常返回结果
接着我们尝试其一半的列数
继续尝试一半的列数,发现可以正常
然后我们往后加大列数来测试,发现4不行,3可以,则3为列数
order by也可以通过类似的方法来判断,但group by不可用或者出现一些奇怪的问题的时候,我们可以尝试使用。
查询回显位 ...
SQL注入(2):判断注入类型、闭合方式
注入点
注入点就是可以实行注入的地方,通常是一个访问数据库的连接。打开第一个靶机Less-1
本页面的input the ID即是注入点。在本页面中,我们通过get方法,在链接中添加?id=加上一个id,可以与数据库进行通讯,这个就是注入点。
注入点有通过类似于这种get提交的,也有很多通过post提交的。
如何判断字符型注入还是数字型注入
数字型一般提交内容为数字,但数字不一定为数字型。虽然我们上面提交的为数字id,但是实际上不一定就为数字型注入,可能是字符串的数字。那么我们怎么判断呢
判断方法:使用and 1=1和and 1=2来判断。
我们在id后面分别添加一个and 1=1和and 1=2
如果注入点是字符型,添加and 1=1和and 1=2都可以正常显示
如果注入点是数字型,添加and 1=2会出现错误,页面不能正常显示
原因:如果是字符型,添加and 1=1和and 1=2,会被转换为
1http://10.0.0.219/sqli/Less-1/index.php?id='1 and 1=2'
因此可以正常显示页面。
在less1中,我们添加 ...
SQL注入(1):概述、分类、靶场搭建
SQL注入概述
SQL注入即通过将SQL命令插入到WEB表单提交等地方,最终达到欺骗服务器执行恶意的SQL命令,从而进一步入侵服务器。
注入分类
按查询字段分类
字符型:当输入的参数为字符串时,被称为字符型
数字型:当输入的参数为整型时,可以认为是数字型注入
按照注入方法
Union注入
报错注入
布尔注入
时间注入
堆叠注入
靶场搭建
环境:WindowsServer2022虚拟机
工具:
小皮phpstudy https://www.xp.cn/
靶机 https://github.com/Audi-1/sqli-labs
虚拟机网络设置与关闭防火墙
在VMware中,我们将虚拟机设置为桥接模式,然后我们可以通过ipconfig查看到我们的ip地址
然后我们需要将环境的防火墙关闭,否则外部无法访问
PHP环境搭建
由于我们靶场环境是php5.x的版本,而我们下载安装后的phpstudy版本为7.x,因此建议对其进行降级。
接着我们将我们下载好的靶场,解压复制到小皮的网站目录下(图中“打开根目录”)
为了方便我们管理页面,我们把靶场改名为sqli。然后我们开启Apache ...
TypeScript快速上手
本笔记为下面视频的笔记
【1个项目学会TypeScript核心基础语法】 https://www.bilibili.com/video/BV12P411E79E/
TypeScript安装
TypeScript是JavaScript的超集,为JavaScript新增了许多新的特性。
TypeScript并不能在浏览器中直接执行,因此跟JavaScript不同的是,我们需要安装一个编译器去将TypeScript转换成JavaScript
1npm install -g typescript //全局安装
安装完成后我们可以通过命令来检查我们的安装情况
12❯ tsc -vVersion 5.0.2
接着我们在项目文件夹下使用终端
12345678910111213❯ tsc --initCreated a new tsconfig.json with: ...
Vuejs开发入门(7):Vue项目组成逻辑
Vue的项目逻辑
为了更深刻了解Vue的项目逻辑,我们可以尝试不使用脚手架搭建一次Vue项目。
单文件组件
Vue的单文件组件(即.vue文件,英文 Single-File Component,简称 SFC),是把Vue组件(模板template、逻辑script、样式style)封装在同一个文件的格式。封装在一个文件内方便对多组件项目进行管理。
它常见的格式如下所示
1234567891011<script>//页面逻辑</script><template><!--HTML模板--></template><style>/*CSS样式*/</style>
Vue 的单文件组件是网页开发中 HTML、CSS 和 JavaScript 三种语言经典组合的自然延伸。
main.js
我们编写完我们的单文件组件后,我们还需要编写一个mian.js,以用来注册单文件组件以及挂载单文件组件
1234import { createApp } from 'vue'import A ...
Vuejs开发入门(6):v-on、methods、$emit
我们这里继续使用蛋老师的例子
1git checkout -f 06-start
v-on
v-on用于监听事件。在日常的开发中,常常会缩写成@,后面不需要加:
现在我们想要在网页上通过输入框和添加按钮新增一行我们不同口味的鱿鱼丝,这时候我们就用到了v-on,使用v-on在按钮处监听点击submit事件,然后再对事件进行处理。
1234<form @submit="处理方法"> <input type="text" placeholder="输入爱吃的鱿鱼丝..." /> <button type="submit">添加</button></form>
那么这里处理方法我们应该如何添加呢,这时候就用到了在createApp中与computed等同级的属性methods
methods
methods与computed都可以用来定义组件中的方法,但它们的使用场景和行为略有不同。
computed是一个计算属性,用于根据响应式依赖进行计算和 ...
Vuejs开发入门(5):props
props
props简单来说就是向组件中传递数据。很多时候,我们都有类似的需求:我们正在构建一个博客,我们可能需要一个表示博客文章的组件。我们希望所有的博客文章分享相同的视觉布局,但有不同的内容。要实现这样的效果自然必须向组件中传递数据,例如每篇文章标题和内容,这就会使用到 props。
假如我们需要传递给我们博客文章一个标题,我们需要在组件template同级的属性props中声明
12345678export default { template: /*html*/` <h4> {{title}} </h4> `, props: { title: String }}
然后我们可以在父组件这样写
123456789101112131415import Test from "./Test.js";export default { components: {Test}, ...
Vuejs开发入门(4):组件
在Vue的createApp方法中,除了data(){}存放映射到页面的值、computed存放方法,还有一个属性template,这个属性说白了就是用来写HTML文件的。
由于Vue是挂载到DOM上的,因此我们可以通过template属性,把我们组件的HTML代码编写在里面,就可以不用多次书写HTML,可以用Vue一对多挂载上去
Vuejs一大特点就是组件式开发,组件式开发简单来说就是把一个网页各部分都拆分开来,当作一个个组件进行开发,组件就是一个个单独可用的功能块,然后通过复用组件达到代码的复用的效果。
根组件
我们目前写的这个网页可以看作是一个根组件,我们可以通过组件拆分的方式拆分我们的根组件,将其拆分为不同功能块的子组件。
首先我们创建一个components文件夹,用来存放组件,然后我们在里面创建一个App.js,这个文件用来存放我们的根组件,我们将我们index.html代码移动过来
123456789101112131415161718192021222324252627282930313233343536373839404142export defa ...
Vuejs开发入门(3):key、v-show、computed
filter
现在我们完成一个需求,将显示区域划分为上下两个部分,一个是零食的未购区域,一个是零食的已购区域。
首先我们需要将已购买和未购买筛选出来,这时候我们就用到了数组的filter方法,我们在v-for对foods添加filter方法
123456789101112131415161718192021<section> <h2>已购零食</h2> <ul> <li v-for="food in foods.filter(item => item.purchased)"> <img v-bind:src="food.image"> <span>{{ food.name }}</span> <input type="checkbox" v-model="food.purchased"> ...
信息收集(2):Banner识别、敏感目录
Banner识别
识别一个网站的Banner信息(服务器对外显示的一些基础信息)对整个渗透测试过程具有十分重要的作用。我们往往可以通过网站网站的Banner信息,可以得到很多方向与思路,如尝试相关历史漏洞,或根据当前系统的特性,进行尝试。
操作系统
ping判断,Windows TTL一般为128,Linux则为64。TTL大于100一般为Windows,几十的一般为Linux
nmap -O
Windows大小写不敏感,Linux大小写区分
网站服务 \ 容器类型
F12查看响应头Server字段
浏览器插件 Wappalyzer
脚本类型
通过插件也可以查到脚本类型
数据库类型
CMS识别 CMS:网站内容管理
常见的CMS:dedecms(织梦)、Discuz、phpcms等
在线识别工具
在线指纹识别,在线cms识别小插件–在线工具 (bugscaner.com)
Onlinetools
https://github.com/iceyhexman/onlinetools
Wappalyzer除了作为一个浏览器插件,还具有一个Pytho ...