环境搭建
【方法1】
使用docker
// 命令
docker pull acgpiano/sqli-labs
在浏览器中输入IP:端口号 我上面设的端口号为88,所以输入的就是IP:88
点击Setup/reset Database for labs 显示下图所示的页面,则显示环境配置成功。
【方法2】在虚拟机windows server 2003中安装phpstudy
并将sqli.zip解压到phpstudy安装目录下的www中
在浏览器中输入以下网址进行验证
点击Setup/reset Database for labs 显示下图所示的页面,则显示环境配置成功。
phpstudy中mysql命令行的使用
默认密码为root
常用sql语句
1、注释符
单行注释:
– (后面有空格)
多行注释:
/**/
在sql注入中 一般在url中输入–+或者%23
2、显示全部数据库 show databases;
3、指定数据库 use xxx;
4、显示某数据库的全部表 show tables;
5、查看xx表全部信息 select * from xx;
6、union
union用于将多个select语句(两个或多个)的结果组合到一个结果集中,并删除结果集中的重复数据,语法为“select column,…from table1 union select column,…from table2”。
需要注意的是union中的每个查询必须拥有相同的列数。
7、order by
可以用来判断表的列数 (原理:二分法)
当你不知道某一个表的列数,可以对使用该语句进行测试,
orderby 8 (失败尝试orderby 4失败尝试 orderby 2成功 说明可能在2或者3 在尝试orderby 3 成功 那就是说明只有3列)
8、常用函数
8.1 user()
查看当前用户名
8.2 database()
查看当前数据库
8.3 current_user()
查看当前用户名
8.4 version()
查看数据库版本
8.5 load_file
读文件
假设读桌面上一个写着lisi的zhangsan.txt
注意这个路径用的/
8.6 Into outfile()/into dumpfile
写文件
select ‘111’ into outfile ‘c:/2.txt’;
8.7字符串连接函数
1、concat(str1,str2…)函数直接连接
2、group_concat(str1,str2…)函数使用逗号做为分割符
3、concat_ws(sep,str1,str2…)函数使用第一个参数sep作为分隔符
8.8 count()
计算结果集的行数
1、COUNT(column_name)
函数返回指定列的值的数目(NULL不计入)
也就是说,传入某个列的名称,函数返回的是该列中存在值的行数。
2、COUNT(*)
函数返回表中所有的记录数
3、COUNT(DISTINCT column_name)
函数返回指定列含不同值的行数
8.9 length()
用于读列中值的长度
8.10 substr(str,pos,len)/substring(str,pos,len)
返回截取的子字符串
8.11 ascii
返回指定字符串最左侧字符的ascii值