参考
之前的一篇文章 小白的SQL注入中, 我用了一些常规的手法,
- 检测是否有注入
- 爆表的字段数
- 利用表的字段数目爆数据库和所有的表
- 然后利用union查询flag表的信息
其实这些过程是可以利用一个自动化注入工具来完成的
sqlmap
检查注入点
使用-u参数, -u URL
爆所有数据库信息
-dbs
爆当前数据库信息
--current-dbs
指定数据库的名字列出所有的表
-D 数据库名 --tables
指定数据库的表列出所有的字段
-D 数据库名 -T 表名 --columns
指定数据库名, 表名字段 dump出指定字段
-D 数据库名 -T 表名 -C 字段名 --dump
BWVS靶场
这个靶场是我曾经费了好大功夫搭建的,为此弄懂了sql和php还有apache的关系
现在是时候发挥用场了
手工注入的一些常见手法
基于union的注入
一般必须有显示位, 也就是数据库查询结果之后返回的信息是显示在当前页面的哪几个位置上
常用的
--+ # 注释符
and version() > 0 --+ 判断数据库类型
and length(user()) > 0--+
猜解列数
order by 3 --+ 这个需要不断地尝试了
知道列数之后就方便了union注入
先记到这 联合查询注入
基于报错的注入
我才知道mysql有这种特性, 这些函数必须用select来进行调用。。
这个数据库好好玩。。
原来这些函数可以这样测试, 涨姿势了
原来可以通过这种方式去爆出表名和数据库名
靶场演示
基本上数据库的信息就都暴露出来了
中级的题目修改成用 post方式了
上海那个比赛的另一道SQL注入题目
1 的base64编码为 QM==
过滤了or and select union 关键字
去除了单引号,双引号,空格等字符
可以双写绕过关键字的过滤
网友评论