mysql高级注入4--盲注1

所谓盲注就是在正常页面没有输入点,或者无法影响页面输出的内容~ 然后我们无法借助页面来返回数据库中我们想要注出的数据,这时候就要构造sql语句让它报错,或者进行一系列的判断。 这一篇讲的基于布尔的盲注。

科普文,给学弟妹的...大牛绕过绕过...

一、字符串返回字符函数

不得不提的是ord函数和ascii函数的用法一样,假如str为空字符串,则返回值为 0 。假如str 为NULL,则返回值为 NULL。 ASCII()用于带有从 0到255的数值的字符。

二、字符串截取三剑客

1、substr()函数

Substr和substring是一样的

用法:

substr(string, start, length);

string为字符串;

start为起始位置;

length为长度。mysql中的start是从1开始的

查看我当前的数据库是security

截取第一个字符串

第二个

2、mid()函数

mid()函数

此函数为截取字符串一部分。MID(column_name,start[,length])

参数

描述

column_name

必需。要提取字符的字段。

start

必需。规定开始位置(起始值是 1)。

length

可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

其实和substr大同小异…..

3、left()和right()函数

用法:

Left()得到字符串左部指定个数的字符

Left ( string, n) string为要截取的字符串,n为长度。

同理可知,right也是这样子的。有时候碰到奇葩的环境可能left用不了,right就可以用了。

同样一件事….我们习惯性的都用left,左撇子们可能用right,比如我。

那么介绍完一大堆有的没得是时候该介绍重头戏了。

所谓的盲注就是没有输出点。就是你和数据库产生了交互,但是在页面上去没有显示数据库的内容。具体可以参考sqli labs 基础练习5~

上面的代码虽然将id带入了数据库查询,但是没有echo在页面上。于是我们就要用到我们前面介绍的几个函数来注入了。

具体如下:

对比以下的ascii码表,我们发现注入出来的数据库名是无误的。

但是如果是传参的语句呢?

那么我们就没有办法像mysql客户端一样的回显了…不然怎么叫盲注。

输入:http://localhost/sqli-labs/Less-5/?id=1

可以看到这个是正常页面。

加上' 报错

加上' and 1--+

又返回正常了。这下我们可以用到我们上几篇学过的了。

http://localhost/sqli-labs/Less-5/?id=1' andascii(substr((select database()),1,1))=115--+

返回正常,说明数据库的第一位是ascii码115,对应—>s。

以此类推,但是一个个手注太过sb。我们可以用python实现自动化脚本来获取数据。

Sql注入工具就是这个原理的,哈哈。自己写的程序比不过sqlmap速度快,但是可控性强。有需要留言吧。代码贴上来太丑了,另一方面自己动手写也是一种提高。代码提示:用二分法。

原文发布于微信公众号 - 晨星先生(MoXuanIT)

原文发表时间:2017-03-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

go语言网络编程之tcp

go语言网络编程需要导入包 net如下 import ( "fmt" "net" ) 重要函数 func Listen(net, laddr s...

26260
来自专栏全栈之路

golang教程

这里有两个关键点。 - 其一是defer关键字。defer语句的含义是不管程序是否出现异常,均 在函数退出时自动执行相关代码。 - 其二是Go语言的函数允许返回...

62820
来自专栏Kirito的技术分享

警惕不规范的变量命名

就在最近,项目组开始强调开发规范了,今天分享一个变量名命名不规范的小案例,强调一下规范的重要性。 Boolean变量名命名规范 16年底,阿里公开了《Java...

35490
来自专栏龙首琴剑庐

Java动态代理一览笔录

1、什么是代理? 比较经典的含义如销售代理,签订合同的基础上,为委托人(厂商)销售某些特定产品或全部产品的代理商,对价格、条款及其他交易条件可全权处理。我们从销...

32460
来自专栏积累沉淀

Linux之grep和egrep命令总结

grep / egrep 语法: grep  [-cinvABC]  'word'  filename -c :打印符合要求的行数 -i :忽略大小写 ...

195100
来自专栏deepcc

用 Function.apply() 的参数数组化来提高 JavaScript程序性能

34550
来自专栏冰霜之地

深入浅出 FlatBuffers 之 Encode

FlatBuffers 的使用和 Protocol buffers 基本类似。只不过功能比 Protocol buffers 多了一个解析 JSON 的功能。

2.1K30
来自专栏十月梦想

ES6数据传递的传值和传址

看一下上面一段代码,通过正常的理解确实这个样子,但是下面的代码我们只改变了test.y值而obj的也随之改变!这个样子是用于前一部分是传值,后面是传地址!   ...

27940
来自专栏py+selenium

[笨方法学python]习题51自动化测试笔记

本节自动化测试部分看不大懂,自己每步都打印出来,帮助理解。(代码标红部分为自己加入调试为打印变量值所用)

27720
来自专栏java一日一条

50个常见的 Java 错误及避免方法(第二部分)

System.out.println("Whatdo you want to do?");

12430

扫码关注云+社区

领取腾讯云代金券