首页 > 数据库 >记一次sql注入测试

记一次sql注入测试

时间:2023-04-29 12:07:05浏览次数:26  
标签:name SQL 10056 mysql +-------+-------+-----+ 测试 sql id 注入

SQL 注入是通过在用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为。

常见SQL注入语句$username = 1'or'1'='1$password=1'or'1'='1

$username =1' or '1'='1'))/*$password = foo

http://192.168.254.132/sqli-labs/Less-1/?id=1’ order by 3 --+

这是一个很简单的

$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";

$result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );

$num = mysql_numrows($result);

比如我们在id = 1,点击

记一次sql注入测试_SQL


稍微懂一点后台或者数据库的人都知道,上面的那段代码是有严重问题的,没有对。也就是说,我们在1' or '1'='1,执行就会变成:

//原先要在数据库中执行的命令SELECT first_name, last_name FROM users WHERE user_id = '1'//变成SELECT first_name, last_name FROM users WHERE user_id = '1' or '1'='1'

注意一下单引号,这是'1'='1让单引号闭合。

由于




记一次sql注入测试_mysql_02



Boolean-based 原理分析

首先不得不讲SQL中的AND和ORAND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。AND:返回第一个条件和第二个条件都成立的记录。OR:返回满足第一个条件或第二个条件的记录。AND和OR即为集合论中的交集和并集。下面是一个数据库的查询内容。

mysql> select * from students;

+-------+-------+-----+| id | name | age |

+-------+-------+-----+

| 10056 | Doris | 20 |

| 10058 | Jaune | 22 || 10060 | Alisa | 29 |

+-------+-------+-----+

3 rows in set (0.00 sec)

1)

mysql> select * from students where TRUE ;

+-------+-------+-----+| id | name | age |

+-------+-------+-----+

| 10056 | Doris | 20 |

| 10058 | Jaune | 22 || 10060 | Alisa | 29 |

+-------+-------+-----+

3 rows in set (0.00 sec)

2)

mysql> select * from students where FALSE ;Empty set (0.00 sec)

3)

mysql> SELECT * from students where id = 10056 and TRUE ;

+-------+-------+-----+| id | name | age |

+-------+-------+-----+| 10056 | Doris | 20 |

+-------+-------+-----+

1 row in set (0.00 sec)

4)

mysql> select * from students where id = 10056 and FALSE ;Empty set (0.00 sec)

解决SQL注入问题的关键是对所有可能来自用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。


标签:name,SQL,10056,mysql,+-------+-------+-----+,测试,sql,id,注入
From: https://blog.51cto.com/u_15854462/6236687

相关文章

  • 数据库连接池 - Pymysql
    数据库连接池+pymysql最近想用小程序来做个移动BI,然后涉及后端接口部分打算用Python的flask框架整一波,主要听闻它比较轻量,简单和可灵活配置,这就和我很对味.毕竟我主要搞数据用的就是sql而已,只要有个服务器提供接口就行.真正开始来写接......
  • MySQL日期字符串转日期格式,日期格式数据转为字符串
    如下:1、日期字符串转换为日期格式数据SELECTDATE('2017-02-11');SELECTDATE('2017/02/11');SELECTSTR_TO_DATE('2015/02/25','%Y/%m/%d');SELECTSTR_TO_DATE('2015-02-25','%Y-%m-%d');返回日期格式数据 2、DATE_FORMAT将日期转......
  • 大数据学习初级入门教程(十六) —— Hadoop 3.x 完全分布式集群的安装、启动和测试
    好久没用Hadoop集群了,参考以前写的《大数据学习初级入门教程(一)——Hadoop2.x完全分布式集群的安装、启动和测试_孟郎郎的博客》和《大数据学习初级入门教程(十二)——Hadoop2.x集群和Zookeeper3.x集群做集成_孟郎郎的博客-》,下载了目前官网最新的版本 hadoop-3.3.5再......
  • 云LIS系统基于ASP.NET CORE 3.1 MVC + SQLserver + Redis技术实践
    云LIS   利用云LIS实现区域内各级医院门诊、住院等日常医疗业务和行政业务的全流程管理和医院的无纸化运营,规范就医流程,提升医疗质量,提供科学决策支持,增强患者的就医体验。云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序,可协助区域内所有临床实验室相互协调并......
  • 自动化测试工具自动化工具Pyautogui和Pywinauto详细介绍和使用
    自动化测试工具介绍和使用PC端应用程序自动化测试——pywinauto、pywin32、pyautogui详解Python中pyautogui库的最全使用方法自动化测试工具自动化工具Pyautogui和Pywinauto详细介绍和使用   1、自动化测试工具介绍和使用一.Pywinauto库的介绍二、pyautogui库的......
  • MySQL操作
    创建数据库createdatabase[IFNOTEXISTS]数据库名;查询数据库showdatabases;删除数据库dropdatabase[IFEXISTS]数据库名;切换数据库selectdatabase();——————————————————创建数据表createtable表名(字段名1字段类型1(字段长度)......
  • 美团面试题:慢SQL有遇到过吗?是怎么解决的?
    大家好,我是田维常,可以叫我老田,也可以叫我田哥。2017年的时候,我刚去上海,朋友内推我去美团面试,之前我也写过一个一篇文章,也是在美团面试中遇到的:美团面试题:Strings=newString("111")会创建几个对象?关于慢SQL,我和面试官扯了很久,面试官也是很谦虚的,总是点头,自己以为回答的还可以。......
  • 注册功能测试用例
    PC端注册界面往往需要输入用户名、密码、验证码,通用的注册测试用例有以下几点:需求:(1)账号:必填,11位手机号进行注册(2)验证码:必填,系统生成4位验证码(3)用户名:可以为空,4-16位字符串(可以重复)(4)密码:必填,6-12位,由(字母、数字)组成,允许含特殊符号测试点用例标题操作步骤预期......
  • 插入随机/跟随鼠标/点击一次即消失/漂浮图片(ie测试通过)
    //跟随方法比document.click不足之处:当出现cpu占用过高时,会出现跟随不上现象,导致此次点击并不能弹出窗口varimgs=newArray("http://www.google.cn/intl/zh-CN/images/logo_cn.gif","http://hp.tom.com/images/logo.gif","htt......
  • mysql基础_事务
    定义一个事务其实就是一个完整的业务逻辑,是一个最小的工作单元,不可再分,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。例如:王五向赵六的账户上转2000块钱,王五的账户上少2000块钱,赵六的账户上多2000块钱,这个操作是一个最小的......