never_give_up——bugku

2023-10-12 18:40
文章标签 give never bugku

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

前言

一个很老的题目了。两前年有个投机取巧的题解。 直接访问 f4l2a3g.txt 得到flag。 现在修复了,必须按部就班的做。 

那、来吧。

解题过程

访问靶场、查看源码,发现有1p.html

访问会跳转到 https://www.bugku.com/

用burp拦截一下试试

(写笔记复现的时候没有拦截成功。但是第一遍确实是没问题的。)

在p1.html的源码里发现有注释

<!--JTIyJTNCaWYoISUyNF9HRVQlNUInaWQnJTVEKSUwQSU3QiUwQSUwOWhlYWRlcignTG9jYXRpb24lM0ElMjBoZWxsby5waHAlM0ZpZCUzRDEnKSUzQiUwQSUwOWV4aXQoKSUzQiUwQSU3RCUwQSUyNGlkJTNEJTI0X0dFVCU1QidpZCclNUQlM0IlMEElMjRhJTNEJTI0X0dFVCU1QidhJyU1RCUzQiUwQSUyNGIlM0QlMjRfR0VUJTVCJ2InJTVEJTNCJTBBaWYoc3RyaXBvcyglMjRhJTJDJy4nKSklMEElN0IlMEElMDllY2hvJTIwJ25vJTIwbm8lMjBubyUyMG5vJTIwbm8lMjBubyUyMG5vJyUzQiUwQSUwOXJldHVybiUyMCUzQiUwQSU3RCUwQSUyNGRhdGElMjAlM0QlMjAlNDBmaWxlX2dldF9jb250ZW50cyglMjRhJTJDJ3InKSUzQiUwQWlmKCUyNGRhdGElM0QlM0QlMjJidWdrdSUyMGlzJTIwYSUyMG5pY2UlMjBwbGF0ZWZvcm0hJTIyJTIwYW5kJTIwJTI0aWQlM0QlM0QwJTIwYW5kJTIwc3RybGVuKCUyNGIpJTNFNSUyMGFuZCUyMGVyZWdpKCUyMjExMSUyMi5zdWJzdHIoJTI0YiUyQzAlMkMxKSUyQyUyMjExMTQlMjIpJTIwYW5kJTIwc3Vic3RyKCUyNGIlMkMwJTJDMSkhJTNENCklMEElN0IlMEElMDklMjRmbGFnJTIwJTNEJTIwJTIyZmxhZyU3QioqKioqKioqKioqJTdEJTIyJTBBJTdEJTBBZWxzZSUwQSU3QiUwQSUwOXByaW50JTIwJTIybmV2ZXIlMjBuZXZlciUyMG5ldmVyJTIwZ2l2ZSUyMHVwJTIwISEhJTIyJTNCJTBBJTdEJTBBJTBBJTBBJTNGJTNF-->

 经 base 64编码 再经 url解码

得到php的代码


";if(!$_GET['id'])
{header('Location: hello.php?id=1');exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))
{echo 'no no no no no no no';return ;
}
$data = @file_get_contents($a,'r');
if($data=="bugku is a nice plateform!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
{$flag = "flag{***********}"
}
else
{print "never never never give up !!!";
}?>

审计一下:

主要函数:

stripos函数:返回指定字符的位置。 题目中就是 返回 “.”在 $a 的位置。  配合上if,就是a中不能有 .

file_get_contents:读取指定的文件。题目中是要读取名称为 a 的文件。 并赋值给 data

eregi:这个函数跟 preg_match函数功能一样,实现匹配。但是已经弃用。详情见:实验吧-PHP大法-eregi()函数 - 雨九九 - 博客园 题目的意思是,经过 substr 的 变量b 再拼接 字符串 111     ,用拼接后的字符串 匹配 1114 。 

所以一共有以下限制条件:

1、id传参必须存在,且 等于0

2、a传参 不能有 . 

3、必须读取到 名为a 的文件,且文件内容是:bugku is a nice plateform!

4、b传参长度大于5

5、b的第一个字符不能等于4,且截取后要与 1114 匹配

此外还有个隐形条件。

传入 id = 0 。会自动跳转到 id =1

猜测这里也有一部分检测。

 

绕过方法:

1、id用弱类型比较。 0xg 等于 0  。 (只要是大于十六进制e的字符都可以)

2、利用php伪协议。

a=php://inputpost传入:bugku is a nice plateform!

3、利用00截断绕过 eregi

eregi("111".substr($b,0,1),"1114")

b传入 %0012345 , 经过substr截取 空格 ,再与111拼接。  函数在 处理 111 时,遇见空格,会丢弃空格及后面的数据,即 111 变成111,此时 111在1114里面了。

所以最终的payload

GET /hello.php?id=0xg&a=php://input&b=%0012345 HTTP/1.1
Host: 114.67.246.176:19420
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Length: 26bugku is a nice plateform!

 

flag{20813874f5b06c48bf46ace1f40fb1bd}

这篇关于never_give_up——bugku的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

BugKu练习记录:小山丘的秘密

题目: hill能有什么秘密呢 bugku{PLGTGBQHM}其中A=1,flag全为小写 hill解密,a=1,所以z=0,字母表为zabcdefghijklmnopqrstuvwxy,根据图片上的棋子数得到对应的字母,分别是abczadefz,用工具解出明文为whatahill,答案为bugku{whatahill}

‘xxx‘ is assigned a value but never used.

报这个错误的原因是eslint中的验证语法导致的 解决办法,在报这个错误行后面加上 // eslint-disable-line no-unused-vars即可解决 解决后如下所示:

【已解决】npm ERR! cb() never called!

背景:         在gitlub上clone的项目进行npm install时出现上述错误。 解决:         一般这种问题大概有两个情况:         情况一:node版本问题,先确定你的项目是vue几,vue2项目对应的node版本一般是14及以下版本,在终端使用下述命令进行查看 node -v 如果node版本过高,使用nvm对node版本进行切换。

bugku---misc---赛博朋克

1、下载附件解压之后是一个txt文本,查看文本的时候看到头部有NG的字样 2、把txt改为png后缀得到一张图片 3、binwalk没发现奇怪的地方,分离出来还是图片 4、stegslove分析,切换图片没有发现奇怪地方 5、将通道rgb置为0。出现了flag但是flag不明显 6、使用kali中自带的zsteg工具,提取隐写信息 7、flag flag{Hel

bugku---misc---easy_nbt

1、题目描述 2、下载附件,解压之后得到 3、查找资料发现:NBT文件是Minecraft游戏数据文件,其中包含以命名二进制标签(NBT)格式保存的数据。这种格式用于存储大量二进制数据,通常包含有关Minecraft世界的信息。NBT数据通常以.dat文件的形式存在于游戏存档文件夹中。这类文件可以通过修改后缀解压 4、将level.dat文件修改后缀为.zip解压之后得到下面文件

bugku---misc---ping

1、下载附件,解压后是一个流量包 2、用wireshark分析,发现都是清一色的icmp报文,只能看看内容。 3、点了几条流量,发现有个地方连起来是flag 4、最终将所有的拼起来,得到flag flag{dc76a1eee6e3822877ed627e0a04ab4a}

bugku题目(带WP)

CTF题型,带WP。根据给出的题目,找到flag。 1、眼见非实 下载实验文件是一个file .zip 解压这个file.zip压缩包,得到眼见为实.docx文件 双击打开这个文件,不能读取。 修改眼见为实.docx的后缀为眼见为实.zip,再进行解压。 进入word文件夹,看到docment.xml 使用记事本或者notepad++打开docment.x

Bugku Crypto 7+1+0

4nXna/V7t2LpdLI44mn0fQ== base64解码后发现奇数位不对,偶数数位符合bugku的flag形式。 相减ascii码后发现差128。遍历后还原。 (atob('4nXna/V7t2LpdLI44mn0fQ==').split('')).map((i,index)=>{if(index%2==0){return String.fromCharCode(i.charCod

bugku 隐写

说明: 隐写,通过改变图片的大小,即修改了高或者宽,达到隐写flag,要求修改会图片的真实大小找到flag。 1、打开图片 2、使用010editor工具打开图片 通过最下面黄底字的错误提示,表示CRC不匹配,证明前面是修改了数据。 鼠标放到第二行,可看到图片的现在高度及宽度。 图片现在的宽是500,高是420。现在我们修改图片的高度和宽度一样。 00 00 01 F

BugKu 哎,就是玩

说明:通过图片隐写找到迷宫压缩包解码密码,然后通过MG游戏得到井字棋游戏解压密码,最后通过完成井字棋得到flag. 打开实验包,解压后可以看到两个文件。 首先要通过TKR.png找到迷宫.zip的解压密码。 打开图片,发现图片中钓鱼线没有完全显示出来,说明图片的高度不够。 使用010editor打开图片,提示CRC校验不匹配。 说明图片的高度被修改了,现在把图片的高度修改