CTF--web BugKu-ctf-web(1-10)

 1.web2

题目地址:http://123.206.87.240:8002/web2/

查看网页源代码得到flag KEY{Web-2-bugKssNNikls9100}

2.计算器

题目地址:http://123.206.87.240:8002/yanzhengma/

打开题目链接发现是简单的数学计算,但是只能输入一位数字

查看网页源码发现输入的maxlength=1

火狐浏览器f12,查看器,修改maxlength=5

重新输入计算结果,验证,得到flag

3.web基础$_GET

题目地址:http://123.206.87.240:8002/get/

在url后加上index.php?what=flag或?what=flag

得到flag{bugku_get_su8kej2en}

 4.web基础$_POST

post传参

点击run

得到flag{bugku_get_ssseint67se}

5.矛盾

http://123.206.87.240:8002/get/index1.php

需要构造$num,使得$num不是数字或数字字符串,且($num==1)为true

php是一种弱类型语言

https://www.cnblogs.com/qing123tian/p/10778615.html

构造$num=1+字母,如num=1x

得到flag{bugku-789-ps-ssdf}

6.web3

题目地址:http://123.206.87.240:8002/web3/

题解:https://www.cnblogs.com/0yst3r-2046/p/10738710.html (引用https://www.cnblogs.com/0yst3r-2046/)

右键查看网页源码

HTML解码

得到<!--KEY{J2sa42ahJK-HS11III}-->

7.域名解析

域名解析

50

 

听说把 flag.baidu.com 解析到123.206.87.240 就能拿到flag

修改本机hosts文件

hosts文件地址C:\Windows\System32\drivers\etc\hosts

在末尾加上123.206.87.240 flag.baidu.com

浏览器打开flag.baidu.com得到flag

KEY{DSAHDSJ82HDS2211}

8.

你必须让他停下

60

 

地址:http://123.206.87.240:8002/web12/

作者:@berTrAM

 右键检查,仔细观察,闪动过程中会出现flag,眼疾手快把它复制下来(这不是正确解法,正确解法引用(https://www.cnblogs.com/Gzu_zb/p/10035968.html))

(正确解法我没搞出来~~~~~)hhhhh

复制得到flag    <a style="display:none">flag{dummy_game_1s_s0_popular}</a>

9.

本地包含

60

 

地址:http://123.206.87.240:8003/

参考:https://segmentfault.com/a/1190000016750234?utm_source=tag-newest

<?php
include "flag.php";
$a = @$_REQUEST['hello'];
eval( "var_dump($a);");
show_source(__FILE__);
?>

$_REQUEST:默认情况下包含了 $_GET$_POST 和 $_COOKIE 的数组。(https://www.php.net/manual/zh/reserved.variables.request.php)

eval:eval — 把字符串作为PHP代码执行(https://www.php.net/manual/zh/function.eval.php)

var_dump — 打印变量的相关信息(https://www.php.net/manual/zh/function.var-dump.php)

此函数是该函数的别名: highlight_file().

highlight_file — 语法高亮一个文件(https://www.php.net/manual/zh/function.highlight-file.php)

PHP魔术常量__FILE__:文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

几个 PHP 的“魔术常量”(https://www.php.net/manual/zh/language.constants.predefined.php)

成功输出 flag.php 文件内容  flag{bug-ctf-gg-99}

 10.

变量1

60

 

http://123.206.87.240:8004/index1.php

参考:https://blog.csdn.net/Auuuuuuuu/article/details/79616285(这个write up 写的很详细,受益匪浅)

error_reporting — 设置应该报告何种 PHP 错误

isset — 检测变量是否已设置并且非 NULL

$_GET---get方式传参

preg_match — 执行匹配正则表达式

die — 等同于 exit()

解题思路:eval()函数存在命令执行漏洞  我们的目标是查看flag1.php中的flag 首先想到的是本地包含漏洞查看源码  或者上传一句话木马等思路 

而本题条件判断加了正则表达式判断,过滤了括号和引号等字符。无法构造!  但输出时是   $$args

我们想到构造 php中超全局变量 $GLOBALS  

PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。

构造url:http://123.206.87.240:8004/index1.php?args=GLOBALS

flag{92853051ab894a64f7865cf3c2128b34}

php官方文档(https://www.php.net/manual/)

新手入门,参考了很多博客,谢谢。

猜你喜欢

转载自www.cnblogs.com/qing123tian/p/10921490.html