![](https://i-blog.csdnimg.cn/direct/dbc981a99891453496fcdbfa03bf0a1c.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
CTF
文章平均质量分 71
This WP from CTF
安红豆.
喜欢wtj
展开
-
[N1CTF 2018]eating_cms1
是个parse_url漏洞利用,这段代码想让我们输入的url地址问好后过滤了"flag","manage","ffffllllaaaaggg",所以我们可以推测存在“flag","manage","ffffllllaaaaggg"这个函数通常很安全,但如果不正确地使用或当输入的 URL 格式异常时,可能会引发一些潜在的问题或误解,但这并不直接等同于传统意义上的“漏洞”。实际上,它仅仅是一个解析工具,并不提供安全验证或清理功能。可能无法正确解析这些部分,尤其是在路径(path)或查询字符串(query)中。原创 2024-09-08 18:34:16 · 256 阅读 · 0 评论 -
[BJDCTF2020]EasySearch1
如果在编辑过程中Vim进程被意外终止或者用户没有正确地退出Vim,那么这个临时文件可能会被留下来,如果攻击者能够访问这个临时文件就可以获得原始文件的敏感信息,从而导致信息泄露,需要注意的是不同的操作失败次数将会导致产生不同后缀的交互文件,例如:index.php第一次产生的交换文件名为.index.php.swp,再次意外退出后将会产生名为.index.php.swo的交换文件,第三次产生的交换文件则为.index.php.swn。大多数服务器配置中,发现了我们写入的shtml文件的位置,去访问一下.原创 2024-07-09 15:48:24 · 930 阅读 · 0 评论 -
[极客大挑战 2020]Greatphp1
所以,我们可以通过PHP的原生类来进行绕过(Error 或者 Exception),这两个类中呢存在一个_toString()的方法属性,意思就是当这两个类的对面需要被转换成字符串的时候就会调用 _toString()函数,下半部分就是传入一个great的参数,对这个参数进行反序列化,所以我们目标就明确了,我们需要绕过这个强类型比较,之后在绕过正则表达,最后执行寻找flag的命令.php 来实现我们包含flag文件的效果,又因为正则表达过滤了php我们可以用原创 2024-09-02 10:55:23 · 1378 阅读 · 0 评论 -
[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 · 472 阅读 · 0 评论 -
[羊城杯 2020]Easyphp21
这里呢是要我们绕过一个正则匹配,同时要通过下面的exec函数去获取flag值.这里有一个README文件那就读一下发现是GWHT账户加密过的密码.由于呢正则表达式过滤了php,所以我们可以用原创 2024-09-06 20:44:14 · 849 阅读 · 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 · 1675 阅读 · 0 评论 -
不一样的flag
并求出flag值。原创 2024-06-16 22:30:34 · 198 阅读 · 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 · 966 阅读 · 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 · 775 阅读 · 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 · 967 阅读 · 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 · 468 阅读 · 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 · 310 阅读 · 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 · 438 阅读 · 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 · 442 阅读 · 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 · 383 阅读 · 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 · 1906 阅读 · 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 · 602 阅读 · 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 · 766 阅读 · 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 · 544 阅读 · 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 · 838 阅读 · 0 评论 -
[ZJCTF 2019]NiZhuanSiWei1
继续分析,意思就是定义了一个Flag的类里面又一个public属性和一个public function 函数,这个函数就是如果file属性存在,则读取file的内容,读取的大概就是flag.php,因为他上面有提示。1.php伪协议 //后面有关于伪协议的知识点链接,可以去学习一下。原创 2024-06-03 11:43:02 · 1728 阅读 · 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 · 369 阅读 · 0 评论 -
[BJDCTF2020]JustRE
2. 并且在这个main函数中没有发现有用到可以试着直接按shift+F12看一源码 ,很清晰的看到{}中格式的语句。1.将exe文件拖入IDA ,再找了一圈后发现这个main函数的格式与之前遇到的文件的格式不一样,3. 找到器然后在找到其对应的函数位置,进行查看。原创 2024-06-16 22:29:53 · 157 阅读 · 0 评论