[ACTF2020 新生赛]Exec
拿到题目。
脑子想到这可能是一个命令行输入。
那就是有可能是命令注入题。
试下分号和ks有没被过滤。
发现可以正常使用,说明没有过滤。
输入 127.0.0.1;cd /;ls;
发现该目录下有flag,再次输入127.0.0.1;cd /;cat flag;
得到flag{3bcfed87-e1fb-4967-899d-d103ef663b91}
[极客大挑战 2019]EasySQL
burp suite
GET /check.php?username=1&password=1 HTTP/1.1 Host: 2dbc9296-37e0-45a5-af4d-fc9726c627c2.node4.buuoj.cn:81 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Referer: http://2dbc9296-37e0-45a5-af4d-fc9726c627c2.node4.buuoj.cn:81/ Upgrade-Insecure-Requests: 1
hackbar
http://2dbc9296-37e0-45a5-af4d-fc9726c627c2.node4.buuoj.cn:81/check.php?username=1'&password=1 
注入
直接试最简单的万能登录sql登录语句试试在load URL输入
http://2dbc9296-37e0-45a5-af4d-fc9726c627c2.node4.buuoj.cn:81/check.php ?username=' or' 1'= '1 &password=' or '1' ='1
[极客大挑战 2019]Secret File
本题涉及知识点:
- 关于如何反重定向。
- 关于如何简单使用文件包含漏洞。
简单记录下这题。
拿到手是这个页面。
F12,找到
其中有提示一个./Archive_room.php,点击进入。
进入新页面。
点击secret,会跳转到end.php。
但是打开f12我们会发现。
该跳转不是跳转到end.php,而是跳转到action.php。
此时想到重定向。
于是打开burpsuite。
然后启用repeater。
此时才是正确的响应。
注释里有新网页secr3t.php。
直接访问flag.php。
emmmmmm,想了一下,回去再看下代码。
然后按代码来访问flag.php。
初步判断是文件包含漏洞。
于是用php://filter/read=convert.base64-encode/resource=flag.php
代替flag.php。
这句php://filter伪协议代码的含义是:使用php://filter伪协议将flag.php的内容利用base64编码进行编码然后进行显示。执行这段代码之后,页面如下:
把base64编码拿去解码即可得到flag。
[HCTF 2018]WarmUp
-
看到一个大的滑稽,点开检查,在源代码里发现注释有source.php 文件,进入该文件。
-
得到源码。
-
开始分析。
if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
-
首先我们关注到这个if语句。
-
一看就知道,这两个&,不满足就得看滑稽。
-
而满足了,就可以include该文件。
-
所以分析得
- 该$_REQUEST[‘file’]不为空。
- 该$_REQUEST[‘file’]是字符串。
- emmm::checkFile($_REQUEST[‘file’]有返回true。
后面不会了,看答案了:https://blog.youkuaiyun.com/m0_62709637/article/details/125022518
既然不会做,那就看看知识点吧。
- 知识点:
$_REQUEST[‘file’] 获取传递的参数file中存储的值
先来熟悉几个函数
**//mb_strpos():**返回要查找的字符串在别一个字符串中首次出现的位置
// mb_strpos (haystack ,needle )
// haystack:要被检查的字符串。
// needle:要搜索的字符串
**//mb_substr()**函数返回字符串的一部分。
//str 必需。从该 string 中提取子字符串。
//start 必需。规定在字符串的何处开始。
//ength 可选。规定要返回的字符串长度。默认是直到字符串的结尾。
总的来说这个checkFile这个函数进行了 3次白名单检测、 2次问号过滤、一次URL解码
最终构造payload :?进行两次编码就可以绕过检测了。
思路总结
- 首先查看网页,当没有任何线索时查看一下源码–》找到线索source.php
- source.php–》显示源码,进行分析
- 满足三个条件
关于.和/的解释:
.表示当前目录
. .表示当前目录的上一级目录。
. ./表示当前目录下的某个文件或文件夹,视后面跟着的名字而定
./表示当前目录上一级目录的文件或文件夹,视后面跟着的名字而定。
例如:
文件夹 a
下面有 文件夹b c 和文件 d。
文件夹b下面有e.php 和文件f。
则e中的 . 表示 文件夹b
./f 表示b下面的文件f。
. .表示a文件夹。
. ./d 表示a文件夹下的d文件。