BUUCTF [MRCTF2020]Ez_bypass1

2023-10-12 05:01
文章标签 buuctf mrctf2020 ez bypass1

本文主要是介绍BUUCTF [MRCTF2020]Ez_bypass1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这道题全程我都是用bp做的

拿到题目

我们查看页面源代码得到

代码审计

我们要用get传入id和gg两个参数,id和gg的值要求不能相等,但是id和gg的md5强比较必须相等

if(isset($_GET['gg'])&&isset($_GET['id'])) {$id=$_GET['id'];$gg=$_GET['gg'];if (md5($id) === md5($gg) && $id !== $gg) {echo 'You got the first step';

进入下一个循环体中,我们看到了这个函数

is_numeric($passwd)

s_numeric() 函数用于检测变量是否为数字或数字字符串。

PHP 版本要求:PHP 4, PHP 5, PHP 7

如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回 1,即 TRUE。

if(isset($_POST['passwd'])) {$passwd=$_POST['passwd'];if (!is_numeric($passwd)){if($passwd==1234567){echo 'Good Job!';highlight_file('flag.php')

所以这串代码是告诉我们如果post个passwd参数,且passwd必须是数字或数字字符串,passwd的值必须与1234567相等,这里就是php的弱绕过,当我们传入1234567a时,就是字符型和数字型进行比较,所以当传入的值passwd=123456a的时候:则会先把1234567admin转化成1234567再进行比较。

我们知道,md5强比较绕过有两种方法,第一种数组绕过,因为md5无法处理数组,返回null时即为true,第二种就是用两个完全相同的md5值绕过,即

array1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2

array2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

所以,我们用get传入?id[]=1&gg[]=2

然后用bp抓包,传入passwd=1234567a,并将get请求变更为post

需要注意的点时,此时如果重发包过去,页面是没有反应的

我们需要将原先的get传入的参数复制了放在请求行上

因为变更请求时,bp会将get的参数变为post,所以我们需要重新写入

这样我们就得到了flag

总结:

此题不难,但是注意和收获的地方很多

收获:

1.is_numeric() 函数用于检测变量是否为数字或数字字符串,当为浮点数时,返回值为1,即为true

2.php的弱绕过

注意的点:

我们在用bp变更包的请求方式时,如果原先已经传入了get参数,我们变更为post请求时,bp会把原先的get传入的参数和后面加上的参数一样转换成post参数,所以我们需要将原先get传入的参数放在包的请求行上,使其成为get参数,然后才能进行重发包

这篇关于BUUCTF [MRCTF2020]Ez_bypass1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/193441

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

BUUCTF PWN wp--bjdctf_2020_babystack

第一步   checksec一下,该题是64位的,该题目大概率是一道栈溢出(因为题目里面提到了stack) 分析一下这个二进制保护机制: Arch: amd64-64-little 这表示二进制文件是为64位AMD处理器设计的,使用的是小端序(little-endian)格式。RELRO: Partial RELRO RELRO(Relocation Read-Only)是一种安全特性,旨

BUUCTF—[网鼎杯 2020 朱雀组]phpweb

题解 打开题目是这样子的。 啥也不管抓个包看看,从它返回的信息判断出func后面的是要调用的函数,p后面的是要执行的内容。 那我们直接执行个系统命令看看,可以看到返回了hack,估计是做了过滤。 func=system&p=ls 直接读取源码看看咯,可以看到过滤了好多函数,反正我认识的可以进行命令执行的函数都给禁了。 func=file_get_contents&p=ind

BUUCTF派大星的烦恼

解压得到一张图片没啥有用信息 根据下面题目提示,用010editor打开图片发现一段16进制字符串 派大星最近很苦恼,因为它的屁股上出现了一道疤痕!我们拍下了它屁股一张16位位图,0x22,0x44代表伤疤两种细胞,0xf0则是派大星的赘肉。还原伤疤,知道是谁打的派大星!(答案为32位的一串字符串) 注意:得到的 flag 请包上 flag{} 提交 在010editor直接

【CTF Web】BUUCTF Upload-Labs-Linux Pass-04 Writeup(文件上传+PHP+.htaccess绕过)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

BUUCTF二维码1

九张撕碎二维码碎片。不会让人拼起来吧!看了大神们得博客竟然是真的,这是ctf的题吗!是考验人的耐性吧! 我勉为其难讲一下PS怎么拼图,首先要把九张碎片抠图,背景变透明,ps可以但是太麻烦,我在GIthub找到一个Python+Qt写的自动抠图的软件,使用removebg提供的api接口,可生成高清图预览并保存,输入图片链接也可在线抠图。超赞,起码比某些国产类似软件有良心,长期用收费还

续航更进阶 长安马自达MAZDA EZ-6成功挑战1301公里续航

继在中国“热极”新疆吐鲁番完成高温试炼后,8月24日-26日,长安马自达MAZDA EZ-6(以下称EZ-6)“众测先享官—续航更进阶”再次从兰州出发,EZ-6增程车型以一次充电、一箱油(45L油箱)创造了CLTC工况1301公里的极限续航记录,实测百公里平均能耗3.6L,增程车型续航达成率超过100%。此前在吐鲁番高温环境下,EZ-6纯电600公里级车型在CLTC工况下同样成功突破100%续航达

buuctf [MRCTF2020]Xor

前言:学习笔记。 32位IDA 打开。 先查找字符串 ok,反汇编不了,好吧,只能看汇编代码。 那咱用OD去做。顺便复习汇编语言 接着往下。 没看懂?那把JNZ SHORT xor.00CE10FF 给NOP掉再看看。 再走一遍。 猜测AL是否代表的是下标? CL是对应值?不确定,再走一遍。 OK,结案,程序是对应值与对应下