目录
可能使用的sql函数
入侵网站方式
1、文件上传漏洞
2、rce
3、sql注入
SQL注入
什么是sql注入
进行SQL注入
实验环境
开始实验(使用information_shema数据库)
1、进入靶场
2、报列数
下面来解释一下为什么要照上面SQL语句写
url编码
单引号逃逸
注释sql语句
3、联表查询
联表查询结果显示
4、查表名
查表名
多个表名一起显示
5、查列名
6、爆数据
可能使用的sql函数
database()数据库名
user()使用者
version()版本信息
length(database()) //获取数据库长度
substr(database(),2,1)//从数据库第二个位置往后获取一个字符
入侵网站方式
1、文件上传漏洞
前提,没有waf没有拦截,但是现在这个东西想成功概率比较低,因为一般都是白名单的方式
2、rce
rce直接执行命令,创建一个文件把你的木马写进去。但是rce漏洞不是很容易
3、sql注入
尝试拿到管理员密码,登陆网站后台,尝试获取取webshell
SQL注入
什么是sql注入
SQL注入攻击是一种常见的网络安全威胁,主要针对使用结构化查询语言(SQL)进行数据库操作的应用程序。通过利用应用程序对用户输入数据的不正确处理,攻击者可以在SQL查询中注入恶意代码,从而达到恶意目的。
进行SQL注入
下面以实验来进行不同sql注入
实验环境
sqli-LABS靶场第一关
开始实验(使用information_shema数据库)
1、进入靶场
2、报列数
按照提示输入一个id之后的步骤就是将这个id插入到sql语句中然后在数据库进行查询
(如下图时sqli-LABS靶场的第一关代码,这个代码就是将你输入的id插入sql语句使用select进行查询)
根据这点我们来进行注入首先进行报列数,报列名的原因是在后续进行联表查询时需要知道有几列
报列数使用order by来进行测试按照第1、2、3进行排序依次尝试
按照第4列进行排序报错,说明现在只有3列
下面来解释一下为什么要照上面SQL语句写
url编码
首先url是有编码规范的所以在后面是%23,url的编码规范就是将符号变成ascii编码然后再转成16进制然后在添加%,%23就是#的意思
单引号逃逸
然后看上面的语句id的内容是被一个单引号括起来的,你输入进去的SQL语句是会被当成字符串的,所以我们就要想办法让输入的内容逃逸出来
逃逸的方法我们可以在后面再加一个单引号
在代码中如下显示,这样前面的单引号就被闭合了
注释sql语句
那么后面的单引号又落单了,我们可以将后面代码注释掉
3、联表查询
联表查询使用union
在进行联表查询的时候,你发现你想爆出来的数据库名没有爆出来,原因是id=1,那查询出来的结果自然就是id=1的那一行
联表查询结果显示
想要查询出你想要的东西,那就让数据库查在查id的时候查不出来。要么id特别大,数据库中没有,要么id等于-1
当id=-1时
4、查表名
在官方的information_schema.tables 中有表名,依靠下一句语句可以查询到表名
下面的意思就是在information_schema数据库中查询表table中字段table_schema等于你查到的数据名的table_name的名称
select 1,table_name from information_schema.tables where table_schema ='数据库名'
查表名
下图是查询例子,但是只爆出了一个表名(只显示出了你查询的数组的第一个)
多个表名一起显示
group_concat(),将你查询到的结果一整列全部爆出来,查看其中表名users很像用户表名,继续查
5、查列名
6、爆数据
如下图,已经获取了用户账户密码,这样就可以进行下一步渗透了
不嫌弃的点点关注,点点赞 ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚