CTF_论剑场 Web 持续更新

web 26

打开题目链接得到这个代码

 
$num=$_GET['num']; 
$str=$_GET['str']; 
show_source(__FILE__); 
if (isset($num)&&isset($str)) { 
    if (preg_match('/\d+/sD',$str)) { //str不能为数字
        echo "vagetable hhhh"; 
        exit(); 
    } 
    $result=is_numeric($num) and is_numeric($str); 
    if ($result) { 
        include "flag.php"; 
        echo "$flag"; 
    } 
    else{ 
        echo "vagetablessssss"; 
    } 
} 
?>

分析

$result=is_numeric($num) and is_numeric($str); 
    if ($result) { 
        include "flag.php"; 
        echo "$flag"; 
    } 
    else{ 
        echo "vagetablessssss"; 
    } 

is_numeric($num) 表示是否为数字,是返回1,否返回0
直接在地址栏后面输入/?str=a&num=1
出flag
flag{f0058a1d652f13d6}

Web1

CTF_论剑场 Web 持续更新_第1张图片
分析:

$c = trim(file_get_contents($b));//file_get_contents()函数的功能是将传入文件名对应的
//整个文件读入一个字符串,trim()函数则是移除字符串两侧的空白字符或其他预定义字符,
//trim()函数有两个参数trim(str, charlist),str参数为必选参数,charlist参数为可选参数,
//函数功能为移除str字符串中的charlist,若省略charlist参数则直接移除下列字符:
b='ssAEDsssss';//故查找文件

CTF_论剑场 Web 持续更新_第2张图片
未找到说明不存在这个文件
当该函数由于读取的文件不存在而导致读取失败时,就将返回FALSE
则c为false
在PHP中 == 只判断值而不判断类型
*===*判断值且判断类型
在PHP中NULL、FALSE和0的值是相等的,但类型并不相同。
故在地址栏中输入/?a 得到flag
flag{c3fd1661da5efb989c72b91f3c378759}

Web9

CTF_论剑场 Web 持续更新_第3张图片
抓包
CTF_论剑场 Web 持续更新_第4张图片
ZmxhZ3tUN2w4eHM5ZmMxbmN0OE52aVBUYm4zZkcwZHpYOVZ9
把这玩意base64解密
flag{T7l8xs9fc1nct8NviPTbn3fG0dzX9V}

Web2

CTF_论剑场 Web 持续更新_第5张图片
3秒是不可能计算出来的,而且发现刷新一下式子还会变
在网上找了大佬的Python脚本,跑一下出flag

import re
import requests
url = 'http://123.206.31.85:10002/'
r=requests.session()
text=r.get(url).text
calc=str(re.findall("(.*?)

"
,text))[2:-2] ans=eval(calc) data={'result':ans} res=r.post(url,data) print(res.text)

基于Python 3.x
flag{b37d6bdd7bb132c7c7f6072cd318697c}

Web6管理员系统

CTF_论剑场 Web 持续更新_第6张图片
F12发现有一段注释掉的base64

解码得到 test123 猜想这是密码
使用弱密码
账号:admin
密码:test123

抓包改IP
X-Forwarded-For:172.0.0.1 得到flag
CTF_论剑场 Web 持续更新_第7张图片

Web11robots

什么都没有,注意到网页标题 robots
于是访问robots.txt
在这里插入图片描述
再去访问shell.php
在这里插入图片描述
发现MD5 要使MD5 的前6位等于后面那个值 刷新发现等号后面的值会变化

写脚本进行MD5碰撞

import hashlib

def get_token(txt):
    m1 = hashlib.md5()
    m1.update(txt.encode("utf-8"))
    token = m1.hexdigest()
    return token
for i in range(99999999999):
    if get_token(str(i))[0:6] == '38651c':
        print(i)
        break

提交即得到flag
在这里插入图片描述

你可能感兴趣的:(CTF_论剑场 Web 持续更新)