Bugku-CTF之never give up

首先查看源码:

访问1p.html
http://123.206.87.240:8006/test/1p.html
发现直接跳转到了bugku主页
应该是有重定向的代码,那直接看源代码就行,输入view-source:http://114.67.175.224:17070/1p.html
得到源码:

<HTML>
<HEAD>
<SCRIPT LANGUAGE="Javascript">
<!--
var Words ="%3Cscript%3Ewindow.location.href%3D'http%3A%2F%2Fwww.bugku.com'%3B%3C%2Fscript%3E%20%0A%3C!--JTIyJTNCaWYoISUyNF9HRVQlNUInaWQnJTVEKSUwQSU3QiUwQSUwOWhlYWRlcignTG9jYXRpb24lM0ElMjBoZWxsby5waHAlM0ZpZCUzRDEnKSUzQiUwQSUwOWV4aXQoKSUzQiUwQSU3RCUwQSUyNGlkJTNEJTI0X0dFVCU1QidpZCclNUQlM0IlMEElMjRhJTNEJTI0X0dFVCU1QidhJyU1RCUzQiUwQSUyNGIlM0QlMjRfR0VUJTVCJ2InJTVEJTNCJTBBaWYoc3RyaXBvcyglMjRhJTJDJy4nKSklMEElN0IlMEElMDllY2hvJTIwJ25vJTIwbm8lMjBubyUyMG5vJTIwbm8lMjBubyUyMG5vJyUzQiUwQSUwOXJldHVybiUyMCUzQiUwQSU3RCUwQSUyNGRhdGElMjAlM0QlMjAlNDBmaWxlX2dldF9jb250ZW50cyglMjRhJTJDJ3InKSUzQiUwQWlmKCUyNGRhdGElM0QlM0QlMjJidWdrdSUyMGlzJTIwYSUyMG5pY2UlMjBwbGF0ZWZvcm0hJTIyJTIwYW5kJTIwJTI0aWQlM0QlM0QwJTIwYW5kJTIwc3RybGVuKCUyNGIpJTNFNSUyMGFuZCUyMGVyZWdpKCUyMjExMSUyMi5zdWJzdHIoJTI0YiUyQzAlMkMxKSUyQyUyMjExMTQlMjIpJTIwYW5kJTIwc3Vic3RyKCUyNGIlMkMwJTJDMSkhJTNENCklMEElN0IlMEElMDklMjRmbGFnJTIwJTNEJTIwJTIyZmxhZyU3QioqKioqKioqKioqJTdEJTIyJTBBJTdEJTBBZWxzZSUwQSU3QiUwQSUwOXByaW50JTIwJTIybmV2ZXIlMjBuZXZlciUyMG5ldmVyJTIwZ2l2ZSUyMHVwJTIwISEhJTIyJTNCJTBBJTdEJTBBJTBBJTBBJTNGJTNF--%3E"
function OutWord()
{var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
}
OutWord();
// -->
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>

将中间一长串url解码得到:

<script>window.location.href='http://www.bugku.com';</script>
<!--JTIyJTNCaWYoISUyNF9HRVQlNUInaWQnJTVEKSUwQSU3QiUwQSUwOWhlYWRlcignTG9jYXRpb24lM0ElMjBoZWxsby5waHAlM0ZpZCUzRDEnKSUzQiUwQSUwOWV4aXQoKSUzQiUwQSU3RCUwQSUyNGlkJTNEJTI0X0dFVCU1QidpZCclNUQlM0IlMEElMjRhJTNEJTI0X0dFVCU1QidhJyU1RCUzQiUwQSUyNGIlM0QlMjRfR0VUJTVCJ2InJTVEJTNCJTBBaWYoc3RyaXBvcyglMjRhJTJDJy4nKSklMEElN0IlMEElMDllY2hvJTIwJ25vJTIwbm8lMjBubyUyMG5vJTIwbm8lMjBubyUyMG5vJyUzQiUwQSUwOXJldHVybiUyMCUzQiUwQSU3RCUwQSUyNGRhdGElMjAlM0QlMjAlNDBmaWxlX2dldF9jb250ZW50cyglMjRhJTJDJ3InKSUzQiUwQWlmKCUyNGRhdGElM0QlM0QlMjJidWdrdSUyMGlzJTIwYSUyMG5pY2UlMjBwbGF0ZWZvcm0hJTIyJTIwYW5kJTIwJTI0aWQlM0QlM0QwJTIwYW5kJTIwc3RybGVuKCUyNGIpJTNFNSUyMGFuZCUyMGVyZWdpKCUyMjExMSUyMi5zdWJzdHIoJTI0YiUyQzAlMkMxKSUyQyUyMjExMTQlMjIpJTIwYW5kJTIwc3Vic3RyKCUyNGIlMkMwJTJDMSkhJTNENCklMEElN0IlMEElMDklMjRmbGFnJTIwJTNEJTIwJTIyZmxhZyU3QioqKioqKioqKioqJTdEJTIyJTBBJTdEJTBBZWxzZSUwQSU3QiUwQSUwOXByaW50JTIwJTIybmV2ZXIlMjBuZXZlciUyMG5ldmVyJTIwZ2l2ZSUyMHVwJTIwISEhJTIyJTNCJTBBJTdEJTBBJTBBJTBBJTNGJTNF-->

发现还有一层base64,再次解码:

又是url编码,再次解码得到:

";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 !!!";
}
?

首先如果id为空,url会被置为hello.php?id=1
下面有5个条件:

  1. 变量 $data 弱等于字符串 bugku is a nice plateform!
  2. 变量 $id 弱等于整型数 0
  3. 变量 $b 的长度大于 5
  4. 字符串 1114 要与字符串 111 连接变量 $b 的第一个字符构成的正则表达式匹配
  5. 变量 $b 的第一个字符弱不等于整型数 4

1.PHP 伪协议
源码中变量 $data 是由file_get_contents() 函数读取变量 $a 的值而得,所以 $a 的值必须为数据流。
因此这里用伪协议 php:// 来访问输入输出的数据流,这里使用data伪协议
传参a=data:text/plain,bugku is a nice plateform!
2.id不能为空(即也不能为0),但是要若等于0,这里可以弱类型绕过,即?id=a
3.eregi() 截断漏洞

ereg() 函数或 eregi() 函数存在空字符截断漏洞,即参数中的正则表达式或待匹配字符串遇到空字符则截断丢弃后面的数据。

源码中待匹配字符串(第二个参数)已确定为 “1114”,正则表达式(第一个参数)由 “111” 连接 $b 的第一个字符组成,若令 substr($b,0,1) = “\x00”,即满足 “1114” 与 "111"匹配。因此,这里假设 $b = “\x0012345”,才能满足条件。
因为$b是URL查询字符串中的变量,所以不应该在此放入空字符\x00,而应该为空字符的URL编码%00
这里传参b=%0012345
因此,payload如下:
http://114.67.175.224:17070/hello.php?id=a&a=data:text/plain,bugku is a nice plateform!&b=%0012345

Bugku-CTF never give up相关推荐

  1. [Bugku CTF——Pwn] pwn2

    [Bugku CTF--Pwn] pwn2 题目地址:https://ctf.bugku.com/ 额,好久不写这么简单的题目了 利用栈溢出修改返回地址就好, 如果不会就去看看什么是栈溢出 explo ...

  2. [Bugku CTF——Pwn] pwn4

    [Bugku CTF--Pwn] pwn4 题目地址:https://ctf.bugku.com/ 给的提示很清楚,绕过canary保护 那就绕过就好 题目当中有system函数 利用ROPgadge ...

  3. [Bugku CTF——Pwn] pwn1

    [Bugku CTF--Pwn] pwn1 题目地址:https://ctf.bugku.com/ 额, 直接nc连接上,就可以直接得到shell 好水哦,新手玩玩就好,老鸟勿喷 无语凝噎 cat f ...

  4. BugKu CTF(杂项篇MISC)—放松一下吧

    CTF BugKu CTF (杂项篇MISC) 攻与防 放松一下吧 描 述: bugku{} 下载后是一个压缩包. 一.工具 十六进制编辑工具 010 editor 图片加解密工具F5-stegano ...

  5. BugKu CTF(杂项篇MISC)—想要种子吗

    CTF BugKu CTF (杂项篇MISC) 攻与防 想要种子吗 提 示: 描 述:flag{} 题目下载后是一张图片,打开如下. 一.工具 十六进制编辑器010 editor kali系统文件分离 ...

  6. BugKu CTF(杂项篇MISC)---细心的大象

    BugKu CTF(杂项篇MISC)-细心的大象 下载得到图片 foremost 分离得到压缩包 foremost 1.jpg 查看图片详细信息 TVNEUzQ1NkFTRDEyM3p6 base64 ...

  7. Bugku CTF 杂项(21-29) Writeup

    Bugku CTF 杂项(21-29) Writeup 0x21图穷匕见 下载得到一个图片,用winhex打开发现jpg文件尾FF D8后面有大量16进制数据,复制后面的数据,用notepad++中插 ...

  8. Bugku CTF 杂项(13-20) Writeup

    Bugku CTF 杂项(13-20) Writeup 0x13这么多数据包 用wireshark打开,浏览一下从第104个包开始有TCP协议,那么就是从第104个包开始就是攻击机(192.168.1 ...

  9. Bugku CTF 密码学刷题

    Bugku CTF 密码学刷题 前言 一.抄错的字符 二./.- 三.聪明的小羊 四.ok 五.[+-<>] 六.把猪困在猪圈里 七.你喜欢下棋吗 八.小山丘的秘密 九.EN-气泡 十.你 ...

  10. BugKu CTF Web

    BugKu CTF Web 滑稽 计算器 GET POST Simple_SSTI_1 矛盾 eval 变量1 Simple_SSTI_2 alert 你必须让他停下 方法一 方法二 方法三 网站被黑 ...

最新文章

  1. 开发日记-20190514 关键词 汇编语言(七)
  2. IIS服务器Web访问提示输入密码问题
  3. RHEL6.0使用centos的YUM更新源
  4. hdu_2048 错排问题
  5. nginx python webpy 配置安装
  6. numpy 归一化_NumPy 数据归一化、可视化
  7. 中国公有云三巨头,同时支持Rancher Kubernetes平台 1
  8. Atitit linux获取项目运行环境版本
  9. 【手写数字识别】基于matlab GUI BP神经网络手写数字识别【含Matlab源码 518期】
  10. 深入理解Nacos源码注册中心之服务发现(订阅拉取)
  11. 通过BeanDefinitionReader获取BeanDefinition的三种不同方式
  12. Allegro删除Out of data shape铜皮框
  13. 2018SCAU校赛题解
  14. 获取当天年月日,及开始结束时间
  15. python爬取付费漫画_Python爬虫---爬取腾讯动漫全站漫画
  16. 单点登录-CAS介绍
  17. Nodejs Addons
  18. 适用于 Android 初学者的 Dagger 2 - DI 第二部分
  19. AlarmManager介绍
  20. 5G学习笔记之NGAP

热门文章

  1. 什么是PDT,PST美国时间
  2. 深度 | 5分钟读懂阿里零售通智慧供应链平台
  3. 根 ssl 2668 优美的暴力
  4. javaweb项目JS文件报错解决办法
  5. wps里ppt怎么换另一个的模板_从没想过,这个基础的PPT数据图表,原来还是排版神器!...
  6. 网站显示 该内容被禁止访问 怎么解决
  7. Android获取手机及路由器的Mac地址和IP地址
  8. matlab标定工具箱 使用,关于 matlab 标定工具箱的使用 | 学步园
  9. Oracle 三种常与开窗组合使用的方法
  10. c语言stl用法,C STL快速入门!学习使我快乐