CTF
文章平均质量分 65
This WP from CTF
安红豆.
ctf
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[极客大挑战 2019]PHP
当成员属性数目大于实际数目时才可绕过wakeup。访问www.zip拿到源码.原创 2024-11-28 00:10:49 · 361 阅读 · 0 评论 -
[护网杯 2018]easy_tornado
这里有一个hint点进去看看,他说md5(cookie_secret+md5(filename)),所以我们需要获得cookie_secret的value。输入{{handler.settings}} (settings 属性是一个字典,它包含了Tornado应用的全局配置信息)根据题目tornado,它可能是tornado的SSTI。这里吧filehash改为NULL.是tornado的SSTI。拿到cookie_secret。原创 2024-11-27 23:54:39 · 353 阅读 · 0 评论 -
[Zer0pts2020]Can you guess it?1
而basename($SERVER["PHP_SELF"]) config.php的实现就用上面的basename漏洞来实现。一个正则表达式,一个highlight_file(basename($SERVER["PHP_SELF"])).书接上回,我们可以通过 highlight_file(config.php)来读取flag.basename漏洞,basename可以匹配到可见字符,但是无法匹配不可见字符。所以我们在后面+点东西就可以绕过了,而+的东西就是不可见字符.点击Source,去看一下.原创 2024-10-30 13:48:17 · 503 阅读 · 0 评论 -
[HarekazeCTF2019]encode_and_encode1
所以我们需要绕过两个过滤,一个是最开始的 黑名单,也就是is_valid这个函数,然后就是$content = preg_replace('/HarekazeCTF\{.+\}/i', 'HarekazeCTF{}',这个函数加工了。而绕过 preg_replace()这个函数就更简单了,直接用伪协议php://filter/convert.base64-encode/resourc=/flag,使/flag的内容被 filter 处理,最终通过 base64 编码的形式返回.原创 2024-10-30 19:09:39 · 597 阅读 · 0 评论 -
[网鼎杯 2020 朱雀组]Nmap1
知识点:escapeshellarg和escapeshellcmd函数的绕过.nmap使用方法.进入页面是一个NMAP工具的使用页面知识点:Nmap(Network Mapper)是一款功能强大的网络扫描工具,它能够帮助用户发现网络上的设备、开放的端口以及运行的服务。-sU-T0-T5这里试一下多条命令执行.;被转义了.那么看下页面源代码看看.他这里有提示:那么我们可以通过以下知识点写入webshell,或将flag读入指定文件在读取指定文件内容即可:从文件中读取IP地址列表进行扫描。原创 2024-10-10 00:21:16 · 1565 阅读 · 0 评论 -
[FlareOn3]Challenge11
意思是我们输入的value的变量赋值给 NumberOfBytesWritten,同时NumberOfBytesWritten又经过sub_401260()函数的一系列操作,的到Str1的value,并且和Str2,进行比较如何相同则返回Correct.每次取三个字符,并将其按照每6个bit为一位的方法,进行编码转化,转换的内容是通过byte_413000的数据进行转换的,而最后一个for循环则是判断是否4个为一组的,如果不是则在后面加上等于号.在补零后形成的8位字节中,实际使用的只有低6位。原创 2024-10-01 06:00:00 · 547 阅读 · 0 评论 -
特殊的 BASE64 1
我们这里可以发现有一个rightflag:mTyqm7wjODkrNLcWl0eqO8K8gc1BPk1GNLgUpI==还有一个base64Encode(&result);,用来进行base64编码,base64编码表估计就在里面呢.这个一看题目就是base64编码表被改了.得到flag,游戏结束~载入IDA(64bit)找到了,开始构造exp。原创 2024-10-01 07:00:00 · 682 阅读 · 0 评论 -
[极客大挑战 2019]RCE ME1
之前我们提到了,他禁用了很多函数方法,我们可以通过下面蚁剑的绕过disable_functions的插件进行绕过.看来禁用的还是比较多的一会可能需要使用这些被使用了disable_function()的函数了.意思就是我们传入的code的value要到达eval()函数,我们需要绕过两个过滤。首先是长度不能大于40,之后便是我们传入的内容不能是大小写字母以及0-9的数字.之后构造webshell,由于php版本的问题呢,我们不能直接构造。绕过方法呢可以使用取反绕过,以及异或绕过.,我们需要构造构造成。原创 2024-09-26 07:45:40 · 1026 阅读 · 0 评论 -
[BSidesCF 2019]Kookie1
进入页面,他告诉我Login as admin :作为admin登录,We found the account cookie / monster。而且这个题目看着和cookie就有关系,感觉是cookie伪造.:我们发现了账户cookie/monster.那就直接去伪造cookie.获取flag,游戏结束~原创 2024-09-11 21:36:26 · 270 阅读 · 0 评论 -
wireshark1
注意看title,管理员的密码即为答案,那么咱们就直接去过找POST请求的数据包就可以了。找到flag,游戏结束~原创 2024-09-26 20:44:51 · 317 阅读 · 0 评论 -
[WMCTF2020]Make PHP Great Again 2.01
又是php代码审计,开始吧.这不用审吧,啊喂.意思就是我们要利用require_once()函数和传入的file的value去读取flag的内容.,貌似呢require_once()已经被用过一次了,直接读取还不行,看一下下面的知识点.原创 2024-09-22 19:58:18 · 1015 阅读 · 0 评论 -
[SUCTF2019]SignIn1
无壳,载入IDA.搜索找到main函数开始分析.这段代码是一个使用GMP(GNU Multiple Precision Arithmetic Library)库实现的简单加密挑战程序。它模拟了一个“签到”流程,要求用户输入一个标志(flag),然后验证这个标志是否符合特定的加密条件。原创 2024-09-13 11:56:46 · 1647 阅读 · 0 评论 -
[羊城杯 2020]Blackcat1
我们无法知道它(第一次加密)的环境变量的value,但由于我们知道当数组进行sha256加密时,返回总为NULL,我们就可以控制$clandestine(第二次加密)这个key的value=NULL从而控制hh的value.意思是我们要保证Black-Cat-Sheriff 和 One-ear 两个参数的POST值存在的同时Black-Cat-Sheriff的值要等于One-ear经过sha256加密后的值($hh),最后通过exec这个危险函数来获取flag.是为了不被前面的nc影响.原创 2024-09-12 17:13:09 · 719 阅读 · 0 评论 -
[NewStarCTF 2023 公开赛道]Begin of PHP1
LEVEL5: 哈哈又是数组绕过,这里要输入的POST内容不能是字母和数字,所以我们可以用数组,当然也可以不用只要输入的value为真且不是正则表达是匹配到的范围就可以了,flag5=. ,或者flag5[]=love。LEVEL1: 因为hash函数无法解析数组会返回false,直接用数组绕过key1[]=1&key2[]=2。LEVEL4: 没错继续用数组绕过,is_numeric()无法解析数组会返回false,而且数组大于2023.至于为什么大于2023,我们来做个小实验.key5[]=5。原创 2024-09-26 18:13:44 · 856 阅读 · 0 评论 -
[FireshellCTF2020]Caas1
可以试一下预处理报错,将头文件改成 "\flag" 尝试包含一下.发现下载了一个文件,打开后感觉没啥用,应该是编译好后给你的文件.进入页面发现是让我么输入code然后他去处理,那就输一下试试.它报错了,可以看出这是个C语言的报错,那么传入一下C语言代码.2.#include " " 预处理报错。拿到flag,游戏结束~原创 2024-09-11 18:56:18 · 386 阅读 · 0 评论 -
bestphp‘s revenge1
进入这个页面又是令人激动的代码审计环节.不过再次之前呢先补充一些弥足珍贵的知识点.原创 2024-09-11 12:55:43 · 1362 阅读 · 0 评论 -
[N1CTF 2018]eating_cms1
是个parse_url漏洞利用,这段代码想让我们输入的url地址问好后过滤了"flag","manage","ffffllllaaaaggg",所以我们可以推测存在“flag","manage","ffffllllaaaaggg"这个函数通常很安全,但如果不正确地使用或当输入的 URL 格式异常时,可能会引发一些潜在的问题或误解,但这并不直接等同于传统意义上的“漏洞”。实际上,它仅仅是一个解析工具,并不提供安全验证或清理功能。可能无法正确解析这些部分,尤其是在路径(path)或查询字符串(query)中。原创 2024-09-08 18:34:16 · 1100 阅读 · 0 评论 -
[BJDCTF2020]EasySearch1
如果在编辑过程中Vim进程被意外终止或者用户没有正确地退出Vim,那么这个临时文件可能会被留下来,如果攻击者能够访问这个临时文件就可以获得原始文件的敏感信息,从而导致信息泄露,需要注意的是不同的操作失败次数将会导致产生不同后缀的交互文件,例如:index.php第一次产生的交换文件名为.index.php.swp,再次意外退出后将会产生名为.index.php.swo的交换文件,第三次产生的交换文件则为.index.php.swn。大多数服务器配置中,发现了我们写入的shtml文件的位置,去访问一下.原创 2024-07-09 15:48:24 · 1053 阅读 · 0 评论 -
[极客大挑战 2020]Greatphp1
所以,我们可以通过PHP的原生类来进行绕过(Error 或者 Exception),这两个类中呢存在一个_toString()的方法属性,意思就是当这两个类的对面需要被转换成字符串的时候就会调用 _toString()函数,下半部分就是传入一个great的参数,对这个参数进行反序列化,所以我们目标就明确了,我们需要绕过这个强类型比较,之后在绕过正则表达,最后执行寻找flag的命令.php 来实现我们包含flag文件的效果,又因为正则表达过滤了php我们可以用原创 2024-09-02 10:55:23 · 1816 阅读 · 5 评论 -
[SUCTF 2018]annonymous1
当然还没有结束 ,尝试了几次%d=1后突然就失效了,然后就尝试%d=2又成功了,之后经过我多次的尝试当%d递增到9后他又回到了%d=1,而且每次%d的变动都是经过了几次的重复才会递增,格式为:%00lambda_%d ,而%d则是一个计数器会递增,用来记录create_function()这个函数执行了多少次.这说明这个服务器可能是一个多进程模式,每次请求都会有一个新的php环境(有限),所以%d会递增(存在规律).所以我们可以通过调用那个匿名函数(%d=1)来实现cat flag.php的操作.原创 2024-09-03 19:14:34 · 737 阅读 · 0 评论 -
[羊城杯 2020]Easyphp21
这里呢是要我们绕过一个正则匹配,同时要通过下面的exec函数去获取flag值.这里有一个README文件那就读一下发现是GWHT账户加密过的密码.由于呢正则表达式过滤了php,所以我们可以用原创 2024-09-06 20:44:14 · 1177 阅读 · 0 评论 -
[安洵杯 2019]easy_web1
进行了两次base64解密得到3535352e706e67看着像16进制那么在进行一次十六进制字符串转换得到555.png,像是文件读取漏洞.md5强类型比较绕过我们可以通过md5碰撞来绕过,但不能通过数组来绕过,因为这里用了string的强转换,所有数组会被转换为Array.我们可以尝试读取index.php的内容,对index.php进行一次16进制转换在进行2次base64加密。我们需要绕过两个关卡,首先是preg_match()绕过,其次就是md5强类型比较绕过~3.md5碰撞绕过强类型比较。原创 2024-07-13 13:31:02 · 1834 阅读 · 0 评论 -
不一样的flag
并求出flag值。原创 2024-06-16 22:30:34 · 261 阅读 · 0 评论 -
[BJDCTF2020]EzPHP1
这里要使我们传入的file参数中,读取的file文件内容为 debu_debu_aqua,我们可以使用php://input或者是data://text,plain两个为协议来绕过,并且我们需要绕过第一个preg_math(),所以需要进行url编码和base64编码,同时也需要绕过第三个过滤.知识点:1.在默认情况下(或当 request_order 包含 "P" 在 "G" 之后时),如果 $_GET 和 $_POST 包含相同名称的键,$_REQUEST 中的值将是 $_POST 里的那个参数的值。原创 2024-07-15 11:03:19 · 1157 阅读 · 0 评论 -
[0CTF 2016]piapiapia1
于是我又盯上了photo前面的nickname, 由于我们传入的参数是经过序列化之后的,所以我们可以通过序列化的键值对逃逸来完成它.那么,此时我们的数组长度为39除了 where 多了34 位,我们要想办法把那 34 位去掉,这个时候就用到了filter.所以我们的思路就是通过file_get_contents()这个函数获取,config.php里的内容~那么我们就明白了,我们需要使查询的内容中对用的 photo 的内容为config.php.既然知道了要查询到的内容,那么就找地方该插入数据了.原创 2024-06-20 22:09:50 · 1025 阅读 · 0 评论 -
[HITCON 2017]SSRFme1
大概总结一下就是你要传入一个url参数和一个filename参数,url参数会被执行get请求,得到后的内容会被写入到 sandbox/md5(orange.ip)/filename 目录下.首先,通过pathinfo函数解析$_GET["filename"],获取其中的目录名和文件名.然后,它尝试创建一个新的目录(基于目录名,但移除了所有点。最后,使用file_put_contents函数将数据保存到文件中,文件名基于$_GET["filename"]中的基本文件名.不过有一个叫readflag的文件.原创 2024-06-22 17:34:31 · 1547 阅读 · 1 评论 -
[FBCTF2019]RCEService1
开始代码审计~配置了一个环境变量,所以我们输入系统命令的时候需要找到它的绝对路径比如/bin/cat .2. is_string() 说明我们传入的value,必须是字符型.3. preg_math(),我们需要绕过这个正则表达式,不过它真的好长.4. json_decode(),说明我们传入的格式为json格式.5. system(),我们可以通过传入系统命令来找出flag值.我们开始进行绕过preg_math()~我们可以通过两种姿势来绕过~原创 2024-06-23 14:46:58 · 633 阅读 · 0 评论 -
reverse3
4. 没办法做下一步判断,返回_main_0 函数,记得上面判断这个函数比较Dest和Str2,相等则输出right flag,故需要对Str2做出推理,可以判断sub_4110BE参数与Dest有关 接下来进入sub_4110BE 进行判断,进去之后看见的是一个switch判断语句,在这个语句判断语句中aAbcdefghijklmn[]不了解,可以进去看看。3.点击str2进入后 发现下面截图推测其中‘e3nifIH9b_C@n@dH’ 这个很有肯就是flag值,原创 2024-06-16 22:29:17 · 360 阅读 · 0 评论 -
[GXYCTF2019]BabySQli1
select * from user where username = '$name' 这个语句应该是从user表中选出username 和 password ,然后将选出的password 和 我们输入的password 进行比较,如果password 相等则登陆成功。意思就是我们输入的password 被md5加密了和我们从数据库取出的password 进行比较如果相等则输出flag值。所以我们只要输入的password的md5值等于我们自己伪造的md5值就可以了。知识点: 1. 弱口令。原创 2024-06-03 14:24:53 · 937 阅读 · 0 评论 -
[BJDCTF2020]ZJCTF,不过如此1
payload语句中我们定义了${getFlag()},目的是在调用strtolower时调用getFlag(),${}就是为了标明他是一个动态函数,当他进行/e执行的时候就会调用这个函数,同时我们传入参数cmd来获取flag,而\S*时正则表达式中的所有非空字符,由于system函数执行完毕后直接显示到我们的页面上,并没有返回值所以我们只看到的之后flag值.之后就是foreach循环了,开始便利你get请求传入的name以及对应的value,并且调用了上面的complex方法.又要开始进行代码审计了~原创 2024-06-09 15:47:39 · 507 阅读 · 1 评论 -
[GYCTF2020]Ezsqli1
这段代码,sys.schema_table_statistics_with_buffer 替代了我们平常使用的information,因为information被过滤了~不过这段代码,也带了一些猜测,猜测他就只有1行,切第一个字段为id,并且value=1。不过获取flag的时候我是猜测那张表的column存在一个flag字段~是字符型,再看看输入1 0 0 / 1 0 0。但是也可以换一种编程去获取flag,内容如下~是个无回显,而且没有过滤空格,那就用盲注~情理之中,不过又可以用到新的姿势了~原创 2024-06-11 19:18:27 · 512 阅读 · 0 评论 -
[安洵杯 2019]easy_serialize_php1
filter 这个function 可以看作一个过滤器,具体内容为首先定义了一个$filter_arr数组,数组的内容为:'php','flag','php5','php4','fl1g',又定义了一个$filter的字符串,格式是为了迎合下面的preg_replease()函数,意思就是如果匹配到$filter_arr数组中的内容则将其转换为空,且由于i的缘故,不区分大小写.s:20:"ZDBnM19mMWFnLnBocA==";s:48:" 就变成了 s:7:"";原创 2024-06-16 20:59:16 · 2722 阅读 · 0 评论 -
[红明谷CTF 2021]write_shell1
这里的switch语句中如果action=pwd则输出写入路径,如果action=upload&data存在值则写入当前路径内容,存储在名为index.php的文件中.第一个check()函数中的preg_math()为正则表达式,如果匹配到上面的值则输出harker值后结束进程,否则返回输入的值。第二个waf()函数首先判断输入的值是否为数字,如果为真则遍历数组并且递归,否则调用check()函数来进行检查。比如php标签,以及反引号在php中可作为执行语句,以及空格可以用\t--(制表符)去代替~原创 2024-06-09 00:30:27 · 851 阅读 · 1 评论 -
[WUSTCTF2020]朴实无华1
可以输入md5=0e215962017,那么md5($md5)=0e291242476940776845150308577824,两个结果都是以0e开头通过弱类型比较,0e215962017和0e291242476940776845150308577824都会被当作科学计数法中的0来处理,因为e后面的数字太大,被当作0处理。在php的7.0以下版本在intval()处理科学计数法的表示的字符串的时候,他会取e前面的数字部分作为整数部分进行转换比如:输入2e5 则会转化为 2.得到flag值,游戏结束~原创 2024-06-10 12:14:21 · 1021 阅读 · 0 评论 -
[SUCTF 2019]CheckIn1
php.ini 文件是全局配置文件,对整个web服务器都起作用,而.htaccess 和 .user.ini 同样是目录的配置文件,我们可以理解为用户自定义的配置php.ini,可以利用其来构造后门。由于.htaccess文件的后缀名被限制了,不能够上传,于是我们用到了一个新的姿势去进行文件上 传. -- .user.ini php配置文件.4. 当访问该目录下的php文件执行文件时,首先会调用.user.ini 使test.png 包含到php文件内,然后执行php文件.原创 2024-06-03 10:17:16 · 964 阅读 · 0 评论 -
[MRCTF2020]套娃1
而正则表达式我们可以通过%0a去绕过,%0a是换行符,当PHP代码执行的时候23333%0a!而最后的change函数,是将我们传入的file值进行base64解码后,又将原本字符串替换为在ascii表中的原value+2的对应字符。这里要求我们的ip地址为本地ip地址,且传入name=2333,value=todat is a happy day 的内容。preg_match('/^23333$/', $_GET['b_u_p_t'])) 是匹配传入的value是23333。发现了不得了的东西~原创 2024-06-11 14:09:44 · 1004 阅读 · 0 评论 -
[ZJCTF 2019]NiZhuanSiWei1
继续分析,意思就是定义了一个Flag的类里面又一个public属性和一个public function 函数,这个函数就是如果file属性存在,则读取file的内容,读取的大概就是flag.php,因为他上面有提示。1.php伪协议 //后面有关于伪协议的知识点链接,可以去学习一下。原创 2024-06-03 11:43:02 · 1854 阅读 · 1 评论 -
[WUSTCTF2020]颜值成绩查询1
又试了试报错闭合,联合注入之类的,结果输出的都是student number not exists.测试了一下从1输到了5,第五个显示 student number not exists.开局一个输入框,输入number查询成绩,还有2行报错,典型的sql注入题~没有出错,说明payload构建成功,那就开始写python代码~这段代码用了二分查找,开始执行~输入1 0 0 / 1 0 0。没有出错,说明空格被过滤了~获得flag,游戏结束~构造一下payload。原创 2024-06-10 21:32:02 · 503 阅读 · 0 评论 -
[BJDCTF2020]JustRE
2. 并且在这个main函数中没有发现有用到可以试着直接按shift+F12看一源码 ,很清晰的看到{}中格式的语句。1.将exe文件拖入IDA ,再找了一圈后发现这个main函数的格式与之前遇到的文件的格式不一样,3. 找到器然后在找到其对应的函数位置,进行查看。原创 2024-06-16 22:29:53 · 208 阅读 · 0 评论
分享