BUUCTF
文章平均质量分 73
日常刷题笔记
E13v3n_ovo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[WUSTCTF2020]颜值成绩查询1
发现只有三列,在输入payload:1/**/union/**/select/**/1,2,3--+时发现union和select被过滤了,可以使用大小写来混淆绕过,所以payload应该是 -1/**/uNion/**/sElect/**/1,2,3--+获取flag值payload:-1/**/uNion/**/sElect/**/1,2,group_concat(flag,value)/**/from/**/flag--+先打开页面看到有个输入框,输入个1发现回显。还有其他方法,布尔盲注。原创 2024-09-15 22:51:31 · 538 阅读 · 0 评论 -
[SWPU2019]Web11
可以知道2,3列可以显示信息,先查数据库名payload:1'/**/union/**/select/**/1,2,database(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'后来看了佬的博客,发现sql注入点是在广告名这里,一开始没想到是sql,一开始想到的是rce。buuctf上开启容器可以看到是个登录页面,注入的地方不在这里,我们首先需要进行注册一个账号,然后登录上去,可以看到有个申请发布广告。函数,它会将所有返回的。原创 2024-09-15 22:19:43 · 895 阅读 · 0 评论 -
[GYCTF2020]Blacklist1
"将前面和后面的命令有了一个先后顺序,先去执行闭合的1'的那个语句,然后再执行";可以看到是执行了两个结果。show datases--+来查看数据库有哪些(看了网上的blog,好多都是直接show tables,但是直接show tables为什么会直接出现FlagHere表呢)由于限制了多条命令的输入,所以只能改用其他的命令了Handler可以实现查询,可以来了解一下Handler命令的语法使用。这个命令是上述通过索引读取的简化版本,它不需要指定索引名称,但通常用于没有索引或不需要通过索引读取的场景。原创 2024-09-12 21:12:30 · 1129 阅读 · 0 评论 -
[CISCN2019 华东南赛区]Web111
看到现在,可以想到尝试一下xff,当我们bp抓包后,添加xff,我们可以发现右上角的Current IP发生了变化,并且当我们输入什么他就会变成什么,这时候就应该想到ssti注入了。进行注入发现是Smarty 模板注入(好像页面下面也有提示"Bulid with Smarty",……不过没关系),可以看我之前写过的一篇blog,里面详细介绍了整个过程。打开看到页面存在IP和XFF,右上角是咱们自己的IP。然后我们按照smarty模板去注入,使用{if}标签。直接cat /flag了。原创 2024-09-03 21:13:41 · 375 阅读 · 0 评论 -
[De1CTF 2019]SSRF Me1
既然/geneSign路由能够返回sign值并且sign值还是md5(secret_key+param+action)的值(因为在python中+代表字符串直接拼接)也就是md5(xxxflag.txtreadscan),又因为在geneSign这一路由中action是固定的等于scan,所以我们要想得到readscan的sign值那么我们可以令param=flag.txtread。通过sign传递然后令action=readscan,通过get方法去传递param=flag.txt,得到flag。原创 2024-07-24 16:23:18 · 681 阅读 · 0 评论 -
[极客大挑战 2019]RCE ME1
flag文件打开是空白的看不到flag,因为前面在phpinfo中看到了有许多禁用函数,所以我们需要借助蚁剑的插件来绕过,蚁剑插件市场有个插件,由于disable_functions的存在我们不能说直接读取flag,需要借助readflag来读取。传入code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9C%92%9B%A2%D6%D6);传入code=(~%8F%97%8F%96%91%99%90)();原创 2024-06-23 22:44:17 · 209 阅读 · 0 评论 -
[ZJCTF 2019]NiZhuanSiWei1
嘶~好熟悉,好像前面我已经写了一篇这样的文章,前两层的绕过方法都是一样的。输出对象将对象转化为字符串形式,或者将一个“对象”与“字符串”进行拼接时,会调用。那么将这段通过password传入,于是最后的payload变成了。按照这篇文章就可以拿下前两层了,得到一层base64编码。看到源码只有一个__toString()魔术方法。构造也很好构造,在本地构造运行。打开题目看到如下图的代码。原创 2024-06-22 23:02:08 · 449 阅读 · 1 评论 -
[GXYCTF2019]禁止套娃1
这部分代码的作用是对传入的exp参数进行正则匹配和替换操作,以确保该参数只包含函数调用,并且这些函数调用的结果最终等于一个分号(;默认情况下,如果没有先前调用过next()、prev()、reset()等函数,current()返回数组的第一个元素。正则表达式的作用是匹配像func1(func2())这样的嵌套函数调用。原创 2024-06-22 22:41:02 · 1084 阅读 · 1 评论 -
[BJDCTF2020]ZJCTF,不过如此1
简单分析一下这段代码,代码通过GET方法来传入text和file两个参数,并且传入的text参数通过file_get_contents函数以只读的方式打开,而且当它强等于"I have a dream"这个字符串是,才能够去输出并且去执行下面的那个if判断。也就是这段代码会遍历传入的GET参数,将GET传入的变量名给了$re,把变量名的值给了$str,那么这样在传入paylaod的时候preg_replace会变成。我们将返回的base64解码就是next.php的源码了,源码如下。原创 2024-06-17 22:56:29 · 1828 阅读 · 0 评论 -
[BJDCTF2020]Cookie is so stable1
如果是Jinja2的话输出应该是输出22,为什么输出22呢,'2'在python中被看作是字符串,在python中一个字符串乘上一个数字,就是将这个字符串连续输出,看下面演示。这里是Twig1.x版本(但是怎么确定是1.x版本的我没有弄明白,因此下面的payload也只适用于Twig1.x版本)最终我们的payload为。提示看一下cookie,我们在flag.php页面抓包可以看到cookie中是存在一个user参数的。确定是ssti注入,那么接下来就是确定是哪个模板了,上图。打开题目,看到如下页面。原创 2024-06-13 07:36:50 · 903 阅读 · 0 评论 -
[BJDCTF2020]The mystery of ip1
然后在尝试a{*comment*}b和{{7*7}},如果a{*comment*}b返回ab的话就是smarty模板,尝试(这里{**}是注释符的意思,所以会直接被省略)利用{if}标签来进行注入,在XFF处输入{if phpinfo()}{/if},可以看到成功执行。看一下flag页面返回了咱们的ip,那么接下来burpsuite抓包,构造XFF然后进行判断。发现存在ssti注入漏洞,然后进行判断是什么模板,上张图。发现在根目录存在flag,cat /flag得到flag。原创 2024-06-16 22:23:21 · 495 阅读 · 0 评论 -
[BSidesCF 2020]Had a bad day1
可以去看一下这篇文章。也就是说当我们通过category去传入文件名的时候,category=woofers/flag的时候,index.php会在参数后面直接连接.php这个后缀,因此$file=woofers/flag.php,而在php中进行文件包含的时候会把woofers/给忽略掉,找到这个有意义的flag.php,从而到达利用php伪协议去读取flag.php的目的。可以看到页面是返回来了一串base64编码,解码就可以得到flag.php的源码,如下。通过解码我们就可以看到源码中的flag了。原创 2024-06-16 23:16:21 · 921 阅读 · 0 评论 -
[RoarCTF 2019]Easy Java1
所以我们可以得到文件目录也就是访问filename=WEB-INF/classes/com/wm/ctf/FlagController.class然后我们就可以得到源码,记事本打开,发现一串base64。这里GET方法来下载是不行的,既然给出了help.docx这个提示,我猜测题目作者应该是想让换一种方法来下载。可以看到com.wm.ctf.FlagController被包裹,在前面介绍的WEB-INF知识点中介绍了。文件路径错误:指定的文件路径不正确,或者文件名拼写错误。原创 2024-06-08 16:47:45 · 943 阅读 · 0 评论 -
[BUUCTF 2018]Online Tool1
将给字符串增加一个单引号并且能引用或者转义任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。接下来是通过get方法传入host参数,经过escapeshellarg和escapeshellcmd两个函数过滤后,拼接到nmap命令后,通过system系统命令来执行命令。发现在nmap命令中 有一个参数-oG可以实现将命令和结果写到文件这个命令就是我们的输入可控!通过上面的操作逃过了单引号,但escapeshellcmd会对这些特殊符号前面加上\来转义…原创 2024-06-08 16:46:58 · 1281 阅读 · 0 评论 -
[护网杯 2018]easy_tornado
在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量。和flask类似,tornado中的模板也可以使用for、if、while等控制语句,并且同样使用。原创 2024-06-08 16:46:20 · 533 阅读 · 0 评论 -
[SUCTF 2019]CheckIn1
利用上传的一句话进行GET传参cmd=var_dump(scandir('/'));看到upload页面猜测文件上传,随便传了一个txt,给提示not image!读取一个图像的第一个字节并检查其签名。用蚁剑连不上(orz)原创 2024-06-08 16:45:19 · 352 阅读 · 0 评论 -
[RoarCTF 2019]Easy Calc1
file_get_contents()函数(或者是show_source函数)可以将文件的内容读入到一个字符串中,利用file_get_contents()函数来读取文件,构造payload。var_dump可以用来输出信息,而scandir可以用来获取目录文件,由于'/'被过滤了,可以用chr(47)来代替'/',所以通过get传参。去查看一下,发现很多被禁用的函数(注意在进行传参时,num前面需要存在一个space或者是用%20,以达到执行phpinfo()命令的效果)然后通过num去get传参,原创 2024-06-08 16:44:33 · 417 阅读 · 0 评论 -
极客大挑战2019Upload 1:
发现返回 Not Image所以我们将Content-Type一栏改为image/jpeg,再继续发送发现返回Not php所以我们将filename一项后面的文件后缀由.php改为.phtml继续发送返回。尝试将一句话木马<?> 改为 <%php system($_GET['cmd']);本题首先尝试的一句话木马为<?上传成功但是查看发现一句话木马并未被成功执行。原创 2024-06-08 16:42:44 · 338 阅读 · 0 评论
分享