“百度杯”CTF比赛 十月场-Getflag(md5碰撞+sql注入+网站绝对路径)
进去md5碰撞,贴一下脚本代码
import hashlib
def md5(value):
return hashlib.md5(str(value).encode("utf-8")).hexdigest()
for i in range(1,9999999):
if (md5(i)[0:6] =="f5ce8c"):
print(i)
break
登录处存在SQL注入,直接万能密码就能登录。登录后给了三个文件,提示flag在根目录下,点开a.php的同时我们抓包,自己尝试了许多路径,最接近的是改成f=/var/www/html/../flag.php,也没用。真正的路径是/var/www/html/Challenges/flag.php我就在想这些大师傅都是怎么想到的。

访问得到源码。
<?php
//POST方式提交参数flag
$f = $_POST['flag'];
//将得到的flag参数中的一些字符去掉
$f = str_replace(array('`', '$', '*', '#', ':', '\\', '"', "'", '(', ')', '.', '>'), '', $f);
if((strlen($f) > 13) || (false !== stripos($f, 'return')))
//flag参数满足长度大于13或者flag参数中有return两个条件中的一个则输出
{
die('wowwwwwwwwwwwwwwwwwwwwwwwww');
}
try//这里用到了异常处理,先执行try中的语句,有异常则执行catch中的语句
{
eval("\$spaceone = $f");
}
catch (Exception $e)
{
return false;
}
if ($spaceone === 'flag'){//如果spaceone变量等于字符串flag,则输出helloctf.php文件中的内容
echo file_get_contents("helloctf.php");
}
?>
满足$spaceone === 'flag'。而$spaceone = $f,$f可控,那么我们用post方式提交flag=flag,但是并没有拿到flag。其实这里是触发了异常处理,eval() 函数把字符串按照 PHP 代码来计算。该字符串必须是合法的 PHP 代码,且必须以分号结尾。如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。这里我们在post的时候加个分号拿到flag。

这里还可以使用PHP的另一种字符串构造方法<<<自定义定界符
<<<selfDefineDelimiter
your string
selfDefineDelimiter
因为有换行的存在,我们要把上面所有的字符都进行url编码,然后在burp上构造post参数flag,对照ASCII码表进行手动编码:
<<<a
flag
a;
%3c%3c%3c61%0a
%66%6c%61%67%0a
%61%3b%0a
%3c%3c%3c61%0a%66%6c%61%67%0a%61
请求也需要我们自己构造:注意:Content-Type字段的值
POST /Challenges/flag.php HTTP/1.1
Host:8a855db687b64c05b02efc0fa87b4fa1f11579a7eb864268.game.ichunqiu.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 44
flag=%3c%3c%3c%61%0a%66%6c%61%67%0a%61%3b%0a
“百度杯”CTF比赛 十月场-Getflag(md5碰撞+sql注入+网站绝对路径)的更多相关文章
- i春秋——“百度杯”CTF比赛 十月场——GetFlag(md5碰撞、文件包含、网站绝对路径)
需要提交的captcha满足等式,肯定就是MD5碰撞了 附上脚本 import hashlib def func(md5_val): for x in range(1,100000000): md5_ ...
- [i春秋]“百度杯”CTF比赛 十月场-Hash
前言 涉及知识点:反序列化.代码执行.命令执行 题目来自:i春秋 hash 如果i春秋题目有问题可以登录榆林学院信息安全协会CTF平台使用 或者利用本文章提供的源码自主复现 [i春秋]"百 ...
- "百度杯"CTF比赛 十月场——EXEC
"百度杯"CTF比赛 十月场--EXEC 进入网站页面 查看源码 发现了vim,可能是vim泄露,于是在url地址输入了http://21b854b211034489a4ee1cb ...
- i春秋——“百度杯”CTF比赛 十月场——Vld(Vulcan Logic Dumper 、php opcode、sql 报错注入)
打开题目看到提示 "do you know Vulcan Logic Dumper?" ,再查看源码看到"<!-- index.php.txt ?>" ...
- “百度杯”CTF比赛 十月场_GetFlag(验证码爆破+注入+绝对路径文件下载)
题目在i春秋ctf大本营 页面给出了验证码经过md5加密后前6位的值,依照之前做题的套路,首先肯定是要爆破出验证码,这里直接给我写的爆破代码 #coding:utf-8 import hashlib ...
- “百度杯”CTF比赛 十月场 Hash 复现
进入题后老套路得到两个关键: 1.$hash=md5($sign.$key);the length of $sign is 8 2.key=123&hash=f9109d5f83921a551 ...
- i春秋 “百度杯”CTF比赛 十月场 web题 Backdoor
0x00: 打开题目,题目中告诉我们这题是文件泄露. 0x01: 通过扫描目录,发现可以扫到的有3个文件 index.php flag.php robots.txt 但是浏览flag.php它告诉我们 ...
- “百度杯”CTF比赛 十月场_Login
题目在i春秋ctf大本营 打开页面是两个登录框,首先判断是不是注入 尝试了各种语句后,发现登录界面似乎并不存在注入 查看网页源代码,给出了一个账号 用帐密登陆后,跳转到到member.php网页,网页 ...
- i春秋-“百度杯”CTF比赛 十月场-Login
源码发下提示 尝试登陆 得到个什么鬼, 但是相应包里发现个可疑的东西 // CTF中的0 和1 这些一般都有套路的 然后在请求头里 改为 1 ##代码审计来了.. 分析了半天 后来看了别人的 ...
随机推荐
- CCF CSP认证考试在线评测系统
关于 CCF CSP 认证考试在线评测系统 CCF CSP 认证考试简介 CCF 是中国计算机学会的简称.CCF 计算机软件能力认证(简称 CCF CSP 认证考试)是 CCF 于 2014 年推出, ...
- DWORD
C++中使用DWORD不用声明,但是要加头文件Windows.h. DWORD 就是 Double Word, 每个word为2个字节的长度,DWORD 双字即为4个字节,每个字节是8位,共32位. ...
- 『动善时』JMeter基础 — 53、JMeter集合点功能的使用
目录 1.集合点介绍 2.同步定时器界面介绍 3.集合点的使用 (1)测试计划内包含的元件 (2)线程组元件内容 (3)HTTP请求组件内容 (4)同步定时器内容 (5)运行脚本查看结果 4.集合点设 ...
- 精尽Spring Boot源码分析 - 日志系统
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...
- POJ 2663 Tri Tiling dp 画图找规律
状态:d[i]代表n=i时的方案数. 状态转移方程:d[i]=d[i-2]+2*(d[i-2]+d[i-4]+-+d[0]) i只会为偶数,奇数情况不存在,d[0]=1 找状态转移方程的时候画图更好理 ...
- Mysql Limit 调优
建表与插入数据 SQL对比 基本数据 创建表 CREATE TABLE student ( id int(10) NOT NULL AUTO_INCREMENT, name varchar(25) D ...
- SpringBoot Cache 入门
首先搭载开发环境,不会的可以参考笔者之前的文章SpringBoot入门 添加依赖 <dependency> <groupId>org.springframework.boot& ...
- 23 shell 进程替换
0.shell进程替换的用法 1.使用进程替换的必要性 2.进程替换的本质 进程替换和命令替换非常相似.命令替换是把一个命令的输出结果赋值给另一个变量,例如dir_files=`ls -l`或date ...
- [.NET大牛之路 003] .NET 的发展简史
如果你热爱某产品,你一定想了解它的历史.今天我们简单回顾一下 .NET 平台的发展历史,来看看它在历史上的里程碑,这对我们更好地了解和学习 .NET 有着重要的意义. 微软 .NET 战略初衷 20 ...
- 常见最基础的Dos命令.
打开cmd的方式. 1.+系统+命令提示符 2.Win+R 输入cmd 打开命令台 (推荐使用) 3.在任意的文件夹下按住SHIFT 加鼠标右键 在此处打开命令行窗口 4.资源管理器的地址栏前面加上 ...