0%

前言

  这题主要用到了堆叠注入以及rename改表名,alert 改列名。下面我总结解题思路时也会适当的阐述一下alert和rename的用法。

0X01 判断是否存在sql注入

  1. 首先我尝试了传入1' 发现报错,那么就是说它很大几率可以被单引号闭合。
  2. 接着我尝试传出 1' --+ 发现回显正常那么基本就已经确定存在sql注入了。
    阅读全文 »

前言:
 Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。就我现在而言它是必须用到的一款工具,主要用它来达到抓包、改包、重放攻击和爆破的目的,那么接下来我会着重讲讲怎么才能达到这些目的。

一、BurpSuite的安装

 因为它是基于Java开发的所以安装burp会用到jdk,所以必须先配置好jdk , 下载安装自行百度。
 因为它是一款收费软件,所以软件资源需要自行寻找,当然可以直接联系我qq:487280636(请注明来意)

  1. 这里我有一个打开burp suite非常方便的bat脚本文件如:

    点击同意即可进入。
  2. 如果没有这个bat的话那么我们按常规的来,直接打开得到:

    我们按下一步,接着再下一步不用管。

经过上面的任意一种方法后都可成功安装(每次启动都要重复这些步骤

二、Burp Suite的基本配置

  1. 配置 Burp suite 代理 ,打开burp 选择 proxy—–>options记住这里的ip地址和端口号(一般默认都是127.0.0.1:8080)
    然后去浏览器里将代理改为上述的ip及端口号可以使用代理插件FoxyProxy来轻松配置如下:

    如果找不到这个插件那么我们还可以直接在浏览器设置代理以火狐为例:选项->网络设置栏里的设置改为(记得把不使用代理的文本输入框清空):
  2. 安装SSL受信任证书
  • 打开浏览器访问 http://burp ,点击CA Certificate 下载 证书或者在Burp Suite里直接下载证书Proxy-> Options-> CA certificate…进入后如图:

    next后给证书选个位置并命名为1.der
  • 进入浏览器,将证书导入,以火狐为例(进入选项,搜索证书,导入证书):

    这样就配置好了,现在可以开始抓包了。

三、BurpSuite 的基本使用

 经过上面一系列操作以后我们可以进行抓包等一系列操作了。

  1. 抓包,只要Burp suite和浏览起按上面步骤来,此时你使用该浏览器打开网页时都会先发给burp suite 由它做最后的决定(增、改、丢、放)如图:
  2. 改包 , 可以在刚刚收到的包里进行更改然后点击放行即可。
  3. 重放 , 在抓导报后 点击Action -> send to repeater 再到repeater选项中进行对包的操作后,go即可得到想要的结果如:
  4. 爆破 , burp suite中有一个专门的爆破的模块,在抓到包的界面单击action- > send to Intruder 先到Intruder-> Positions将需要爆破的值添加在$ $(类似这样)的中间,再到Intruder-> payload进行调整如:
    图片.png
    Intruder—— > options 可以进行爆破的所使用的资源等配置(这里不细讲)
    最后点击Intruder->start attack开始爆破,会弹出一个进度窗口可以进行查看结果。通过观察放回的不同结果来确定自己是否成功。

 到这里基本上已经达到了我们的需求,先写到这里,后面可能会有补充。

前言:不知什么时候开始就有了自己搭建个人博客的想法,但由于时间关系还是拖到了现在。看了些文章后感觉搭建个人博客也就那样应该很简单,但实际操作时却总会给我们意想不到的惊喜。于是乎我选择了记录这个过程,以免以后遇到相同问题不会解决。

一、我为什么选择hexo+码云来搭建自己的博客

  1. 选择hexo完全是因为我只对它有过些了解,且它有很多的主题可供选着。
  2. 选着码云因为码云作为国内网站,访问速度自然是比Github快一些,且更容易被SEO收录提升博客的曝光率。

二、具体操作步骤

  1. 先安装好Git和Node.js。(很简单的,实在不会可以百度教程也多)
  2. 接下来就可以安装我们的hexo了(全局安装),可以使用cmd命令行,输入以下命令:
    1
    npm install -g hexo-cli
  3. 指定一个文件夹来存放网站文件(也就是网站的根目录)
    1
    2
    3
    hexo init mayi077  #在这个地址里生成Hexo初始化文件
    cd mayi077 # 进入这个文件夹
    npm install # 在文件夹内自动安装Hexo所依赖的各种模块(实际上我没有进行这一步)
      经过以上3步,Hexo就初始化成功了,下面我们进行一下本地测试.
  4. 生成静态页面
    1
    hexo generate    或使用缩写  hexo g
  5. 本地测试:开启服务器
    1
    hexo server    或使用缩写   hexo  s
     当返回如下代码时说明开启成功:
    1
    2
    INFO  Start processing
    INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.
     简单的5步,一个最原始的本地Hexo博客就已经搭建好了。浏览器输入http://localhost:4000 就可以看到我们的博客。
    1
    2
    3
    4
    5
    6
    node_modules:为hexo的插件目录,作用是利用此目录的插件生成
    对应功能的静态HTML等脚本代码。
    scaffolds:模版文件。可以在这里添加自己的layout,作为常用的新建模板使用。
    source:这个文件夹是放文章和图片等资源文件的。
    themes:存放主题的文件夹
    _config.yml:站点配置文件,很多全局配置都在这个文件中。

三、应用一个自己喜欢的主题

  1. 可以去官网 https://hexo.io/themes/ 找一个自己喜欢的主题。(也可去其它途径寻找)
  2. 将主题下到本地。可以在指定文夹内使用git clone 文件地址 也可以下载压缩包后进行解压。这里要求解压到网站根目录(D:/mayi077/themes)下的themes文件夹下。
  3. 更改网站根目录下的_config.yml文件。将themes后面的改为自己主题文件夹的名称,注意前面有一个空格。
  4. 这就把主题应用成功了,然后就是改主题了,把主题的一些信息改成自己的,一些容易搞错的地方我们后面再仔细讲。
  5. 运行
    1
    2
    hexo clean    ##清除缓存
    hexo s ## 开启服务
    然后就可以进行查看了。

注意: 更改主题里的配置文件不需要重启而更改网站根目录下的配置文件基本都需要重启服务

四、部署到码云

  1. 首先就是注册一个码云账号,注意账号名,它将会影响你以后的域名。
  2. 新建一个仓库,选择公开,选择 使用readme文件初始化这个仓库(名字随意其它默认)如图:
  3. 复制仓库链接,然后更改网站的配置文件(网站根目录下的_config.yml文件)
    1
    2
    3
    4
    deploy:
    type: git
    repository: 复制的链接(注意前面有个空格)
    branch: master

  4. 使用
    1
    2
    3
    hexo clean ##清除缓存
    hexo g ##生成静态文件
    hexo d ## 部署到码云
    第一次使用的话先:
    1
    npm install hexo-deployer-git --save  ##安装deployer
    再执行上面命令。
    之后会弹出一个对话框,让我们输入码云的帐号和密码(我们可以配置网站的SSH,这样就不用每次都输入账号密码了)
  5. 到码云上启用这个模块,服务->gitee pages 勾选强制使用HTTPS后点击启用服务即可(它会返回一个地址,那就是你的网站地址)
  6. 再到网站的配置文件里更改url为刚刚得到的网址,root后面改为仓库名如:

五、添加“分类”及“标签”

  1. 创建“分类”选项
    打开命令行,进入博客所在文件夹。执行命令:
    1
    hexo new page categories
     成功后会在source/categories/生成一个index.md文件添加type: “categories”到文件内容中,添加后是这样的:
    1
    2
    3
    4
    5
    ---
    title: 文章分类
    date: 2017-05-27 13:47:40
    type: "categories"
    ---
    保存并关闭文件。

接下来给文章添加“categories”属性
 打开需要添加分类的文章,为其添加categories属性。
下方的categories: web前端表示添加这篇文章到“web前端”这个分类。
注意:hexo一篇文章只能属于一个分类,也就是说如果在“- web前端”下方添加“-xxx”,hexo不会产生两个分类,
而是把分类嵌套(即该文章属于 “- web前端”下的 “-xxx ”分类)。

1
2
3
4
5
6
---
title: mayi077
date: 2020-01-11 12:12:57
categories:
- web前端
---

 至此,成功给文章添加分类,点击首页的“分类”可以看到该分类下的所有文章。
当然,只有添加了categories: xxx的文章才会被收录到首页的“分类”中。
2. 创建“标签”选项
生成“标签”页并添加tpye属性
打开命令行,进入博客所在文件夹。执行命令

1
hexo new page tags

 成功后会生成source/tags/index.md添加type: “tags”到内容中,添加后是这样的:

1
2
3
4
5
---
title: mayi077
date: 2020-01-11 12:47:40
type: "tags"
---

 保存并关闭文件。
给文章添加“tags”属性
 打开需要添加标签的文章,为其添加tags属性。

1
2
3
4
5
6
7
8
9
10
---
title: mayi077
date: 2020-01-11 12:12:57
categories:
- web前端
tags:
- jQuery
- 表格
- 表单验证
---

 至此,成功给文章添加分类,点击首页的“标签”可以看到该标签下的所有文章。当然,只有添加了tags: xxx的文章才会被收录到首页的“标签”中。

六、常见问题及解决方法

  1. 主题应用后无法正常显示。
    这要看使用的主题具体的说明文件,看是否需要提前安装一些插件,安要求安装及可。
  2. 更改主题的底端文字
    首先我们找到这个主题的文件夹,进入layout –> _partial –> footer.swig 进入后进行对应的更改及可。
  3. 添加新文章,使用如下代码:
    1
    hexo new "文章名"  ##新建一个文章在hexo所在目录 -> source -> _posts下
     之后再找到该文件并进行相应的更改
     之后就是上传到码云上了。(当然在此之前先要在本地看看是否满意)
    1
    2
    hexo g   #生成静态页面文件
    hexo d #发布到码云
    到码云上更新如:
    图片.png
    可能不会立即生效,需要稍微等等。
  4. 博客无法直接 上传图片,这里我推荐几个自己在用的图床网址
    1
    2
    3
    https://sm.ms/
    https://www.superbed.cn/
    需要用图片时可以先把图片上传然后复制起markdown链接里直接引用
  5. 文章中的链接需要是正确的否者可能会报错,也就是说注意链接前后的空格。

弱比较

在PHP语言中若字符串以数字开头,则取开头数字作为转换结果,若无则输出0
例如:

1
2
1==1mayi            ##会返回true
0==mayi077 ##会返回ture

为了避免这种漏洞我们可以用全等“===”来进行数据的比较,比较的是变量值与类型只有都相等才会返回true。

md5()和sha1()

  • md5()是不能处理数组的,md5(数组)会返回null,两个null相等绕过。sha1()也是同理。
  • 同时PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。
    常见的payload有:
    1
    2
    3
    4
    md5(s878926199a)   
    0e545993274517709034328855841020
    md5(s155964671a)
    0e342768416822451524974117254469

转换

php会自动进行转换,比如16进制,科学计数法等,有时网站对某些数字做了限制,可以考虑试试这个点绕过。
如:

1
2
3
4
0x11 == 17 ;         ## 会返回true
0x11 === 17 ; ## 返回true
$a=1.2E3==1200; ## 返回ture
$a=1.2E3===1200; ## 返回false

strcmp()

注:这一个漏洞适用于5.3之前版本的php

1
2
3
4
5
int strcmp ( string $str1 , string $str2 )
参数 str1第一个字符串。str2第二个字符串。
如果 str1 小于 str2 返回 < 0;
如果 str1 大于 str2 返回 >0;
如果两者相等,返回 0。

实际上,当这个函数接受到了不符合的类型,这个函数将发生错误,但是在5.3之前的php中,显示了报错的警告信息后,将return NULL!
那么我们传入一个数组,它会返回NULL,而判断使用了==,而NULL==0是bool(true),这样就成功绕过。

ereg()

ereg()函数用指定的模式搜索一个字符串中指定的字符串,如果匹配成功返回true,否则,则返回false。

1
2
3
4
5
6
7
if(isset($_GET['num'])){
if(ereg('^[a-zA-Z0-9]+$', $_GET['num']) === FALSE){
echo "请输入符合要求的";
}else{
echo "您输入的符合要求";
}
}

代码分析:只有当输入数字和字母的时候,输入正确,如果输入包含符号的就会提示不正确。
漏洞利用:

  • 输入123%00’(我们想要的数据也被传了进去)
    注:这里的%00是需要urldecode才可以截断的,这是url终止符,且%00长度是1不是3。
  • 碰到参数是数组的返回为null。
    实现原理:
    因为返回为null,null != FALSE,所以匹配正确

is_numeric()

函数用于检测变量是否为数字或数字字符串。如果指定的变量是数字和数字字符串则返回 TRUE,否则返回FALSE.

  • 这个函数不仅能够检测十进制,同时还认为十六进制也是合法的。于是就可以构造十六进制的语句(想要执行的语句,转换为16进制传入)进行绕过此函数。可以用来绕过sql注入里的过滤
  • 当有两个is_numeric判断并用and连接时,and后面的is_numeric可以绕过
    如:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $a="123";
    $b="1adf";
    $c=is_numeric($a) and is_numeric($b);
    var_dump(is_numeric($a)); //ture
    var_dump(is_numeric($b)); //flase
    var_dump($c); //$b可以不是数字,同样返回true
    $test1=true and false;
    $test2=false and ture;
    var_dump($test1); //返回true
    var_dump($test2); //返回false

switch()

当switch没有break时可以继续往下执行。
这里也有自动转换,比如$switch_bug = a,会当0执行,=1a,会当1执行……

用到了PHP弱类型的一个特性,当一个整形和一个其他类型行比较的时候,会先把其他类型intval再比。
当检索中带入字符串,比如”sky”,会intval(‘sky’)==0,从而致使数字数组也可以查询成功