发帖
 找回密码
 立即注册
搜索
0 0

分享 20250303 Web渗透系统班 第十五课

技术分享 1074 0 2025-4-9 16:54:18
SQL 注入漏洞(三)

模糊查询


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);
将模糊查询条件闭合,模糊查询条件为空且为永真条件时,看是否会返回全部数据,判断是否有模糊查询漏洞
当存在其他函数编码时,可以测试是否存在编码读取不了的漏洞,;例如直接查询=a时是否会反馈查询结果

select * from vulin_users where (username LIKE '%a%') AND (age > 20);
{"nameb64j":"a"}
{"nameb64j":"') or 1=1 --"}



堆叠注入



遇到注⼊点在结尾的,那么可以进⾏堆叠注⼊测试


在SQL中,分号(;)是⽤来表示⼀条sql语句的结束。试想⼀下我们在 ; 结束⼀个sql语句后继续构造下⼀条语句,
会不会⼀起执⾏?因此这个想法也就造就了堆叠注⼊。⽽union injection(联合注⼊)也是将两条语句合并在⼀
起,两者之间有什么区别么?区别就在于union 或者union all执⾏的语句类型是有限的,可以⽤来执⾏查询语句,
⽽堆叠注⼊可以执⾏的是任意的语句。例如以下这个例⼦。⽤户输⼊:1; DELETE FROM products服务器端⽣成的
sql语句为: Select * from products where productid=1;DELETE FROM products当执⾏查询后,第⼀条显示查
询信息,第⼆条则将整个表进⾏删除。


mysqli_query()只能执⾏⼀条SQL语句,如果这需要执⾏多条SQL语句,就需要使⽤mysqli_multi_query()⽅法,
mysqli_multi_query()可以执⾏多条SQL语句,如果后端代码使⽤这个⽅法去执⾏SQL语句,我们就可以利⽤堆叠
注⼊获取后台数据库的信息。




换⾏符:\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;




宽字节注⼊


使用宽字节注入的前提是:数据库编码得是 gbk 编码


当某字符的⼤⼩为⼀个字节时,称其字符为窄字节当某字符的⼤⼩为两个字节时,称其字符为宽字节。所有英⽂默认占⼀个字节,汉字占两个字节。


原理
当传递⼀个参数id=1‘得时候,当我们输⼊这个单引号,会被认为是⾮法字符,会被过滤函数添加“\”给过滤掉,所以
我们想要程序接受我们传递得参数中包含单引号,那么就需要把这个转义字符“\”⼲掉
\ 斜杆的编码为 %5c
乗:%81%5c




'
\' ===> %81%5c%21








传参⼀个字符想办法凑成⼀个gbk字符,例如:‘運’字是%df%5c
所以添加%df后就变成了 運' 单引号就能正常使⽤了
GBK编码表:https://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.php











第15节课作业
1. 实际操作课堂讲解的yakit sql注入靶场,截图

2. 堆叠注入的原理是什么

mysqli_query()只能执⾏⼀条SQL语句,如果这需要执⾏多条SQL语句,就需要使⽤mysqli_multi_query()⽅法,
mysqli_multi_query()可以执⾏多条SQL语句,如果后端代码使⽤这个⽅法去执⾏SQL语句,我们就可以利⽤堆叠
注⼊获取后台数据库的信息。
3. 堆叠注入的利用场景是什么
遇到注⼊点在结尾的,那么可以进⾏堆叠注⼊测试
4. 宽字节注入的原理是什么

当传递⼀个参数id=1‘得时候,当我们输⼊这个单引号,会被认为是⾮法字符,会被过滤函数添加“\”给过滤掉,所以我们想要程序接受我们传递得参数中包含单引号,那么就需要把这个转义字符“\”⼲掉,\ 斜杆的编码为 %5c,传参⼀个字符想办法凑成⼀个gbk字符,例如:字是%df%5c所以添加%df后就变成了 ' 单引号就能正常使⽤了
5. 实操sqli靶场36宽字节注入



──── 0人觉得很赞 ────

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
免责声明:
1、本论坛中所有用户发布的内容仅代表作者个人观点,与本网站立场无关,本站不对其真实性、完整性或观点承担任何责任。
2、本论坛所提供的全部信息与内容,不保证其准确性、完整性或时效性。因阅读或使用本站内容而产生的任何误导、损失或风险,本站概不承担任何连带或法律责任。
3、当国家司法、行政机关依照法定程序要求本论坛披露用户信息时,本站予以配合并因此免责。
4、因网络线路故障、技术问题、不可抗力或本站无法控制的其他原因导致的服务中断或暂停,本站不承担由此造成的任何直接或间接损失。
5、对于任何通过技术手段破坏、攻击本论坛系统或扰乱正常秩序的行为,本站有权采取包括但不限于限制账号、封禁账号、追究法律责任等措施。
您需要登录后才可以回帖 立即登录
高级模式
返回