注入—全方位利用 之 SQL注入的原理分析

humbie   ·   发表于 2022-09-12 14:11:50   ·   学习杂记

SQL注入的本质:用户输入的数据被当做SQL代码执行
检测方法:
闭合(传入引号,让其余原引号配对,注释掉后面的引号。)
and 1=1 正确
and 1=2 错误
则可能存在注入。(此方法不推荐)
数字运算符法:-1
id=1 => id=2-1 结果相同,则存在注入。
GET会把+理解成空格,所以最好不用+,用的话URL编码改为%2b。
对于是否有引号以及什么引号,需要测试。=>’ “ ‘) “),一般是这四种。
核心:如何通过SQL注入获取数据库信息(联合查询法)。A语句 union B语句(字段相同)
select database() 查询库名
字段相同可以有B语句(我们写的)控制,这时需要知道A语句的字段数。
order by n,当n出现错误,n-1正常,说明一共n-1个字段。
这样就可以利用order by n逐步测试他有几个字段。
比如有三个字段,则利用union select 1,2,3 可以证实字段数,并找到显示位以及排序。
排序:一般开发只显示字段1,这样调整子查询即可让其正确显示。(这时要让原查询消失,比如id=1.1 或id=1 and 1=2)
显示位:显示查询数据的地方。
库名:database()把它放进1,2,3之中显示位的地方可以显示库名。
表明:猜(不推荐)或者用系统自带库。
系统自带库:information_schema(MySQL系统自带),其中两个表tables、columns
select table_name from information_schema.tables where table_schema=database();
查询本库里的所有表名。(别忘了使用limit 0,1排序,显示位)
select column_name from information_schema.columns where table_schema=database() and table_name=’xxx’。
流程:猜字段 -> 输出点 -> 出库名 -> 出表名 -> 出字段名 -> 出数据

打赏我,让我更有动力~

0 条回复   |  直到 2022-9-12 | 458 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.