首页 > 数据库技术 > 详细

Sqli-Labs less-1

时间:2020-01-16 22:59:55      阅读:88      评论:0      收藏:0      [点我收藏+]

首先,记录一下基础知识,可能不全:

 

几个常用的函数:

1.version()   --Mysql版本

2.user()  --数据库用户名

3.database()  --数据库名

4.@@datadir  --数据库安装路径

5.@@version_compile_os  --操作系统的版本

 

常用的语句(重要):

1.查库:select schema_name from information_schema.schemata

2.查表:select table_name from information_schema.tables where table_schema=‘security‘(此表名用的时候大多数转为16进制)

3.查列:select column_name from information_schema.columns where table_name=‘users‘

4.查字段:select username,password from security.users

 

字符串连接函数:

1.concat(字符串1,字符串2)   --没有分隔符的连接字符串

2.concat(-/~,字符串1,字符串2)  --含有分隔符的连接字符串

3.group_concat(字符串1,字符串2)    --连接一个组的所有字符串,并用,分隔每一个字符。

 

 

注释符:#  --+  --空

 

 

 

less-1

开始之前,为了方便笔记,我在网页源码的数据库部分加了两行代码,第一行意思是输出数据库语句,第二行是换行符

技术分享图片

 

 

 

 

输入?id=1‘,出现报错:

 

 技术分享图片

 

 

输入?id=1,正常,说明存在字符型注入。

技术分享图片

 

 

 

接下来爆库,爆表,爆列,查询;

用order by语句去猜列数,以下用二分法查到列数为三:

技术分享图片

 

 

 

技术分享图片

 

 

 技术分享图片

 

 

用union select 联合查询去回显数据:

这里正确的查询是图2,如果按照图1查询,因为limit0.1的限制,只能输出1个,所以输入id=-1或者0让他只能查询到第二行数据才可以输出。技术分享图片技术分享图片

 

 

 

 

 

 

 

技术分享图片

 

 

 

技术分享图片

 

 

 上面的操作结束以后,判断了回显位置,后面就可以利用这两列回显想要的数据

 

查库名:这里是3作为回显位置,语句意思是从数据库中查询数据库的名字,group concat是合并成一行输出

技术分享图片

 

 

 

查表名:我们要用的数据库是security 最后查询得到数据库的表信息。注:这里推荐使用图二的16进制,不用考虑单引号的问题,得到的数据是相同的

技术分享图片

 

 

 技术分享图片

 

 

查询users表的字段:(这里不知道数据库只有最后三个字段,为啥回显出这么多字段,暂且留一个疑问)

技术分享图片

 

 

 

查询字段中的内容:这里推荐使用图三中的语句查询,可以一次性查询多个字段内容,并且中间有分隔符

技术分享图片

 

 

 技术分享图片

 

 技术分享图片

 

 

 

 

 less-2


通过输入?id=1,显示正确,可以知道为数字型注入,不用考虑闭合sql语句,比第一关还简单:

以上步骤相同:

最后的得到用户名密码:http://192.168.5.100/sqli-labs/Less-2/?id=0 union select 1,2,group_concat(concat_ws(‘-‘,username,password)) from security.users --+

技术分享图片

 

 

 

未完待续。。

Sqli-Labs less-1

原文:https://www.cnblogs.com/hzk001/p/12203394.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!