BugKuWeb

一、秋名山老司机

打开链接要求两秒之内计算出结果
在这里插入图片描述
明显跑脚本,代码如下:

import requests
import re
url='http://123.206.87.240:8002/qiumingshan/'
r = requests.session()
requestpage = r.get(url)
ans = re.findall('<div>(.*?)=?;</div>', requestpage.text)
ans="".join(ans)
ans=ans[:-2]
post=eval(ans)
data={'value':post}
flag=r.post(url, data=data)
print(flag.text)

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

二、输入密码查看flag

打开链接要求输入5位数字密码
在这里插入图片描述
burp抓包,发送到intruder,payload设置为numbers,From10000to99999,step为1,爆破,获得密码为13579

在这里插入图片描述
拿到flag:flag{bugku-baopo-hah}

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

三、速度要快

打开链接,只有一句话“我觉得你得快点!”,F12打开控制台
在这里插入图片描述

要求Post找到的margin,然后在网络中发现flag的base64编码,解码出现flag
在这里插入图片描述
然后提交发现不正确,然后打开链接又重新尝试了一下,发现flag变了,下面需要跑脚本

import requests
import base64
import sys    

url = 'http://123.206.87.240:8002/web6/'
req = requests.session()
res = req.get(url)

flag = res.headers['flag']
flag = base64.b64decode(flag)

key = flag[flag.find(':')+2:]
key = base64.b64decode(key)
key = {'margin': key}

ans = req.post(url,key)
print ans.content

然后就会出现flag
在这里插入图片描述
拿到flag:KEY{111dd62fcd377076be18a}

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

四、cookies欺骗

打开链接一串字符串,尝试base64解码,失败,然后观察URL
在这里插入图片描述
比较特殊的点就是index.php,line和filename。
首先将filename后的字符串a2V5cy50eHQ=解密得到keys.txt,尝试访问keys.txt回显出同样的字符串,说明URL是用base64加密方式构造的,所以首先将index.php进行base64编码得到aW5kZXgucGhw,filename修改成index.php的base64编码访问没有出现结果。这是由于line的限制,调整line,可以看到代码
在这里插入图片描述
一共有18行,完整代码如下:

<?php

error_reporting(0);
$file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");
$line=isset($_GET['line'])?intval($_GET['line']):0;
if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");
$file_list = array(
'0' =>'keys.txt',
'1' =>'index.php',
);

if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){
$file_list[2]='keys.php';
}

if(in_array($file, $file_list)){
$fa = file($file);
echo $fa[$line];
}

?>

也可以使用脚本直接爆破整个代码

import requests
a=30
for i in range(a):
    url="http://123.206.87.240:8002/web11/index.php?line="+str(i)+"&filename=aW5kZXgucGhw" 
    s=requests.get(url)
    print s.text

然后代码审计发现有一个keys.php文件,只要cookie传参margin=margin就能访问keys.php,值得注意的一点是,URL使用base64编码,所以我们访问的是keys.php的base64编码,即构造URL:http://123.206.87.240:8002/web11/index.php?line=&filename=a2V5cy5waHA=,然后编辑和重发消息头修改cookie为margin=margin就可以在响应里看到key
在这里插入图片描述

拿到flag:KEY{key_keys}

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

五、never give up

打开链接只有一句“never never give up”,然后F12查看到有一个1p.html的提示,访问http://123.206.87.240:8006/test/1p.html就会跳转到一个CTF论坛界面
在这里插入图片描述
很多选项,直接用view-source来查看源码
在这里插入图片描述
观察Words的特点,发现是url编码,解码会得到含有base64编码的代码

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

然后对这一部分进行base64解码,然后发现还有一层URL编码,但是发现了关键字f4l2a3g.txt
在这里插入图片描述
然后直接访问f4l2a3g.txt,就可以出现flag

在这里插入图片描述
拿到flag:flag{tHis_iS_THe_fLaG}

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

六、md5 collision(NUPT_CTF)

打开链接只有一句Please input a,题目是md5 collision,md5碰撞,访问的地址是md5.php。这里考察的一个小技巧就是==的用法,0==以0e开头的哈希值成立。
PHP在处理哈希字符串时,会利用!===来对哈希值进行比较,它把每一个以”0e”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0e”开头的,那么PHP将会认为他们相同,都是0。所以传入一个0e开头的哈希值所对应的字符串,构造?a=s878926199a
在这里插入图片描述
拿到flag:flag{md5_collision_is_easy}

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

七、PHP_encrypt_1(ISCCCTF)

题目描述是一串base64编码:fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=,解码后的字符串是}l.&W'EG*B(W[(+G'U-0,然后下载一个名为PHP_encrypt_1的压缩包,解压后是index.php文件

<?php
function encrypt($data,$key)
{
    $key = md5('ISCC');
    $x = 0;
    $len = strlen($data);
    $klen = strlen($key);
    for ($i=0; $i < $len; $i++) { 
        if ($x == $klen)
        {
            $x = 0;
        }
        $char .= $key[$x];
        $x+=1;
    }
    for ($i=0; $i < $len; $i++) {
        $str .= chr((ord($data[$i]) + ord($char[$i])) % 128);
    }
    return base64_encode($str);
}
?>

执行附件中的代码就会出出现题目描述中的base64字符串,接下来就是md5解密
参考大佬的wp写出php代码:

<?php
function decrypt($str) {
    $mkey = "729623334f0aa2784a1599fd374c120d";
    $klen = strlen($mkey);
    $tmp = $str;
    $tmp = base64_decode($tmp);  // 对 base64 后的字符串 decode
    $md_len = strlen($tmp); //获取字符串长度
    $x = 0;
    $char = "";
    for($i=0;$i < $md_len;$i++) {  //  取二次加密用 key;
        if ($x == $klen)  // 数据长度是否超过 key 长度检测
            $x = 0;
        $char .= $mkey[$x];  // 从 key 中取二次加密用 key
        $x+=1;
    }
    $md_data = array();
    for($i=0;$i<$md_len;$i++) { // 取偏移后密文数据
        array_push($md_data, ord($tmp[$i]));
    }
    $md_data_source = array();
    $data1 = "";
    $data2 = "";
    foreach ($md_data as $key => $value) { // 对偏移后的密文数据进行还原
        $i = $key;
        if($i >= strlen($mkey)) {$i = $i - strlen($mkey);}
        $dd = $value;
        $od = ord($mkey[$i]);
        array_push($md_data_source,$dd);
        $data1 .= chr(($dd+128)-$od);  // 第一种可能, 余数+128-key 为回归数
        $data2 .= chr($dd-$od);  // 第二种可能, 余数直接-key 为回归数
    }
    print "data1 => ".$data1."<br>\n";
    print "data2 => ".$data2."<br>\n";
}
$str = "fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=";
decrypt($str);
?>

在这里插入图片描述
data1和data2拼接起来拿到flag:Flag:{asdqwdfasfdawfefqwdqwdadwqadawd}

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

八、字符?正则?

在这里插入图片描述
首先点开链接进行代码审计,发现考察点是正则表达式。需要我们传入一个id,id的值需要与/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i匹配起来。
具体解析:

  1. /两头的斜杠内容代表要匹配的内容/
  2. .代表匹配任意数字
  3. *代表匹配任意数字任意次
  4. {4,7}代表匹配前一个字符4~7次
  5. \表示要找后面的内容\,\/.\/就是找/数字/
  6. [a-z]代表a-z之间的任意字符
  7. [[:punct:]]代表匹配任意标点符号
  8. i代表字体的大小

根据上述规则可构造:?id=key1key1111key:/2/22keya.

在这里插入图片描述
拿到flag:KEY{0x0SIOPh550afc}

参考文章

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

Simple_SSTI_1

题目点击进去发现两个提示,一个是需要一个名为flag的参数,另一个提示flag在secret_key下。
在这里插入图片描述在这里插入图片描述是一个注入题,直接在URL构造返回即可。
在这里插入图片描述知识点:SSTI:服务器模板注入
语法

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

Simple_SSTI_2

点击进去只有一句关于flag是参数的提示
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值