icq

include

在这里插入图片描述
直接给出了源码并显示了phpinfo,我们随便输一个flag.php
在这里插入图片描述
可以看到phpinfo不见了,在输入phpinfo.php,又再次显示了,那么说明包含是可以的,但是当前目录或者没有flag.php,好吧我就卡在这了,…/返回上级目录也看不了flag,才想起来php伪协议
先试试能不能读文件吧

php://filter/read=convert.base64-encode/resource=index.php

在这里插入图片描述
成功的读了文件,php伪协议还有一个input:php://input,可以post写入东西
在这里插入图片描述
post一个ls命令,看到了dle345aae.php,cat一下就是flag。不过这里直接在网页上好像没有显示
在这里插入图片描述
————————————————————————————————————————————————

Zone

首先是个登录页面
在这里插入图片描述
不过输入什么登录都会显示网站正在建设中,burp抓包看到有一个login=0,把他改成1
在这里插入图片描述
还是返回网站建设,但是当我们把login.php去掉,就会进入
在这里插入图片描述
乱码没关系,点manage看看,得到了如下url
在这里插入图片描述
看来是把index和php拼接起来了,试着访问flag.php
在这里插入图片描述
构造如下url
在这里插入图片描述
可以看出该题过滤了../,我们可以用..././绕过,访问etc/passwd
在这里插入图片描述
是nginx,看看nginx配置,访问nginx/nginx.conf

在这里插入图片描述
可以看到有个sites-enabled/deafult,看看有啥
在这里插入图片描述
看到有

 location /online-movies {
            alias /movie/;
            autoindex on;
        }

nginx通过alias设置虚拟目录,而若是root设置则必须位真实目录

上面代码的意思是如果访问/online-movies,则会被当成/movie/,这就是alias的虚拟目录

autoindex on 意思是开启循环遍历目录

当我们访问/online-movies,就会循环遍历/movie/,若当我们访问/online-movies../,则会被当成/moive/../,再加上遍历目录就可以看任意文件了
在这里插入图片描述
../应该只在那一个参数中设置了过滤,所以这里仍然可以使用,访问var/www/html/flag.php,自动下载文件
在这里插入图片描述
————————————————————————————————————————————————

onethink

hint:用已知漏洞拿shell,百度一下onethink1.0漏洞,搜到一篇文章
点这里
是文件缓存漏洞,具体的做法是注册一个

%0a$a=$_POST[0];#

在注册一个

%0aecho `$a`;#

之后再访问用户页面,输入系统命令0=ls,即可完成getshell,那就来试试

先注册第一个用户,注意注册的时候要把%0a也就是换行符在burp中urldecode,如下图
在这里插入图片描述
然后再注册第二个用户,同上理,然后登陆随便哪个账户,同理decode,然后访问用户所在的url

/Runtime/Temp/2bb202459c30a1628513f40ab22fa01a.php

这里的目录一开始我以为是要访问用户名的MD5值,后来解密2bb202459c30a1628513f40ab22fa01a,发现是
在这里插入图片描述
应该是这个框架下指定的,访问该页面,post传0=ls
在这里插入图片描述
可以看到getshell了,之后就找flag就好了
在这里插入图片描述
flag在源代码里
在这里插入图片描述
我比较好奇的看了一下2bb202459c30a1628513f40ab22fa01a.php也就是用户组的内容
在这里插入图片描述
果然是所有用户的信息

Do you know upload

一进去就是一个上传页面
在这里插入图片描述
抓包把content-type改成image/jpeg,成功上传一句话,蚁剑连接
在这里插入图片描述
没有flag,看一下config.php
在这里插入图片描述
现在就可以根据上面的信息连接数据库了
在这里插入图片描述
填config中的信息
在这里插入图片描述
在找到flag的命令执行就好了
在这里插入图片描述

sqli

在这里插入图片描述
进去是登录页面,四处翻翻没东西,看来只能在登陆框注入了,当然admin’ or 1=1#注不了,当我随便尝试是不是宽字节注入时,也就是输入admin%df’ or 1=1#,出现了报错

在这里插入图片描述
观察到了sprintf,百度一下sprintf注入,发现在sprintf格式化字符串时如果没做字符类型检测,它就可以吃掉一个\

如果%后面有一个\,就会把\吃掉,就像sprintf("%d",1);一样,sprintf中%后的字符会被当作字符型类型而被吃掉,也就是被当作一个类型进行匹配后面的变量,就像%d匹配一个整数一样

不过这题用%1’ and 1=1#还是会报错,可以用%1$’ and 1=1#,代替,这样就不会报错了
在这里插入图片描述
在这里插入图片描述
这样就找到注入点了,这题需要盲注,直接sqlmap跑一跑试试,burp抓包
在这里插入图片描述

sqlmap -r 1.txt --level3 --dbs

在这里插入图片描述
在慢慢跑出flag
在这里插入图片描述
我爱sqlmap

phone number(二次注入)

一个登录注册页面,先注册一个
在这里插入图片描述

然后登陆
在这里插入图片描述

点击check
在这里插入图片描述

看来check会把phone放到数据库查询,是一道二次注入的题

但是这里的phone只能填数字并且最高位11位,

在这里插入图片描述
在这里插入图片描述
只要f12,改长度绕过长度限制,16进制编码绕过数字限制,注册登陆

在这里插入图片描述

先试试报错注入,但是这里报错了,尝试union注入
在这里插入图片描述
因为phone是数字,所以不需要单引号和#
在这里插入图片描述
返回

在这里插入图片描述
看来只有一个字段,查表名

在这里插入图片描述
在这里插入图片描述
再看列名,不过这里好像有字符限制了,那就直接不选择数据库试试

在这里插入图片描述
在这里插入图片描述

看来这个phone是我们想要的,union select phone from user

在这里插入图片描述

发布了22 篇原创文章 · 获赞 0 · 访问量 870

猜你喜欢

转载自blog.csdn.net/chasingin/article/details/102807884
icq
ico
ice
ICP