type
status
date
slug
summary
tags
category
icon
password
🫠
看看经历了2个月的渗透经历和src挖掘思路,现在做ctf有没有什么长进。
 

ACTF2020 新生赛]Include

notion image
这题就是文件包含内容,就是文件包含的参数去尝试fuzz,最后得出
notion image
接着base64解码就行
notion image

 

[HCTF 2018]WarmUp

notion image
 
抓包明显看见回显了个source.php文件,拼接上source.php可以得到
用户通过file参数,加载某个PHP文件(通过 include $_REQUEST['file']),但这个文件名必须通过类 emmm::checkFile 的白名单校验
 
尝试读取hint.php
notion image
告诉我们flag不在flag中,而是在ffffllllaaaagggg ,开始还以为它是来提示我flag位于根目录下😂
 
notion image
接下来试了挺多种方法的没辙了,最后看了大佬的wp才发现
这个是要在source.php下进行传参操作的(认真看一下source.php应该是知道的,我还在愚蠢的研究着怎么让它即能在前获取hint,又能成功获取flag,怎么试都没成功)
Payload:source.php?file=hint.php?/../../../../ffffllllaaaagggg
 
notion image
 
分析一下:
 
  • 传入hint.php后,会进行检测变量是否为空或者变量不是字符串,但凡符合一个,就不通过。
  • $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; 这里代表的是一个关联数组(键值对形式)
键(key)
值(value)
source
source.php
hint
hint.php
in_array是只检查值的,所以接下来判断变量是否在这个两个值当中,显然也是存在的
  • 接着判断mb_strpos 函数,mb_strpos($page . '?', '?') 先把 $page 拼接上 ? ,防止我们传进的参数是没有 ? 的,导致 flase 。如果我们有传进?,则会返回第一个 ? 在拼接字符串中的位置(从 0 开始计数)实例中?在第8个。
  • 所以mb_substr函数,则是按照字符数,从 $page 的第 0 个位置开始,截取到上面 mb_strpos 找到的位置(也就是8)刚好是hint.php,所以跳过
  • 接着检查值,然后url解码,再检查一遍。

[ACTF2020 新生赛]Exec

| 直接执行后面的语句 || 如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句 & 前面和后面命令都要执行,无论前面真假 && 如果前面为假,后面的命令也不执行,如果前面为真则执行 ; 前面和后面命令都要执行,无论前面真假
 
几个常见的操作符先试了遍:|||&&&; 发现:|; 没有被过滤可以正常使用
notion image
一般CTF的题目flag都是在根目录下
构造payload:127.0.0.1;cd ../../../../;ls
notion image
 
payload:127.0.0.1;cd ../../../../;cat flag
notion image
 

 

[GXYCTF2019]Ping Ping Ping

老样子,进行常规操作符进行试验:
notion image
可以查到这两个文件
接着查看flag.php提示错误
notion image
回显的意思是去你的空间 应该是过滤了空格,采取{IFS}方式代替
 
notion image
回显去你的符号 也过滤了{} 括号这些,用$IFS$1替换
 
notion image
过滤了flag字符
先进行index.php看看能不能获取
 
notion image
 
正常获取
接着根据获取的过滤条件进行反向思考哪些没被过滤
所有控制字符:\x00 - \x1f(含 %0a\t 等)
所有括号(圆括号、花括号、中括号)
/\?&、、<>'"*空格
字符串中不能含 flag(不区分顺序,任意顺序都ban)
尝试用变量进行替代
Payload:?ip=127.0.0.1;d=l;c=ag;cat$IFS$1f$d$c.php
notion image
成功获取
 
除了cat,还有
1. tac
tac 命令是 cat 命令的反向,它将会逆序输出文件内容,即从最后一行开始逐行输出。
tac filename
2. more
more 命令用于显示文件内容,并按页进行分割。它允许用户逐页显示文本文件,并提供一些浏览文件的功能,比如向下翻页、向上翻页、搜索等。
more filename
3. less
less 命令也用于分页显示文件内容,类似于 more 命令,但它提供了更多的功能,比如前后搜索、移动光标等。
less filename
4. head
head 命令用于显示文件的前几行,默认情况下是显示文件的前10行。可以使用 -n 参数来指定显示的行数。
head -n 5 filename
5. tail
tail 命令用于显示文件的后几行,默认情况下是显示文件的后10行。可以使用 -n 参数来指定显示的行数。
tail -n 5 filename
6. nl
nl 命令用于给文件的行加上行号。可以使用 -n 参数来指定行号的样式,以及 -w 参数来指定行号的宽度。
nl filename

总结归纳

泪目了,忙活了一个早上,才解出这么几道,还有两道后续没看懂,还是参考了博主的wp才解出来的

📎 参考文章

 
BUUCTF-sql注入合集攻防世界-php伪协议和文件包含
Loading...