0x00 知识点
- 联合注入
- base32+base64
- 通过联合注入向数据库中写数据
0x01 知识点详解
1. 利用联合注入向数据库里写东西的原因?
答:在使用联合注入时,如果你查询的数据不存在,那么就会生成一个内容为null的虚拟数据,所以这是我们就可以在注入时添加我们需要的信息来完成我们的目的。
2. base32和base64的区别?
答:base32是全部由大写字母和数字构成,或者其结尾有三个等号
base64则是由大小写字母和数字一起构成。
0x02 解题思路
- 打开网站看到一个登录页面尝试利用万能密码解题,发现不行,猜测用户名为admin,这时会给我们回显wrong pass;如果是其他的用户名发现回显是wrong user;可以推辞出应该是存在admin这个用户的,尝试在用户名处添加一个(’)通过其回显
得出用户名哪里存在注入点。
- 查看源码发现search.php,点开看看发现一串base32加密
MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5
解密出一串base64
c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==
继续解密,得到其查询规则
select * from user where username = '$name'
- 接下来就很简单了,在用户名处,通过联合注入,写入我们想要的信息,以达到登录成功。
随便输入一个信息,用burp抓一下包
接下来,构造payload
name=1' union select 0,'admin','81dc9bdb52d04dc20036dbd8313ed055'%23&pw=1234
其中81dc9bdb52d04dc20036dbd8313ed055
是1234
对应的MD5加密的值