ctfshow-吃瓜杯

ATTup

images

文件上传的点!没想法...

Misc游戏签到

ctfshow{White_give_game_only_waste_your_timehahaha}

images

玩了半天游戏,他说flag不正确,flag的意思说的还是浪费时间!!!

选择0.Magic option出现的东西!

images
是我提交错了!flag是对的,只是提交的地方是原题的地方...

可以参考的代码:

from pwn import *
context.log_level='debug'

def get_data(r):
    r.recvuntil('         \n')
    e1=int(r.recvline())
    e2=int(r.recvline())
    e3=r.recvline().split(b' ')
    p,e3=int(e3[0]),int(e3[-1])
    e=sorted(enumerate([e1,e2,e3],start=1),key=lambda x:x[0])
    return p,e

def attack(r,p,e):
    for i,ee in e:
        if p>ee:
            r.sendline(str(i))
            r.recv()
            p+=ee
        else:
            return None
    r.recvuntil('Choose which You want to upgrade?\n')
    l=[]
    l.append(r.recvline()[2:-1])
    l.append(r.recvline()[2:-1])
    l.append(r.recvline()[2:-1])
    return l

while True:
    a=True
    aa=0
    flag=b''
    r=remote('pwn.challenge.ctf.show',28151)
    r.recv()
    r.sendline('1')
    for i in range(30):
        p,e=get_data(r)
        l=attack(r,p,e)
        if l:
            if b'part_flag' in l:
                r.sendline(str(l.index(b'part_flag')+1))
                r.recvuntil('You choose the part_flag!\n')
                flag+=r.recvline().strip()
                aa+=1
                if aa==4:
                    print(flag)
                    exit()
            else:
                r.sendline('1')
        else:
            r.close()
            a=False
            break
    if a:
        print(flag)
        r.interactive()

She Never Owns a Window

根据WP内容,主要考察内容是需要理解Whitespace语言、Esolang特征

f = open('file', 'r').read()
code = ''
for i in f:
    if i in [' ', '\t', '\n']:
        code += i
print(code.replace(' \n\n', '\t\n  '))
# 将输出结果在任意Whitespace解释器中运行即可

shellme

打开题目地址,就是一个phpinfo()的内容,查看数据包可以看到cookie中有Hint

images

访问url+?looklook发现还是一样,发现没有传值!!!继而访问url+?looklook=1得到下面的代码~

images

<?php
error_reporting(0);
if ($_GET['looklook']){
    highlight_file(__FILE__);
}else{
    setcookie("hint", "?looklook", time()+3600);
}
if (isset($_POST['ctf_show'])) {
    $ctfshow = $_POST['ctf_show'];
    if (is_string($ctfshow) || strlen($ctfshow) <= 107) {
        if (!preg_match("/[!@#%^&*:'\"|`a-zA-BD-Z~\\\\]|[4-9]/",$ctfshow)){
            eval($ctfshow);
        }else{
            echo("fucccc hacker!!");
        }
    }
} else {

    phpinfo();
}
?>

看样子是难点主要是在preg_match()函数和eval()函数中!

过滤的内容很多!

[!@#%^&*:'\"|`a-zA-BD-Z~\\\\]|[4-9]

在PHP中,两个变量进行异或时,先会将字符串转换成ASCII值,再将ASCII值转换成二进制再进行异或,异或完,又将结果从二进制转换成了ASCII值,再将ASCII值转换成字符串。

吃瓜

解压文件夹发现一张无法识别图片的jpg格式的图片,用010查看发现文件前缀为zip格式,将后缀名改成zip解压得到一个文件夹,内含两个文件:

images

images
将新建文本文档中的内容复制到在线图片解码的网页中得到内容二维码,扫描二维码得到内容:

cfhwc19abika_etso{h_u_e_ui1}

发现并不是flag内容,看来另一半应该在图片上!

images
发现可疑内容:

images

07F0h: 7300 7500 6E00 6E00 7900 0000 3F27 4727 s.u.n.n.y...?'G' 0800h: 3C27 4427 3F27 4727 3C27 4227 4327 4627 <'D'?'G'<'B'C'F' 0810h: 3F27 3D27 4227 4127 4927 3C27 3D00 3D00 ?'='B'A'I'<'=.=. 0820h: 0000 7375 6E6E 7900 6600 6C00 6100 6700 ..sunny.f.l.a.g. 0830h: 7B00 6300 6800 6900 5F00 6700 7500 6100 {.c.h.i._.g.u.a. 0840h: 5F00 6200 6500 6900 5F00 6B00 7500 6100 _.b.e.i._.k.u.a. 0850h: 6900 5F00 6C00 6500 7D i._.l.e.}

查看wp发现居然是栅栏密码!!!

吐血!!!吃了没经验的亏!!!还是懒的亏!!!

images
images

魔女

images

images


        function login(){
            $.cookie('ctfshow','0x36|'+$('#u').val()+"|"+$('#p').val());
            $.cookie('m','dologin');
            location.replace(location.href);
        }
        function register(){
            $.cookie('ctfshow','0x36|'+$('#u').val()+"|"+$('#p').val());
            $.cookie('m','doregister');
            location.replace(location.href);
        }

把onsubmit中的login()替换成register(),注册后即可登录!
然后可以修改头像,有点像远程文件包含的意思,这个知识点还没搞清楚。。。2021/8/15

热身

考验的是intval函数!!

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-16 11:25:09
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-18 16:53:59
# @link: https://ctfer.com

*/

include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
    $num = $_GET['num'];
    if($num==4476){
        die("no no no!");
    }
    if(preg_match("/[a-z]|\./i", $num)){
        die("no no no!!");
    }
    if(!strpos($num, "0")){
        die("no no no!!!");
    }
    if(intval($num,0)===4476){
        echo $flag;
    }
} ctfshow{ca5fa423-3b74-49d4-9fdd-611f2811f513}
127.0.0.1
intval('4476.0')    小数点  
intval('+4476.0')  正负号
intval('4476e0')    科学计数法
intval('0x117c')    16进制
intval('010574')    8进制
intval(' 010574')   8进制+空格
posted @ 2023-08-30 10:39  KAKSKY  阅读(178)  评论(0)    收藏  举报