我有一个问题,我希望有人可以帮助以UNION SELECT
脚本/自动方式查找可利用的列(已经找到使用的列数ORDER BY
)
手动执行此操作
使用http://www.site.com/index.php?id=-2 UNION SELECT 1,2,3,4,5,6,7,8--
我知道我可以手动查看页面上显示的列号以查找可利用的列,但是尝试使用脚本以自动方式将这些从响应内容或页面源中解析出来是非常困难的找到显示的可利用列(除非有人知道可以做到这一点的可靠方法?)。
使用扫描仪/模糊器自动执行此操作
在一些扫描仪/模糊器和 sql 注入工具中,我发现了一些关于在页面上UNION SELECT
返回特定“关键字”的参考,这将表明如果在响应内容中找到该“关键字”,则该特定列是可利用的……
例如:
http://www.site.com/index.php?id=-2 UNION SELECT "EXPLOITABLE",2,3,4,5,6,7,8-- <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,"EXPLOITABLE",3,4,5,6,7,8-- <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,2,"EXPLOITABLE",4,5,6,7,8-- <-- The word EXPLOITABLE **DID** appear on the page content so this column **IS** exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,2,3,"EXPLOITABLE",5,6,7,8-- <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,2,3,4,"EXPLOITABLE",6,7,8-- <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable
依此类推,直到它到达最后一列编号 8.......
“关键字”是通常不会在网页上找到的单词,因此可以防止错误的肯定,例如 EXPLOITABLE、InJeCtAbLE、AASSDDFFGG(或您想要的任何变量)。
我遇到的问题:
当我正在编写一个 sql 注入工具/模糊器时,我正在寻找以自动化/可编写脚本的方式找到这些可利用列的最佳方法,最合乎逻辑的方法似乎是上面描述的使用“关键字”的方法(除非任何人都可以建议更好的方法)
这是因为我可以只GET
使用带有和“关键字”的每个 url UNION SELECT
,存储响应内容,然后查看我使用的变量“关键字”是否出现在响应内容中。如果是,那么我将知道它是可利用的,如果不是,我将转到下一个 url,依此类推,直到脚本在所有列号上都尝试过。
这是否是使用 UNION SELECT 确定可利用列的最佳/最可靠的方法,或者您能建议使用更好的方法吗?