小迪安全16 web漏洞,SQL注入之查询方式及报错盲注

16 web漏洞,SQL注入之查询方式及报错盲注

​ 当进行 SQL 注入时,有很多注入会出现无回显的情况,其中不回显 的原因可能是 SQL 语句查询方式的问题导致,这个时候我们需要用到相 关的报错或盲注进行后续操作,同时作为手工注入时,提前了解或预知其 SQL 语句大概写法也能更好的选择对应的注入语句

img

常用sql语句

select 查询数据

在网站应用中进行数据显示查询效果

例: select * from news wher id=$id

insert 插入数据

在网站应用中进行用户注册添加等操作

例:insert into news(id,url,text) values(2,‘x’,’$t’)

delete 删除数据

后台管理里面删除文章删除用户等操作

例:delete from news where id=$id

update 更新数据

会员或后台中心数据同步或缓存等操作

例:update user set pwd=’$p’ where id=2 and username=‘admin’

order by 排列数据

一般结合表名或列名进行数据排序操作

例:select * from news order by $id

例:select id,name,price from news order by $order

重点理解:

我们可以通过以上查询方式与网站应用的关系

注入点产生地方或应用猜测到对方的SQL查询方式

例如:

请添加图片描述

注册页面,则为插入数据库的操作

请添加图片描述

select查询方式的注入

需要闭合单引号

请添加图片描述

insert注入

语句不同,注入的写法不同

SQL注入—盲注

盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行半段或者尝试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL注入是一种常见的网络攻击方式,通过在输入框中注入SQL语句,攻击者可以获取数据库中的敏感信息,包括用户名、密码等。注入是一种SQL注入方式,它利用了数据库返回误信息的特性,通过构造特定的SQL语句来达到获取信息的目的。 以下是一个简单的注入示例: 假设有一个登录页面,用户需要输入用户名和密码才能登录。页面的代码如下: ``` <?php $conn = mysqli_connect("localhost", "root", "", "mydb"); if (isset($_POST['submit'])) { $username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { echo "登录成功"; } else { echo "用户名或密码误"; } } ?> <form method="POST"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" name="submit" value="登录"> </form> ``` 攻击者可以通过在输入框中注入SQL语句来获取数据库中的信息。例如,输入`' OR 1=1--`作为用户名,`' OR 1=1--`作为密码,即可绕过登录验证,因为`OR 1=1`会使整个SQL语句始终成立,从而返回所有用户的信息。 如果服务器没有开启信息,攻击者还可以通过构造特定的SQL语句,使服务器返回误信息,从而获取数据库中的信息。例如,输入`' UNION SELECT 1,2,3--`作为用户名,任意密码,即可触发误信息,因为`UNION SELECT`语句要求两个SELECT语句的列数必须相同,而这里只有一个SELECT语句,因此会导致误。 以下是一个自动化脚本示例,用于检测一个网站是否存在注入漏洞: ``` import requests # 构造SQL语句,检测是否存在注入漏洞 def test_sqli(url, payload): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3", "Cookie": "PHPSESSID=1234567890" } data = { "username": payload, "password": "123456" } try: r = requests.post(url, headers=headers, data=data, timeout=5) if "Warning" in r.text: print("[+] 存在注入漏洞:" + payload) except: pass # 读取字典文件,逐个测试 def main(): url = "http://example.com/index.php" with open("dict.txt", "r") as f: for line in f: payload = line.strip() test_sqli(url, payload) if __name__ == '__main__': main() ``` 该脚本会读取一个字典文件,逐个测试其中的payload,如果存在注入漏洞,则会输出相应的payload。需要意的是,该脚本只能检测是否存在注入漏洞,不能获取具体的数据库信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值