网鼎杯-2018-unfinish
网鼎杯-2018-unfinish
1.题目:
2.过程:
进入题目,是一个/login.php,放到御剑扫:
有注册界面,随便注册一个看看:
什么都没有……左边有一个侧边栏可以看到注册的用户名
各种方法都试了一下,都没有成功……在注册时发现用户名(username)加单引号时,界面回显不同,应该是插入数据库时’导致语句的格式错误……(应该先搞懂sql插入语句的……)
SQL INSERT INTO 语句:
INSERT INTO 表名称 VALUES (值1, 值2,….)
题目中的sql插入语句就有可能是:
1 | insert into table value('$email','$username','$password') |
题目中,email和password好像都很难注入……测试时也只有改动username时回显不同
闭合引号’)#似乎不行,语句可能是:
1 | insert into tablename (email,username,password) values ('$email','$username','$password') |
dalao操作似乎是利用mysql中的”加法“结合hex加密:
**mysql中加号(+)**:
①如果双方都为数值型数据则结果为数值相加结果;
②如果有一方为字符型,则试图将字符型数值转换成数值型,如果转换成功,则继续做数值加法运算;
③如果有一方为null,则结果肯定为null。
也就是说,直接0’ + database() +’0,实际上是0+0+int(database()),而结果开头为字母,即结果为0
如果是version():
version()的显示只剩下了5.5,后面的数据都么有了
可以利用双重hex加密或ord与ascii使返回结果为数字;另,若返回数字超过十位,会以科学计数法返回,造成数据损失……(还有,表名flag竟然是猜的,把information_schema禁了……
写脚本批量注册与登录,获取username数据:
1 | import requests |
没写停止,一下全输出了……
hex解密:
这好像叫做二次注入……和我理解的好像不一样,那上次用cookie回显是不是也算二次注入……
网鼎杯-2018-unfinish