西安工业线下赛server1 注入
</p>server1目录两个文件web2和sql。web2的这个目录里有题目自带的shell 应该超过半数的队伍都找到了最后也都删干净了。之后爬了半天也没什么结果。
之后学弟看了一下sql文件夹,sql是映射在8080端口的。刚开始用sqlmap跑了一下。(师父们忽略,有代码,还用黑盒,真是菜啊!) 出了error注入 但是跑不出数据就暂时搁置了。问题出在insert.php这个文件里。
insert.php下午又翻出来看了一下。参考这篇文章第二个姿势吧。mysql报错注入整理到这一步的时候还有差不多两个小时,我已经不想打了,学弟还在尝试。(我菜还是有原因的。)extractvalue的参数其实是可以直接带外部文件的,不过一般渗透时要知道绝对路径。(这里可以忽视,每个队伍flag的绝对路径一样。)最后构造出exp
curl http://10.2.0.82:8080/insert.php -d "id=1&mail=1@1.1&username=1&workname=' OR EXTRACTVALUE(8267,CONCAT(0x5c,right(load_file('/home/flag'), 84))) OR 'iGMl'='iGMl&phone=18888888888&submit="
因为extractvalue每次最多回显32位,分三次注出flag。到这时已经只剩一个小时了,就只打了第一名和第二名皮了一会 哈哈。不过比赛领结束前看到老锥师父他们的k4long应该是把这个洞修了。
比赛结束之后又白盒看了一下,请教了一下满神(博客:wonderkun.cc),被满神鄙视了。workname没有任何过滤。(当时咋没看出来。)inser的value中虽然不能select 但是可以执行函数,所以传入的extractvalue() 被执行造成了报错注入。
insert.php感觉这个漏洞还是挺简单的,希望师父们批评指正。总体来说,早上被大佬们拿了一波分有点懵逼了。而且我们很早改了几个目录的写权限导致没有拿到大佬们的shell样本,失去了一波抄作业的机会,有点失误。